La Guía del Desarrollador Perezoso: ¿Cómo Automatizar las Actualizaciones de Código?

Rate this content
Bookmark

¿Cómo actualizar cientos de proyectos de una vez? Con el rápido crecimiento de las organizaciones, la demanda de escalabilidad de los equipos crece, lo que afecta directamente la estructura y propiedad de los proyectos. El dilema habitual es mono vs. multi-repos, pero... ¿Y si te digo que no importa mucho? Ambos enfoques pueden golpearte en algún momento, así que tal vez es mejor pensar de abajo hacia arriba.


Hoy te guiaré a través de algunos de los mayores desafíos que existen en ambos enfoques, como la gestión de dependencias en cientos de proyectos, las actualizaciones globales de código y muchas otras cosas. También te mostraré ejemplos de cómo resolvimos esto dentro de Infobip mediante la construcción de nuestras propias bibliotecas internas.

22 min
25 Mar, 2022

Video Summary and Transcription

Las automatizaciones de código pueden ahorrar tiempo y esfuerzo en las tareas de desarrollo. Hay herramientas y ejemplos disponibles para automatizar tareas como la actualización de dependencias y el formato de código. La automatización permite que los equipos se centren en trabajos valiosos y mejora el rendimiento general. Decidir cuándo automatizar depende del impacto y tipo de código. La última tarea automatizada discutida fue la aplicación de actualizaciones de traducción a múltiples proyectos.

Available in English

1. Introducción a las automatizaciones de código

Short description:

Hola a todos y les envío un gran saludo desde Croacia. Hoy hablaré sobre las automatizaciones de código y cómo las implementamos en Neo4j. Trabajar de manera inteligente y elegir las batallas sabiamente son clave en el desarrollo. Pensar es una herramienta poderosa, pero debemos evitar pensar demasiado. Vamos a ver ejemplos de código y explorar las dependencias en el archivo package.json.

Hola a todos y les envío un gran, gran, gran saludo desde Croacia. Mi nombre es Ante y hoy voy a hablarles sobre temas muy interesantes que son las automatizaciones de código y cómo las implementamos en Neo4j. Espero que disfruten de mi sesión, así que comencemos. Hola, soy Ante y tengo 28 años. Soy ingeniero de software senior que trabaja en Neo4j desde hace casi 6 años y me enfoco en la infraestructura. También soy un orador frecuente en meetups y tengo muchos intereses como React, Webpack, Construcción de Aplicaciones, Optimización de Aplicaciones, Rendimiento, Arquitectura Web, Automatización y Experiencia. Y saben, todos los que me conocen les dirían que soy un gran aficionado a la fotografía y amo la fotografía, soy un fotógrafo feliz. Así que si están interesados, no duden en visitar mi blog de fotografía en Instagram, pero comencemos con una pregunta, ¿cómo manejan las tareas repetitivas en el trabajo? Esto es algo que me gustaría que respondieran en la encuesta, así que veamos, tal vez estamos haciendo copiar, pegar y luego repetir, repetir y repetir lo mismo, o por ejemplo, contamos 20 proyectos y luego cambiamos lo mismo en todos ellos. Bueno, tenemos muchas tareas repetitivas y esto puede llevarnos mucho tiempo, especialmente cuando tenemos 50 o más proyectos, y podemos ver como en esta línea azul que podemos hacer esto manualmente, ya saben, y también podemos ver este rojo que es en realidad lo que quiero explorar en esta sesión, ya que también está relacionado con el concepto de automatización, que es extremadamente importante, y me gustaría comenzar con una cita y eso es que siempre elegiré a una persona perezosa para hacer un trabajo difícil porque una persona perezosa encontrará una manera fácil de hacerlo y veamos cómo esto se aplica en realidad. Lo primero es lo primero, no está relacionado con que debamos ser perezosos para aprender. No, la programación es una habilidad que lleva horas y horas perfeccionar y definitivamente debemos trabajar duro para convertirnos en mejores desarrolladores y ampliar nuestros conocimientos. Y entonces, ¿de qué demonios estoy hablando? Bueno, necesitamos ser capaces de elegir nuestras batallas sabiamente porque trabajar duro es tan importante como trabajar de manera inteligente. Y en el desarrollo, las misiones son clave para lograr todo esto y vamos a comprobarlo con algunos ejemplos. Pero también necesitas mencionar el pensamiento. Obviamente, es la parte más difícil del desarrollo, ¿verdad? Especialmente cuando tienes que nombrarlas. Pero el pensamiento es en realidad una herramienta muy poderosa para las misiones porque nos ayuda a producir ideas y soluciones y también nos ayuda a buscar activamente desafíos y mejoras. ¡Pero espera! Tenemos que tener cuidado de no pensar demasiado, porque nuestro tiempo es valioso y no deberíamos perder demasiado tiempo en complicaciones, ya que dificultará el soporte y la actualización del código en el futuro. Tal vez podamos tener buenas intenciones, pero nuestro código puede ser demasiado complejo de entender. Y esto es algo que comprobaremos en los ejemplos de código. Pueden ver el código QR y el enlace del repositorio aquí para que puedan seguir conmigo o pueden revisar el repositorio más tarde. Bueno, entonces vamos a ello. Lo que quiero mostrarles es este archivo package.json. Este es mi proyecto para el proyecto ficticio o ejemplo uno para las ecuaciones médicas y quiero llamar su atención sobre estas dependencias. Lo que tengo en las dependencias es una herramienta CLI llamada oclf. Ahora es su preferencia lo que elijan. Yo simplemente elegí oclf porque es fácil de integrar y configura muchas cosas de inmediato. Así que me ayuda y ofrece muchas posibilidades e integraciones. Pero saben que tienen más opciones como commander o yars y, por supuesto, también tienen oclf si lo desean. Pero lo que también pueden ver son algunas otras dependencias. Tienen algunas menores, tal vez menos conocidas, como edit json file o replace-in file, que pueden buscar y usar según su necesidad.

