Dominando Mobile DevOps: Aprovechando React Native para un alto rendimiento

Rate this content
Bookmark
Slides

En el dinámico mundo del desarrollo de software, los líderes exitosos de la industria comparten una competencia común en cuatro métricas cruciales: Frecuencia de Despliegue, Tiempo de Espera para Cambios, Tiempo para Restaurar el Servicio y Tasa de Fallos de Cambio. Sin embargo, lograr un alto rendimiento en estas áreas dentro del mundo móvil presenta desafíos únicos. Esta charla se adentra en la profundidad de las mejores prácticas y tecnologías innovadoras dentro de los ecosistemas de React Native y mobile DevOps, todo dirigido a nuestro objetivo final: la entrega continua de valor a nuestros usuarios.

 Cyril Bonaccini
Cyril Bonaccini
8 min
12 Dec, 2023

Video Summary and Transcription

La charla de hoy explora mobile DevOps y cómo React Native simplifica las liberaciones móviles. Las métricas clave para el rendimiento de DevOps incluyen la frecuencia de despliegue, el tiempo de espera para cambios, el tiempo para restaurar el servicio y la tasa de fallos de cambio. React Native permite actualizaciones por aire, eliminando la necesidad de reenvío. Las actualizaciones atrasadas ofrecen ventajas como eludir las validaciones de la tienda de aplicaciones y actualizaciones rápidas, pero tienen limitaciones. Otras opciones a considerar son los modelos en la aplicación para actualizaciones forzadas, EAS Build and Submit, Repack para micro-frontends y los próximos componentes de servidor en React Native.

Available in English

1. Introducción a Mobile DevOps

Short description:

Hoy, nos sumergiremos en mobile DevOps y veremos cómo React Native puede simplificar las publicaciones móviles. Aclaremos qué significa DevOps. Es el arte de producir software de primera categoría de manera fluida y efectiva. Nos centraremos en la entrega continua y sus aspectos únicos en el desarrollo móvil. Profundicemos en cuatro métricas clave: frecuencia de despliegue, tiempo de espera para cambios, tiempo para restaurar el servicio y tasa de fallos de cambio. Estas métricas destacan nuestro rendimiento en DevOps. Los mejores intérpretes pueden hacer despliegues a demanda y cambios en producción en menos de un día. Ahora, exploremos el único reino de los desafíos móviles, comenzando con la fragmentación del dispositivo.

Hola, soy Cyril, ingeniero jefe en BAM. Hoy, nos sumergiremos en mobile DevOps y veremos cómo React Native puede simplificar las publicaciones móviles. Empecemos.

Primero, aclaremos qué significa realmente DevOps. Su definición se mantiene constante, ya sea para móviles u otras plataformas. Defino DevOps en torno a cuatro pilares clave, integración continua, entrega continua, retroalimentación continua y, por último, colaboración. En cualquier viaje de DevOps, la unidad es clave. Es el arte de producir software de primera categoría de manera fluida y efectiva. Hoy, nos centraremos en la entrega continua y sus aspectos únicos en el contexto del desarrollo móvil, ya que es aquí donde diverge significativamente del desarrollo web. Pero primero, recuerda que solo podemos mejorar lo que podemos medir. En DevOps, esta es la piedra angular para tomar las decisiones correctas. Profundicemos en cuatro métricas clave que pueden ayudarnos a identificar procesos de lanzamiento, tendencias y áreas de crecimiento. La primera es la frecuencia de despliegue. Es una medida de la agilidad de tu equipo y su capacidad para entregar nuevas funciones, actualizaciones o correcciones. A continuación, tenemos el tiempo de espera para cambios. Mide la velocidad desde el compromiso del código hasta el despliegue del código. La tercera es el tiempo para restaurar el servicio. Esta métrica es crucial para evaluar la capacidad de respuesta de tu equipo y su capacidad para manejar incidentes. Un menor tiempo para restaurar el servicio indica una robusta gestión de incidentes y habilidades rápidas para resolver problemas. Por último, tenemos la tasa de fallos de cambio. Una tasa más baja indica robustas pruebas y controles de calidad. Juntas, estas cuatro métricas clave pintan un cuadro claro de nuestro rendimiento en DevOps, destacando tanto nuestras fortalezas como las áreas a mejorar.

El informe del estado de DevOps de 2023 compara miles de empresas en estas cuatro métricas clave. Los mejores intérpretes pueden hacer despliegues a demanda y cambios en producción en menos de un día. Tienen solo un 5% de tasa de fallos y pueden recuperarse en una hora. Y el 18% de los participantes logró esto. Aunque estas estadísticas son llamativas, el verdadero valor está en el viaje, los aprendizajes y la constante refinación de tus prácticas de DevOps.

