Una Guía Breve para el Desarrollo de React Native

Rate this content
Bookmark
Slides

En pocas palabras, las mejores prácticas de DevOps móvil para aplicaciones React Native, desde el código hasta el lanzamiento.

12 min
02 Dec, 2022

Video Summary and Transcription

Hoy estamos discutiendo los desafíos que enfrentan los desarrolladores de React Native en la implementación móvil. La automatización es la clave para gastar menos tiempo en tareas y enfocarse en entregar características. Existe una etapa para monitorear las aplicaciones móviles después del lanzamiento. Al diferenciar entre iOS y Android, existen requisitos específicos para cada uno. El archivo FASTA permite configurar tareas y acciones.

Available in English

1. Desafíos y Soluciones en la Implementación Móvil

Short description:

Hoy estamos discutiendo los desafíos que enfrentan los desarrolladores de React Native en la implementación móvil. La firma de la aplicación, la configuración compleja, las pruebas, las versiones lentas y la CI inflexible son algunos de los problemas. La automatización es clave para gastar menos tiempo en tareas y centrarse en entregar características. El proceso de Mobile DevOps o mobile CICD puede abordar estos desafíos.

Hola a todos. Gracias por tenerme hoy. Mi nombre es Motez y trabajo como defensor del desarrollador en Bit-Trice. Principalmente, todos los días ayudo a los desarrolladores móviles a tratar de entender cuáles son los desafíos a los que se enfrentan, especialmente con aplicaciones cross-platform o aplicaciones nativas. Hoy estamos hablando sobre la implementación móvil. Como sabemos, si estás trabajando con aplicaciones React Native, al final tienes dos aplicaciones nativas, iOS y Android. Y, como sabemos, cada aplicación requiere flujos de trabajo, pasos o configuraciones específicas. Por lo tanto, los desarrolladores de React Native se enfrentan a diferentes requisitos, procesos y flujos de trabajo para iOS y Android. Entonces, necesitas descubrir cómo puedes hacerlo automáticamente porque necesitas firmar la aplicación antes de usarla en la App Store. Como sabemos, no es como una aplicación web. Necesitas firmar tu aplicación o certificado o perfil de aprovisionamiento o secretos y luego poder lanzarla en la App Store.

Configuración compleja, como mencionamos, también las pruebas. ¿Deberíamos ejecutar las pruebas de UI en cada solicitud o deberíamos dejarlo antes del lanzamiento? ¿Cómo podemos ejecutarlo? ¿Qué marco estamos usando? ¿Deberíamos ejecutar las pruebas unitarias y de UI y todo para cada solicitud? Entonces, ¿cómo podemos lidiar con este proceso? Y también lanzamientos lentos. Tal vez haya una empresa que lanza cada dos meses, lo cual es enorme. Porque si tienes un negocio y tienes diferentes competidores en el mercado, si quieres lanzar una nueva característica, este es un proceso largo o largo para lanzar cada dos meses. Entonces, necesitamos tratar de eliminar el proceso durante al menos dos semanas. Como una cadencia de lanzamiento de dos semanas. Y CI inflexible y frágil. No pierdas tu tiempo solucionando los problemas del servidor de CI y cómo podemos lidiar con los diferentes problemas con la CI todos los días. Aquí, Scott Hanselman de Microsoft, como gerente de programa, dijo que la herramienta más poderosa que tenemos como desarrolladores es la automatización. La automatización no es solo las pruebas de UI. Es la automatización para todo. Puede automatizar el despliegue, los lanzamientos, la revisión de código o cualquier cosa que podamos, debemos automatizar el proceso. Entonces, el objetivo es gastar menos tiempo en tareas que ralentizan o dificultan al desarrollador y centrarse más en entregar las características. Porque como sabemos, las horas del desarrollador son el enfoque principal o las cosas más importantes para las empresas. Por eso, creo que el proceso que solucionará estos problemas o desafíos será un proceso de Mobile DevOps o un proceso de mobile CICD. Entonces, comenzamos con una estrategia de CICD y luego pasamos a la fase de medición o planificación. Y luego tenemos la estrategia para un CICD. Y luego estamos construyendo y testing