2. Herramientas, Ejemplos y Actualización de Dependencias

Short description:

Tienes herramientas populares como stemware para el versionado semántico, shelljs para ejecutar comandos unix en cualquier entorno, y ejemplos de comandos eslint-update y actualización de dependencias. El comando de actualización de eslint tiene cuatro partes: filtro, clonar el proyecto, verificar migraciones y ejecutar la migración principal. El comando de migración principal está escrito en index.js y se instalan dependencias adicionales. El siguiente paso es discutir la actualización de dependencias.

Y tienes más herramientas populares como stemware que se utiliza para el versionado semántico. Puede ayudarte a verificar qué versión tienes y si coincide con la versión que necesitas y yada yada yada. Luego tenemos shelljs, que es una biblioteca similar a Unix que te ofrece la opción de ejecutar comandos Unix en cualquier entorno, como Windows, macOS, Linux u otros. Y algunos de ustedes seguramente están familiarizados con uh, simplemente usan ships para hacer actualizaciones y, por supuesto, también se puede usar. Pero me gustaría hablar de dos ejemplos que voy a mostrarles. El primero es el comando eslint-update, donde simplemente vamos a verificar si tenemos eslint link fix, que también pueden ver en los paquetes a la derecha, y si verifican los scripts aquí, verán que no lo tenemos. Así que agregaremos link fix para la actualización automática. El segundo comando es la actualización de dependencias, donde simplemente verificaremos si tenemos react 16 y si lo tenemos, simplemente actualizaremos la versión a react 17. Ok, vamos a verificar, así que tengo eslint comandos de actualización con cuatro partes, la primera es el filtro donde generalmente en gi I usamos big packet api para descargar el archivo package json para que podamos hacer algunas verificaciones rápidas. Como pueden ver aquí en el filtro, usamos el archivo package.json para cada paquete.json descargado para el proyecto para verificar si tenemos eslint, por supuesto, tenemos eslint, así que si ejecuto el comando que tienen aquí en el ejemplo, que también puede ayudarte verán que obtendré un resultado de azure, lo que significa que mi migración se ejecutará. Así que ese es el primer paso hecho. El segundo paso es clonar el proyecto. Cada proyecto para el cual ejecutamos el filtro y devuelve verdadero se clonará y luego, antes de ejecutar la migración dentro de indexts primero verifico estas migraciones y este es un filtro ampliado donde gracias a package package, ya saben, gracias a todo el proyecto clonado, puedo verificar absolutamente cualquier cosa que quiera. No sé, por razones de simplicidad, estoy verificando package.json aquí para simplemente ver si tengo el comando linpicks y como no tengo el comando linpicks, aquí pueden ver que devolverá verdadero. Entonces, si ejecuto mi comando de migración, devolverá verdadero y luego podré ejecutar la migración principal o al menos se ejecutará en el trabajo de TI. Entonces, voy a index.js y puedo ver mi comando de migración principal. Pero está escrito aquí como pueden ver aquí hay dependencias adicionales que generalmente se instalan. Aquí es donde principalmente las usarás. Entonces, dentro de tu trabajo de migración. Y aquí estoy usando el archivo JSON. Como pueden ver aquí en el comando de migración donde primero obtengo mi ruta al proyecto, luego he agregado un archivo JSON y dentro de mi paso de lintfix donde simplemente también verifico si ya tengo el comando lintfix. Y si no tengo el comando lintfix, entonces lo agrego a un archivo JSON y también se guardará automáticamente. Y nuevamente, vamos a verificar el ejemplo de código aquí. Así que lo copiaré y lo ejecutaré el comando run eslintupgrade. Y verán aquí que ahora lintfix ha aparecido y tengo cambios en mi proyecto de GitHub. Así que, voilà, sé que está funcionando. El segundo paso que quiero mostrarles es la actualización de dependencias. Pero antes de pasar a la actualización de dependencias, quiero mencionar brevemente las opciones de migración que no las obtendré, pero puedes usarlas para obtener las opciones e información que necesites para la ejecución automática del trabajo o incluso para solicitudes de extracción y eso. Entonces aquí puedes pasar, puedes recuperar, puedes calcular cualquier información que necesites para tu entorno de TI. Pero lo que me gustaría hacer es pasar a la actualización de dependencias.

