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.
Dominando Mobile DevOps: Aprovechando React Native para un alto rendimiento
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.
1. Introducción a Mobile DevOps
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
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.
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
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
Workshops on related topic
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
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
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.