2. Monitoreo de Aplicaciones Móviles y Automatización

Short description:

Existe una etapa para monitorear las aplicaciones móviles después de su lanzamiento. Seis pasos para la adopción de desarrolladores móviles: planificación, estrategia de CICD, construcción, pruebas, lanzamientos beta y lanzamientos en producción. Automatizar el proceso implica enviar el código a un repositorio de código fuente, activar la construcción del servidor de CI y pasar por el proceso de integración continua. Esto incluye clonar el repositorio de código, instalar dependencias, ejecutar análisis de código estático, pruebas unitarias e integradas, y verificar problemas. Un constructor de iOS también forma parte del proceso.

Después de lanzar y construir nuestras aplicaciones móviles. Y luego estamos monitoreando nuestras aplicaciones móviles. No es como si simplemente lo lanzáramos en la App Store. No, hay otra etapa para monitorear las aplicaciones móviles. Por ejemplo, si deseas monitorear los bloqueos de la aplicación o el rendimiento de la aplicación en general. Entonces, una vez que lanzas tus aplicaciones móviles, tienes otra herramienta o proceso para comenzar a revisar y monitorear el lanzamiento de la aplicación móvil. Aquí tenemos seis pasos para la adopción de desarrolladores móviles. Como mencionamos, planificación, estrategia de CICD, construcción, pruebas, lanzamientos beta. Esto es especialmente para móviles. Porque tal vez para web no tenemos... tal vez a veces estamos hablando en una implementación web sobre implementación canary o como azul-verde. Pero esto es necesario para aplicaciones móviles, que son lanzamientos beta que estás lanzando a tus probadores beta para verificar que todo funcione correctamente en tu aplicación. Y esto puede ser para pruebas de vuelo, por ejemplo, para iOS o para la distribución de aplicaciones Firebase o para la App Store, para un canal interno. Y lanzamientos en producción. Y luego tenemos un monitoreo. Entonces, aquí, asumamos que este es como el proceso completo. Entonces, estoy tratando de averiguar cómo podemos automatizar este proceso. Por ejemplo, simplemente creas un código o lo envías a GitHub o cualquier repositorio de código fuente que estés usando, se genera la solicitud. Tal vez tengas un servidor de CI. Y se activa la construcción del servidor de CI. Y luego pasas por el proceso de integración continua, que es clonar el repositorio de código, clave SSH para acceder al código. Y luego comienza la instalación, como sabemos, las aplicaciones React Native requieren, por ejemplo, si estás usando ER. Luego puedes ejecutar el análisis de código estático. Este será el primer paso. Luego puedes ejecutar pruebas unitarias e integradas. Y tal vez tengas un informe de cobertura. Y luego, si todo está bien, verificará errores. Entonces, esta es la primera etapa. Esto es para React Native o tal vez

3. Diferenciación entre iOS y Android

Short description:

Diferenciación entre iOS y Android, hay requisitos específicos para cada uno. Los pasos incluyen la instalación de dependencias, la construcción de Xcode, la firma automática de código y la ejecución de pruebas de interfaz de usuario de extremo a extremo. La detección temprana de problemas en la etapa de integración continua permite una rápida resolución. El concepto de fallar rápidamente ayuda a evitar problemas en producción. Para Android, el proceso incluye la ejecución de la tarea de depuración de paquetes, la firma de la aplicación y la ejecución de pruebas de interfaz de usuario. La implementación continua presenta desafíos y ejecutar todas las tareas secuencialmente puede llevar mucho tiempo. La implementación de pipelines y el uso de Fastlane son posibles soluciones.