3. Actualizar Dependencias y Formateo de Código

Short description:

Dentro de la actualización de dependencias, verifico si tengo react-16 y muestro la versión de react-dom. Ejecuto comandos similares a Unix utilizando shelljs y actualizo react-dom paso a paso. Otro ejemplo es el formateo de código con ESLint y VDR, que se puede automatizar. Es un buen ejemplo de pereza y automatización. Explora el proyecto tú mismo para ver más ejemplos.

Y lo que tengo dentro de la actualización de dependencias, como dije, es verificar si tengo react-16, lo cual, si miras los paquetes y te lo muestro desde el proyecto de prueba de ejemplo aquí, puedes ver que tengo la versión 16 de react-dom, lo que significa que soy elegible para la actualización. Ahora, no te mostraré los cuatro pasos, pero puedes ver aquí que estoy actualizando react-dom. Tengo algunos comandos exec y npm install. Y voy a iniciar el proyecto. Esto significa que estoy ejecutando comandos similares a Unix. Y lo estoy haciendo, como puedes ver en la parte superior, tengo shelljs donde estoy ejecutando algunos comandos. Entonces, como tengo shelljs aquí, tenemos import xtd from shelljs, tengo los comandos. Y si los ejecuto, algo sucederá. Y como verás, podrás ver cómo reacciona y se actualiza react-dom paso a paso. Porque ve react y luego react-dom, y luego todo lo demás. Y terminará, se envolverá y se ejecutará con éxito. Pero esto no es algo por lo que esperaré, porque quiero mostrarte un último ejemplo. Y ese es este archivo. Sabes que cuando escribimos un proyecto, tenemos ESLint y tenemos VDR. Y tenemos esos dos. Esos son para el formateo de código y para corregir posibles errores básicamente para garantizar la calidad del código. Pero esto también se puede considerar como automatización. También podemos considerarlo como pereza. ¿Por qué? Porque no formatearemos esto automáticamente. Puedo configurar mi IDE, por ejemplo, para guardar esto y luego formatearlo, que es lo que voy a hacer. Y cuando lo guarde, ok, no funciona. Pero simplemente puedo ejecutar los comandos de código aquí y puedo ver que a medida que arreglo algo, se formatea automáticamente y se hace exactamente como quiero que se vea. Entonces, también es un muy buen ejemplo de pereza. Y también llamémoslo automation. Puedes explorar este proyecto por ti mismo, si quieres, y es extremadamente útil. Y también agregaré más ejemplos. Así que te recomiendo encarecidamente que lo revises. Ok. Me gustaría volver a la presentación.