Ahora que hemos establecido nuestro objetivo, profundicemos en el único reino de los desafíos móviles.

2. React Native y las actualizaciones Over-the-Air

Short description:

Piensa en los desafíos del desarrollo móvil, desde la compatibilidad de dispositivos hasta las actualizaciones de aplicaciones y las revisiones de la tienda. React Native ofrece una solución al permitir actualizaciones over-the-air, eliminando la necesidad de volver a enviar. Con Expo Updates, los desarrolladores pueden modificar el paquete de JavaScript y enviarlo a la nube, entregando sin problemas la última versión de la aplicación a los usuarios.

El primero es la fragmentación del dispositivo. Piénsalo, tenemos tantos modelos de dispositivos y asegurarnos de que nuestras aplicaciones funcionen bien en todos ellos es difícil. El segundo es las actualizaciones de aplicaciones. Piensa en lanzar una versión de una aplicación y descubrir fallos para todos tus usuarios y, como en los sitios web, no puedes retroceder fácilmente y no puedes obligar a los usuarios a actualizar sus aplicaciones. Tu único camino es solucionar el problema, avanzar y esperar que tus usuarios actualicen. Finalmente, las revisiones de la tienda son otro aspecto crucial del desarrollo móvil. La mayoría de las veces, tardan entre 24 y 48 horas, pero pueden durar hasta una semana. Una vez que enviamos, estamos en el reloj de la tienda. Y recuerda, dado los estándares de élite, el desarrollo móvil es desafiante. Alcanzar estos estándares parece imposible. Pero aquí viene React Native, quizás una respuesta a algunos de nuestros problemas. Para entender realmente cómo React Native puede ser nuestro aliado, primero necesitamos entender su funcionamiento interno. Todo comienza con Metro empaquetando un paquete de JavaScript. Este paquete es interpretado por un motor de JavaScript en runtime, ya sea JS Core o Hermes. A partir de ahí, nuestro JavaScript está por su cuenta. Interactúa con modules nativos que proporcionan características nativas. Tanto el código nativo como el paquete de JavaScript encuentran su hogar juntos dentro del archivo de aplicación final, ya sea un APK para Android o un APK para iOS. Uno de los cambios de juego con React Native es su capacidad para enviar actualizaciones over-the-air. Nos permite actualizar sin problemas el paquete de JavaScript de nuestra aplicación sin necesidad de volver a enviar a las tiendas de aplicaciones. Veamos cómo puede tomar forma con Expo Updates. Para aquellos de ustedes que no conocen Expo, es un marco y plataforma para construir aplicaciones de React Native con facilidad y rapidez.

Aquí tienes un simple mapa de ruta. Los desarrolladores hacen un anuncio a nuestra aplicación. Estos no son cambios en el código nativo, solo modificaciones dentro del paquete de JavaScript. Luego envían el paquete de JavaScript actualizado a la cloud. Piensa en esto como un almacén donde nuestra última versión de la aplicación espera ser enviada. Expo actúa como un puente entre nuestra cloud y el dispositivo del usuario. Cuando un usuario abre la aplicación, Expo verifica si hay un nuevo paquete disponible en la cloud. Si es cierto, lo busca y reemplaza la versión anterior, todo detrás de la escena. Et voilà. Tu usuario final, sin mover un dedo, experimenta la última versión de OHAP.

3. Ventajas e Impacto de las Actualizaciones Atrasadas

Short description:

Las actualizaciones atrasadas ofrecen ventajas como eludir las validaciones de la tienda de aplicaciones, actualizaciones rápidas y retrocesos fáciles. Sin embargo, solo funcionan para actualizaciones solo de JavaScript y tienen limitaciones en términos de consumo de ancho de banda y estabilidad de la aplicación. A pesar de estas limitaciones, pueden mejorar la frecuencia de implementación y reducir el tiempo de espera para los cambios. Otras opciones a considerar son los modelos en la aplicación para actualizaciones forzadas, EAS Build and Submit, Repack para micro-frontends y los próximos componentes de servidor en React Native.

