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.
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
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!
Comments