4. Beneficios de las Automatizaciones

Short description:

Imagina tener 200 repositorios de Git y necesitar actualizar cada uno manualmente, lo cual tomaría más de seis días laborales. Las automatizaciones pueden ahorrarnos tiempo y esfuerzo.

Y veamos el siguiente paso. Entonces, ahora, imagina que tenemos repositorios de Git. Y queremos hacer algo similar a lo que hicimos en los ejemplos de código. Entonces, queremos actualizar cada proyecto. Y supongamos que nos lleva 15 minutos hacer todo tipo de actualizaciones o 50 minutos por proyecto. Ahora, si hacemos un poco de matemáticas, veremos que para 200 proyectos y 50 minutos por proyecto, necesitamos aproximadamente 50 horas o un poco más de seis días laborales para hacer la actualización manual del código. Y realmente no tenemos ese tipo de tiempo, ya sabes, especialmente si hacemos esto periódicamente, como pretendemos hacerlo.

5. Ejemplos de Automatización

Short description:

Tenemos una biblioteca interna de migración para actualizar proyectos, integración y despliegue continuo, localización continua, pruebas automatizadas y pruebas autogeneradas. Estos ejemplos demuestran cómo la automatización puede ahorrar tiempo y esfuerzo en diversas tareas de desarrollo.

Las automatizaciones pueden ayudarnos aquí, como vimos, como se mencionó anteriormente. Así que debemos tener cuidado y debemos ser conscientes de lo que queremos lograr y con qué impacto. Entonces, expliquemos un poco sobre nuestra configuración de GI. Por supuesto, en InfoWIP, generalmente tenemos muchos equipos y muchos proyectos. Y dado que tenemos eso, puede ser realmente difícil y llevar mucho tiempo actualizar todo. Y lleva mucho tiempo. Y, por supuesto, puede ayudar al equipo a realizar los cambios, pero es propenso a errores porque no sabemos por qué necesitamos estos cambios o ellos no saben por qué los necesitamos y pueden cometer errores al actualizarlos.

Para evitar ese problema, tenemos nuestra biblioteca interna de migración con trabajos y ejecuciones automáticas para la integración continua y Jenkins. Entonces, ¿qué paso damos? Resolvemos esto. Filtramos donde verificamos qué proyectos son elegibles para actualizaciones según la API de Bitbucket. Eliminamos proyectos innecesarios y luego podemos continuar. Según eso o el alcance o los resultados que nos quedan, simplemente los clonamos. Después de haberlos clonado, antes de realizar las acciones, podemos hacer la verificación adicional para eliminar más proyectos. Pero, por supuesto, después de verificar, no sé, esta migración, pasamos a index o al comando de migración donde realizamos las acciones definidas. Luego tenemos nuestros cambios de código que necesitamos confirmar. Luego los enviamos y también creamos una solicitud de extracción para que los equipos puedan revisarla. Y tenemos más ejemplos aquí.

Un ejemplo es muy familiar para todos ustedes y es la integración continua y el despliegue continuo donde también podemos usar muchas herramientas como Jenkins o Docker o Kubernetes con incluso algunas herramientas integradas como webpack, rollup, no sé, parcel y mucho más. Y tenemos un buen caso de uso del sitio InfoWeb y eso es la localización continua. Lo que queremos es que los equipos no se preocupen por localizar el producto, y queremos lograr la integración o localización automática dentro de un proyecto y queremos ofrecer múltiples idiomas a nuestros clientes. Entonces tenemos alrededor de 50 proyectos web que requieren actualizaciones y localización. Entonces, en lugar de actualizar todo manualmente, usamos automatización.