Una ventaja clara de las actualizaciones atrasadas es la capacidad de eludir las validaciones de la tienda de aplicaciones, lo que permite actualizaciones más rápidas. Y estas actualizaciones pueden revertirse fácilmente, ofreciendo una red de seguridad. Sin embargo, el mecanismo se centra en las actualizaciones solo de JavaScript, lo que significa que los cambios nativos aún requieren lanzamientos tradicionales de la tienda de aplicaciones. Este enfoque también aumenta el consumo de ancho de banda y la inestabilidad de la aplicación. Si lanzas un paquete de JavaScript que no se alinea con el runtime nativo, tu aplicación puede fallar. Finalmente, solo puedes usar actualizaciones atrasadas para pequeñas mejoras de características y correcciones de errores. De lo contrario, irás en contra de las líneas objetivo y tu aplicación puede ser eliminada de las tiendas.

Veamos el impacto de las actualizaciones atrasadas en las 4 métricas clave. Las últimas correcciones e mejoras pequeñas y rápidamente impulsadas, mejorando la frecuencia de implementación y reduciendo el tiempo de espera para los cambios. Y dado que la mayoría de nuestros errores viven en el paquete de JavaScript, las actualizaciones atrasadas pueden ayudarnos a recuperarnos más rápido de las implementaciones fallidas.

Nos acercamos a la conclusión. Si tienes hambre de más, puedes considerar revisar, por ejemplo, los modelos en la aplicación para actualizaciones forzadas. Son invaluables, especialmente cuando se abordan problemas críticos de security. También puedes revisar EAS Build and Submit. Es fácil de usar, haciendo que los lanzamientos de aplicaciones sean muy sencillos incluso si no eres un desarrollador móvil experimentado. Para una nueva perspectiva sobre los micro-frontends en React Native, puedes explorar Repack y su integración con Webpack y Module Federation. Y finalmente, mantén un ojo en los componentes del servidor, ya que también están llegando a React Native. ¡Gracias por tu tiempo y feliz codificación!

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Levelling up Monorepos with npm Workspaces
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Levelling up Monorepos with npm Workspaces
Top Content
Learn more about how to leverage the default features of npm workspaces to help you manage your monorepo project while also checking out some of the new npm cli features.
Automating All the Code & Testing Things with GitHub Actions
React Advanced Conference 2021React Advanced Conference 2021
19 min
Automating All the Code & Testing Things with GitHub Actions
Top Content
Code tasks like linting and testing are critical pieces of a developer’s workflow that help keep us sane like preventing syntax or style issues and hardening our core business logic. We’ll talk about how we can use GitHub Actions to automate these tasks and help keep our projects running smoothly.
Fine-tuning DevOps for People over Perfection
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Fine-tuning DevOps for People over Perfection
Top Content
Demand for DevOps has increased in recent years as more organizations adopt cloud native technologies. Complexity has also increased and a "zero to hero" mentality leaves many people chasing perfection and FOMO. This session focusses instead on why maybe we shouldn't adopt a technology practice and how sometimes teams can achieve the same results prioritizing people over ops automation & controls. Let's look at amounts of and fine-tuning everything as code, pull requests, DevSecOps, Monitoring and more to prioritize developer well-being over optimization perfection. It can be a valid decision to deploy less and sleep better. And finally we'll examine how manual practice and discipline can be the key to superb products and experiences.
Why is CI so Damn Slow?
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
Why is CI so Damn Slow?
We've all asked ourselves this while waiting an eternity for our CI job to finish. Slow CI not only wrecks developer productivity breaking our focus, it costs money in cloud computing fees, and wastes enormous amounts of electricity. Let’s take a dive into why this is the case and how we can solve it with better, faster tools.
The Zen of Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
The Zen of Yarn
In the past years Yarn took a spot as one of the most common tools used to develop JavaScript projects, in no small part thanks to an opinionated set of guiding principles. But what are they? How do they apply to Yarn in practice? And just as important: how do they benefit you and your projects?
In this talk we won't dive into benchmarks or feature sets: instead, you'll learn how we approach Yarn’s development, how we explore new paths, how we keep our codebase healthy, and generally why we think Yarn will remain firmly set in our ecosystem for the years to come.
Raising the Bar: Our Journey Making React Native a Preferred Choice
React Advanced Conference 2023React Advanced Conference 2023
29 min
Raising the Bar: Our Journey Making React Native a Preferred Choice
At Microsoft, we're committed to providing our teams with the best tools and technologies to build high-quality mobile applications. React Native has long been a preferred choice for its high performance and great user experience, but getting stakeholders on board can be a challenge. In this talk, we will share our journey of making React Native a preferred choice for stakeholders who prioritize ease of integration and developer experience. We'll discuss the specific strategies we used to achieve our goal and the results we achieved.

Workshops on related topic