para la aplicación de JavaScript o TypeScript. Luego tienes un constructor de iOS. A partir de aquí, comenzamos a diferenciar entre iOS y Android. Y como mencioné, hay requisitos totalmente diferentes. Entonces, por ejemplo aquí, tal vez necesitas ejecutar o instalar como comenzar instalando las dependencias de KukuBots, luego la construcción de Xcode y luego la firma automática de código. Hay un mecanismo o un paso para la firma automática de código o la firma automática de la aplicación. Y al final, tendrás el IP. Luego, después de eso, puedes ejecutar las pruebas de interfaz de usuario de extremo a extremo. Tal vez pueda ser con Detox, que es el framework que admite aplicaciones React Native, o tal vez puedas usar Appium, esto es de código abierto para aplicaciones móviles. Y luego estás subiendo los artefactos. Luego, si todo está bien, ahora estamos continuamente como haciendo las etapas o paso a paso. E incluso si tenemos un problema, digamos que tenemos un problema en la etapa de integración continua , tal vez en la prueba de unidad e integración. Esto será útil para el equipo porque en esta etapa, encontraste el problema temprano. Entonces, si estás ejecutando pruebas de interfaz de usuario o pruebas de unidad o integración y luego se bloquea o tienes un problema, entonces lo descubrirás en las etapas tempranas en el desarrollo, por lo que todavía estamos en la solicitud de extracción. Entonces, puedes imaginar que este problema es el cliente lo encuentra en la App Store o en la aplicación después de lanzar la aplicación móvil. Entonces, necesitas lanzar otra versión o una corrección rápida y necesitas hacer este proceso nuevamente desde cero. Entonces, esto nos ayuda a fallar rápidamente. Entonces, este es como un concepto de fallar rápidamente. Entonces, estamos fallando rápidamente y aquí estamos avanzando un cambio en las pruebas y ejecutando una prueba en etapas tempranas en el desarrollo de código para evitar cualquier otro problema o problema en la vida o la producción. Esto es lo mismo para iOS, solo son diferentes cosas aquí, estamos usando diferentes comandos, por ejemplo, para Android, estamos ensamblando o ejecutando la tarea de depuración del paquete debug que es nos dará la aplicación y luego estamos firmando nuestra aplicación, firmando nuestra aplicación y luego también será lo mismo para ejecutar la prueba de interfaz de usuario o ejecutar la prueba de extremo a extremo. Con la implementación continua, aquí, tal vez podamos ejecutar como implementar en la distribución de la tienda de aplicaciones de Firebase o en Google Play Store. Aquí, encontraremos otro desafío. Entonces, ¿deberíamos ejecutar todas estas cosas en secuencia, como ejecutar la construcción de iOS primero y luego ejecutar Android en un flujo de trabajo? Este será el problema, por lo que puede llevar tiempo. Entonces, ahora, debemos pensar en otro desafío después de implementar una solución de CI/CD, que son los pipelines. Entonces, podemos ejecutar diferentes flujos de trabajo en paralelo al mismo tiempo, por ejemplo, supongamos que el primero es el flujo de trabajo uno que era la integración continua para ejecutar una unidad de jQuery. Entonces, podemos ejecutarlo primero, si está en verde, entonces, podemos iniciar iOS y Android en paralelo al mismo tiempo, para ahorrar tiempo porque ahora, si estamos ejecutando esto y antes de los lanzamientos, esto llevará tiempo. Entonces, ahora, podemos pensar en los pipelines de construcción. Y también tenemos otra opción. Puedes implementar o usar Fastlane. ¿Alguien aquí usa Fastlane? Ok. Entonces, Fastlane es una herramienta basada en Ruby

4. Archivo FASTA y Mobile DevOps

Short description:

El archivo FASTA permite configurar tareas y acciones. Se pueden utilizar diferentes carriles para Android e iOS, con tareas específicas para pruebas beta e implementación. Para abordar los desafíos, considera el uso de servidores dedicados o CI/CD en la nube. CI/CD en la nube ofrece una configuración de proyecto sencilla, un entorno limpio, flujos de trabajo personalizables, firma de código sin problemas y pruebas automatizadas. Mobile DevOps es una mentalidad que requiere coordinación entre equipos y automatización. Es un viaje, no un destino.