Y el caso de uso que tenemos aquí es que el UXWriter cambiará el texto. Guardarán los cambios en un sistema de gestión de letras basado en la nube. Y luego ejecutaremos periódicamente el trabajo de automatización en todos los proyectos web que reemplazarán nuestro texto con el nuevo que agregó el UXWriter. Y luego generará una solicitud de extracción para que los equipos la revisen. Y tenemos otro ejemplo, que tal vez no estemos familiarizados pero es extremadamente útil y está relacionado con el texto de desarrollo, que es muy importante, pero es difícil de mantener debido a tareas complejas, como la integración y las pruebas de extremo a extremo que son especialmente muy inviables de mantener cuando se está bajo el plazo. Pero tenemos pruebas automatizadas y autogeneradas para motivar las pruebas donde puedes decirle al programa, oye, así es como se supone que debe comportarse y funcionar la aplicación. Así que por favor genera la prueba y también registra los casos límite. Y luego, gracias a la Máquina de Estados y los Diagramas de Estados, tendremos las pruebas generadas para todos los casos de uso. Y aquí podemos ver un ejemplo simple de pasear a un perro, y podemos ver cómo pasamos de un estado a otro.

6. Beneficios de la Automatización y Conclusión

Short description:

Y podemos ver cómo pasas de un chapoteo a una caminata. Solo necesitas salir de casa. Te recomiendo que revises los enlaces de arriba, que son documentación y visualización. Tenemos una persona increíble llamada David Kershad, quien es el autor de S-State. Echa un vistazo al gráfico. Si podemos automatizar algo que pueda ayudar a otros, entonces simplemente hazlo. Algunos factores importantes para la automatización son el tiempo, la energía y la productividad. Aprender automatización es una buena manera de crecer. El tiempo es valioso, enfócate en la productividad y en los cambios que pueden tener un impacto con el cliente. Mantén el código simple y más fácil de actualizar más adelante. Contáctame por correo electrónico. Gracias y adiós.

Y podemos ver cómo pasas de un chapoteo a una caminata. Solo necesitas salir de casa. Y esto es realmente bueno y útil, y es un tema muy amplio y bueno. Y te recomiendo que revises los enlaces de arriba, que son documentación y visualización. Y tenemos una persona increíble llamada David Kershad, quien es el autor de S-State. Realmente estoy haciendo mucho con eso, y definitivamente te recomiendo que revises sus sesiones. Especialmente en el código QR a continuación. Y echa un vistazo al gráfico. Debo decirte que no se trata de hacer la menor cantidad de trabajo, porque queremos contribuir tanto como sea posible, pero también usar nuestro tiempo con el mayor valor e impacto posible. Y estamos aquí para ayudarnos mutuamente. Entonces esto no es una competencia. Todos deberíamos ganar. Entonces si podemos automatizar algo que pueda ayudar a otros, entonces simplemente hazlo. Especialmente si puede ayudarte a ser más productivo y permitirte trabajar en paralelo en otra cosa.

Y algunos de los factores importantes para la automatización son el tiempo, especialmente cuánto se tarda en realizar tareas repetitivas, la energía, porque podemos gastar mucho en tareas repetitivas, y puede ser agotador mentalmente. Luego, hacer las mismas tareas repetitivas puede ser realmente molesto y frustrante y afectar nuestra productividad. Luego, si cambiamos a una tarea diferente, podemos perder el enfoque y tardar más tiempo en retomarlo. Y también, situaciones como esta son buenas cuando ya has cumplido con tareas repetitivas, por lo que una buena curva de aprendizaje con la que puedes crecer es aprender automatización, aprender algo nuevo y pensar fuera de la caja. Entonces, esto es algo bueno para la conclusión porque siempre debemos buscar los patrones y verificar si necesitamos automatizar algo. Y el tiempo es valioso, y debemos enfocarnos en la productividad y los cambios que pueden tener un impacto con el cliente. Y debemos mantener nuestro código simple y más fácil de actualizar más adelante. Si quieres aprender más sobre esto, puedes revisar mi pequeña página que tiene un resumen, materiales y alguna información adicional. Siéntete libre de revisarla. Espero que encuentres útil esta sesión y que puedas aprender algo nuevo. Puedes contactarme por correo electrónico y gracias. Y espero escuchar tus preguntas en la sesión de preguntas y respuestas en unos momentos. Gracias y adiós. ¿Estás sorprendido? No, no lo estoy. Así es como las personas, quiero recordar esto, cómo las personas manejan tareas repetitivas en el trabajo, ¿verdad? Adelante, Ante. Bueno, ya sabes, generalmente es algo frecuente