Introducing FlashList: Let's build a performant React Native list all together
React Advanced Conference 2022React Advanced Conference 2022
81 min
Introducing FlashList: Let's build a performant React Native list all together
Top Content
WorkshopFree
David Cortés Fulla
Marek Fořt
Talha Naqvi
3 authors
In this workshop you’ll learn why we created FlashList at Shopify and how you can use it in your code today. We will show you how to take a list that is not performant in FlatList and make it performant using FlashList with minimum effort. We will use tools like Flipper, our own benchmarking code, and teach you how the FlashList API can cover more complex use cases and still keep a top-notch performance.You will know:- Quick presentation about what FlashList, why we built, etc.- Migrating from FlatList to FlashList- Teaching how to write a performant list- Utilizing the tools provided by FlashList library (mainly the useBenchmark hook)- Using the Flipper plugins (flame graph, our lists profiler, UI & JS FPS profiler, etc.)- Optimizing performance of FlashList by using more advanced props like `getType`- 5-6 sample tasks where we’ll uncover and fix issues together- Q&A with Shopify team
Detox 101: How to write stable end-to-end tests for your React Native application
React Summit 2022React Summit 2022
117 min
Detox 101: How to write stable end-to-end tests for your React Native application
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
Compared to unit testing, end-to-end testing aims to interact with your application just like a real user. And as we all know it can be pretty challenging. Especially when we talk about Mobile applications.
Tests rely on many conditions and are considered to be slow and flaky. On the other hand - end-to-end tests can give the greatest confidence that your app is working. And if done right - can become an amazing tool for boosting developer velocity.
Detox is a gray-box end-to-end testing framework for mobile apps. Developed by Wix to solve the problem of slowness and flakiness and used by React Native itself as its E2E testing tool.
Join me on this workshop to learn how to make your mobile end-to-end tests with Detox rock.
Prerequisites- iOS/Android: MacOS Catalina or newer- Android only: Linux- Install before the workshop
How to Build an Interactive “Wheel of Fortune” Animation with React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
60 min
How to Build an Interactive “Wheel of Fortune” Animation with React Native
Top Content
Workshop
Oli Bates
Oli Bates
- Intro - Cleo & our mission- What we want to build, how it fits into our product & purpose, run through designs- Getting started with environment set up & “hello world”- Intro to React Native Animation- Step 1: Spinning the wheel on a button press- Step 2: Dragging the wheel to give it velocity- Step 3: Adding friction to the wheel to slow it down- Step 4 (stretch): Adding haptics for an immersive feel
Effective Detox Testing
React Advanced Conference 2023React Advanced Conference 2023
159 min
Effective Detox Testing
Workshop
Josh Justice
Josh Justice
So you’ve gotten Detox set up to test your React Native application. Good work! But you aren’t done yet: there are still a lot of questions you need to answer. How many tests do you write? When and where do you run them? How do you ensure there is test data available? What do you do about parts of your app that use mobile APIs that are difficult to automate? You could sink a lot of effort into these things—is the payoff worth it?
In this three-hour workshop we’ll address these questions by discussing how to integrate Detox into your development workflow. You’ll walk away with the skills and information you need to make Detox testing a natural and productive part of day-to-day development.
Table of contents:
- Deciding what to test with Detox vs React Native Testing Library vs manual testing- Setting up a fake API layer for testing- Getting Detox running on CI on GitHub Actions for free- Deciding how much of your app to test with Detox: a sliding scale- Fitting Detox into you local development workflow
Prerequisites
- Familiarity with building applications with React Native- Basic experience with Detox- Machine setup: a working React Native CLI development environment including either Xcode or Android Studio
Deploying React Native Apps in the Cloud
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Deploying React Native apps manually on a local machine can be complex. The differences between Android and iOS require developers to use specific tools and processes for each platform, including hardware requirements for iOS. Manual deployments also make it difficult to manage signing credentials, environment configurations, track releases, and to collaborate as a team.
Appflow is the cloud mobile DevOps platform built by Ionic. Using a service like Appflow to build React Native apps not only provides access to powerful computing resources, it can simplify the deployment process by providing a centralized environment for managing and distributing your app to multiple platforms. This can save time and resources, enable collaboration, as well as improve the overall reliability and scalability of an app.
In this workshop, you’ll deploy a React Native application for delivery to Android and iOS test devices using Appflow. You’ll also learn the steps for publishing to Google Play and Apple App Stores. No previous experience with deploying native applications is required, and you’ll come away with a deeper understanding of the mobile deployment process and best practices for how to use a cloud mobile DevOps platform to ship quickly at scale.