El archivo FASTA. Es un archivo de configuración en Ruby. Se llama archivo FASTA. Entonces, con el archivo FASTA, puedes configurar todo como una tarea o como una acción. Por ejemplo, aquí en Android, en la sección de Android, puedes, por ejemplo, enviar una nueva versión beta a Crashlytics o a Firebase. Y para Android, por ejemplo, puedes tener una tarea específica para subirla a TestFlight para los probadores beta. Así que aquí puedes tener una tarea o acción. Se llama acción y eso. Entonces, tienes diferentes carriles como encontramos aquí. Así que la descripción, este es el carril. Así que tenemos un carril llamado beta y un carril llamado implementado. Y para iOS, también tenemos el carril beta. Así que puedes agregar un número incrementable, que es porque estás lanzando una nueva compilación. O tomar capturas de pantalla para los metadatos o para la App Store y también implementarla en la App Store, puedes tener otra tarea para esto.

Entonces, ahora, para solucionar este problema o los desafíos a los que nos enfrentamos, debemos pensar en si debemos usar servidores dedicados o nuestra infraestructura para CI/CD. Como mencionamos anteriormente en los desafíos, tenemos un problema que a veces tenemos un servidor de CI con problemas de configuración. Por lo tanto, es posible que debas comenzar a pensar en CI/CD en la nube o integración continua en la nube. Debido a la configuración de proyectos sencilla, simplemente puedes clonar tu proyecto en GitHub y comenzar a construirlo. Realmente hace que el entorno sea especialmente para móviles, por lo que puedes imaginar si tienes un entorno limpio y cada vez que instalas en una máquina virtual o si tienes un entorno predefinido que incluye todas las herramientas que estás utilizando para tu aplicación móvil, esto ahorrará tiempo, seguro. Y los flujos de trabajo personalizables, como sabemos, tenemos flujos de trabajo diferentes para iOS y Android, firma de código sin problemas para iOS y Android y pruebas de unidad e integración automatizadas, hay diferentes pasos que pueden ayudarte en este proceso. Y distribuir aplicaciones React Native es fácil. Entonces, al final, la idea es que Mobile DevOps es una mentalidad. Pero debemos ponernos de acuerdo como equipo en qué proceso o qué plataforma debemos usar. Es una mentalidad, cultura, proceso y herramientas. CI/CD es un proceso de coordinación entre los diferentes equipos para eliminar cualquier barrera entre las operaciones, el desarrollo, el producto, y así sucesivamente. Esta automatización es una parte vital de Mobile DevOps. Y es un viaje, no un destino. Como sabemos, es un trabajo acumulado durante tal vez un año para llegar a este ciclo completo del proceso. Y gracias. Gracias. Gracias.

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

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.
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Fine-tuning DevOps for People over Perfection
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.
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.
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.
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

React Advanced Conference 2022React Advanced Conference 2022
81 min
Introducing FlashList: Let's build a performant React Native list all together
Top Content
WorkshopFree
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
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
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
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
- 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
React Advanced Conference 2023React Advanced Conference 2023
159 min
Effective Detox Testing
Workshop
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
DevOps.js Conf 2022DevOps.js Conf 2022
152 min
MERN Stack Application Deployment in Kubernetes
Workshop
Deploying and managing JavaScript applications in Kubernetes can get tricky. Especially when a database also has to be part of the deployment. MongoDB Atlas has made developers' lives much easier, however, how do you take a SaaS product and integrate it with your existing Kubernetes cluster? This is where the MongoDB Atlas Operator comes into play. In this workshop, the attendees will learn about how to create a MERN (MongoDB, Express, React, Node.js) application locally, and how to deploy everything into a Kubernetes cluster with the Atlas Operator.