7. Adopción de la Automatización y Posibilidades

Short description:

Tenemos las herramientas, como ESLint o PDR, que permiten la automatización en nuestro trabajo diario. Sin embargo, parece haber un retraso en la adopción de la automatización. A medida que la tecnología avanza, la automatización también debería crecer para mantenerse al día con los avances. Hoy en día, tenemos numerosas posibilidades para explorar y lograr la automatización.

porque las automatizaciones son parte fundamental del trabajo diario. Tenemos las herramientas, que he mencionado, como ESLint o PDR, e incluso algunos ejemplos similares. Así que todo eso, ya sabes, sumado significa que todos nosotros tenemos automatización básicamente todos los días. Sí, absolutamente. ¿Y por qué crees que hay un retraso en la adopción de la automatización hasta el día de hoy en 2022? ¿Crees que automatizamos lo suficiente? Entonces, también podría ser porque, ya sabes, todo está evolucionando. Y a medida que todo evoluciona y crece, ya sabes, desarrollo web u cualquier otra cosa, entonces, por supuesto, mi automatización también crecerá. Tenemos muchas posibilidades para explorar y lograr todo hoy en día.

8. Recommended Libraries and Tools for Automation

Short description:

¿Qué bibliotecas o herramientas recomiendas para la automatización? Tenemos la versión semántica en el proyecto de Node.js, que es una herramienta poderosa. Los comandos Unix pueden ayudar a ejecutar comandos y gestionar inconsistencias. También vale la pena mencionar Cisco ship. La automatización de tareas nos permite centrarnos en trabajos más importantes. Decidir cuándo automatizar depende de la situación.

Absolutamente. ¿Y qué bibliotecas o herramientas recomiendas para la automatización? ¿Cuáles son tus favoritas? Bueno, hoy en día tenemos muchas posibilidades. Sabes, definitivamente la herramienta número uno que recomiendo si haces algunos de los metascripts es algo que todos saben que está bien hecho. Porque tenemos la versión semántica en el proyecto de Node.js. Lo que obtenemos con ella es que puedes verificar la versión. Podemos ver si realmente cumplimos alguna condición. Y es una herramienta bastante poderosa. Especialmente cuando necesitas verificar, digamos, paquetes, como hice en el ejemplo. Luego también podemos tener comandos Unix. Porque a veces necesitas ejecutar npm install o uninstall algo. O incluso acceder a algún archivo. Eso es algo cuando si tienes, digamos, una computadora con Windows y estás ejecutando tu trabajo de CI en, no sé, Ubuntu o máquina Linux, entonces puedes tener problemas con inconsistencias. Si puedes usar algo como unificar el comando Unix, que es precisamente shelljs que mencioné, es bastante bueno. Y también tengo que mencionar especialmente algo que no mencioné mucho durante la sesión, y eso es Cisco ship. Y ejecutar el modo de código e incluso escribir el tuyo propio. Lo cual es algo que definitivamente puede ser extremadamente útil. Correcto. Entonces, lo que estás diciendo es que es bueno ser un desarrollador perezoso y automatizar tanto como sea posible. ¿Verdad? Porque tenemos muchas oportunidades y tenemos muchas herramientas que podrían ayudarnos o pueden ayudarnos a hacer estos trabajos repetitivos. Sí. Y no manualmente. ¿Verdad? Bueno, sí. Sabes, no formateamos el código manualmente o algo así. Ya tenemos cierta pereza interna y eso se manifiesta en forma de estas herramientas. Y si podemos automatizar alguna acción, lo cual también, porque las máquinas realmente definen lo que queremos y a medida que definimos lo que queremos lograr, podemos obtener eso automáticamente. Podemos centrarnos en realizar alguna acción que realmente pueda contribuir más porque si eliminamos la necesidad de imprimir manualmente ese código, podemos tener más tiempo para entregar otras características para lograr más. Sí, eso es más importante, ¿verdad? Podemos centrarnos en el código, podemos centrarnos en una nueva característica, en lugar de centrarnos en tareas no diferenciadas. Sí, es cierto. Y ¿cómo deciden los desarrolladores, equipos o líderes técnicos cuándo es el momento adecuado para automatizar o construir un pipeline de automatización para una tarea?

9. Deciding When to Automate

Short description:

Decidir cuándo automatizar se trata de conocer el impacto. Si te encuentras haciendo la misma tarea repetidamente, considera automatizarla. Sin embargo, considera el tipo de código y si se puede escribir un script. La automatización es autoexplicativa y ayuda a los equipos a trabajar de manera eficiente. Al explorar la automatización, los desarrolladores adquieren una comprensión más profunda del código y los cambios necesarios. La automatización permite que los equipos se centren en tareas valiosas y mejora el rendimiento general.

Bueno, eso es algo que generalmente depende. Para mí, decidir cuándo debes automatizar se trata de conocer, tener la sensación. Porque cuando realizas una acción, no se trata solo del tiempo. También puede darte algunas ideas sobre si tienes tu acción. Si lo haces una y otra vez, entonces lo que puedes hacer es si puedes hacer esto automáticamente, como el ejemplo de reemplazar las fases, entonces lo sabrás. Porque sabes que tendrás un impacto. Y creo que se trata de eso. Así que se trata del impacto. Y también puedes considerar un poco el tiempo, pero no es el factor más importante. Entonces, si consideras cómo trabajas con algo y eso, entonces puedes saber cuándo es el momento adecuado para las automatizaciones. Correcto. Cuando ves que estás haciendo algo una y otra vez, manualmente, tal vez debas considerar automatizar la tarea. Pero también debes considerar qué tipo de código es, porque si no estás haciendo exactamente lo mismo, es algo que es difícil de escribir mediante un script, entonces ese sería el caso en el que no podrás automatizar. Pero si tienes algo donde realmente puedas hacer al menos una parte, entonces vale la pena considerarlo, especialmente si tienes en cuenta el impacto. Absolutamente. ¿Qué te interesó en este tema de automatización? ¿Tienes responsabilidades en el trabajo que involucran automatización? Bueno, sí, teníamos muchos proyectos y teníamos una idea. Teníamos el trabajo dentro del equipo cuando estábamos trabajando porque teníamos que hacer muchos cambios y vimos que era algo que nos llevaría mucho tiempo porque imagina, por ejemplo, que tienes que actualizar, en ese momento eran 30 proyectos y nuestra estimación era que necesitábamos aplicar los cambios manualmente y que necesitábamos al menos 30 minutos por proyecto. Así que vimos que nos llevaría demasiado tiempo porque básicamente podrías pasar toda una semana actualizando los proyectos y sin hacer nada más. Así que empezamos a pensar qué pasaría si pudiéramos crear en realidad algún tipo de entorno de CI o entorno de Jenkins donde en el proyecto pudiéramos definir qué tipo de cambios son necesarios para todos esos proyectos y luego cuando tomemos eso, digamos definir un trabajo de migración, lo ejecutamos en todos los proyectos o en el conjunto definido de proyectos, luego obtenemos el resultado y los equipos obtienen la solicitud de extracción. Por supuesto, tenemos que estar involucrados de alguna manera, pero lo que realmente podemos hacer es construir el código. Y eso es más fácil porque sí, también podemos hacer que los equipos hagan los cambios manualmente, pero el problema en ese caso es que en realidad no tendrán conocimiento sobre por qué necesitamos eso, por qué necesitamos esta parte, por qué necesitamos eso. Y nosotros sí lo sabemos. Y si aplicamos los cambios mediante el script, nos aseguraremos de que sea exactamente lo que necesitamos y también reduciremos el margen de errores. Así que tenemos a los equipos proporcionando los cambios de manera eficiente y también evitamos el margen de errores. Así que nuevamente estábamos pensando en el impacto y en lo que podemos obtener con todo eso. Creo que mencionaste algo muy importante y es que la automatización generalmente se autoexplica. Entonces, cuando ves un pipeline de automatización, puedes entender por defecto la racionalidad detrás de él. Si está documentado o hay una referencia a la documentación, por supuesto, pero en general es un punto muy bueno. Bueno, sí, me gustaría agregar una cosa más, cuando eres un desarrollador, digamos que estás aprendiendo React y sabes que aprendes lo básico de React, lo que suele ser natural para los desarrolladores es que realmente comienzas a explorar más, explorar los detalles, ver cómo funciona todo realmente, así que pruebas una cosa, pruebas otra cosa y luego ves qué sucede. Y lo mismo con la automatización, cuando las haces, también aprendes cómo funciona algún código y qué cambios son realmente necesarios, porque cuando tenemos, digamos, gsgo ship o codemodes, luego exploramos el árbol de secretos abstractos, que es cómo podemos leer el código, ya que así es como la computadora puede leer el código, porque lo hicimos comprensible para nosotros y también lo hicimos comprensible para la computadora, porque realmente definimos las acciones necesarias, ya sabes. Absolutamente, absolutamente, y creo que la ganancia de la automatización también es medible, por lo que definitivamente te ayuda a ver cuál es el rendimiento real de un equipo, ¿verdad, en lugar de tener el

10. Última Tarea Automatizada: Actualizaciones de Traducción

Short description:

Lo último que automatizé fue aplicar actualizaciones de traducción a unos 50 proyectos. Necesitábamos realizar el mismo conjunto de cambios para la preparación de futuras características. Utilizamos un trabajo de TI para llamar al proyecto y realizar las acciones necesarias.

El equipo nuevamente ocupado con tareas que realmente no aportan ningún valor. Sí, eso es correcto, sí. Sí. ¿Puedes decirnos muy rápidamente qué fue lo último que automatizaste en tu proyecto? Bueno, lo último que automatizé fue aplicar algunas actualizaciones de traducción en, creo, unos 50 proyectos. Así que hicimos algunas actualizaciones como preparación para una futura característica y tuvimos que aplicar el mismo conjunto de cambios. Lo hicimos con un trabajo de TI para llamar al proyecto y hacer lo que sea necesario. Wow. Genial. Así que recuerden todos los que están viendo que pueden seguir haciendo preguntas sobre automation en Discord, devops-talk-Q&A para que Ante responda y les dé sus ideas sobre este increíble tema. Muchas gracias, Ante. Es genial tenerte aquí. Gracias también y es maravilloso estar aquí. Gracias a ti.

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.
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Atomic Deployment for JS Hipsters
Deploying an app is all but an easy process. You will encounter a lot of glitches and pain points to solve to have it working properly. The worst is: that now that you can deploy your app in production, how can't you also deploy all branches in the project to get access to live previews? And be able to do a fast-revert on-demand?Fortunately, the classic DevOps toolkit has all you need to achieve it without compromising your mental health. By expertly mixing Git, Unix tools, and API calls, and orchestrating all of them with JavaScript, you'll master the secret of safe atomic deployments.No more need to rely on commercial services: become the perfect tool master and netlifize your app right at home!

Workshops on related topic

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.
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
WorkshopFree
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.
TestJS Summit 2021TestJS Summit 2021
85 min
Automated accessibility testing with jest-axe and Lighthouse CI
Workshop
Do your automated tests include a11y checks? This workshop will cover how to get started with jest-axe to detect code-based accessibility violations, and Lighthouse CI to validate the accessibility of fully rendered pages. No amount of automated tests can replace manual accessibility testing, but these checks will make sure that your manual testers aren't doing more work than they need to.
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) with Azure DevOps
WorkshopFree
Azure Static Web Apps were launched earlier in 2021, and out of the box, they could integrate your existing repository and deploy your Static Web App from Azure DevOps. This workshop demonstrates how to publish an Azure Static Web App with Azure DevOps.
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
How to develop, build, and deploy Node.js microservices with Pulumi and Azure DevOps
Workshop
The workshop gives a practical perspective of key principles needed to develop, build, and maintain a set of microservices in the Node.js stack. It covers specifics of creating isolated TypeScript services using the monorepo approach with lerna and yarn workspaces. The workshop includes an overview and a live exercise to create cloud environment with Pulumi framework and Azure services. The sessions fits the best developers who want to learn and practice build and deploy techniques using Azure stack and Pulumi for Node.js.