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

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

¿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.

This talk has been presented at DevOps.js Conf 2022, check out the latest edition of this JavaScript Conference.

FAQ

Ante es un ingeniero de software senior que ha trabajado en Neo4j durante casi 6 años, enfocado en la infraestructura. Además, es un orador frecuente en meetups y tiene intereses en React, Webpack, construcción y optimización de aplicaciones, rendimiento y arquitectura web, entre otros.

Ante habla sobre la automatización de código, cómo manejar tareas repetitivas en el trabajo y cómo implementar estas automatizaciones en Neo4j.

Ante menciona varias herramientas como ESLint, React, oclf, edit json file, replace-in file, stemware para versionado semántico, y shelljs para ejecutar comandos Unix en diferentes entornos.

Ante cree que la automatización es crucial en el desarrollo de software, destacando que es importante elegir las batallas sabiamente para trabajar de manera inteligente además de trabajar duro. Él enfatiza que la automatización ayuda a manejar tareas repetitivas eficientemente y permite a los desarrolladores centrarse en tareas más significativas.

Ante describe varios ejemplos de automatización como la actualización automática de eslint y React, utilizando herramientas como shelljs para ejecutar comandos y gestionar dependencias, y cómo estas prácticas pueden aplicarse en múltiples proyectos para mejorar la eficiencia y reducir errores.

Ante destaca que la automatización ahorra tiempo, reduce errores y permite a los equipos de desarrollo centrarse en innovaciones y mejoras en lugar de repetir tareas tediosas. Esto mejora la productividad y permite gestionar múltiples proyectos de manera más efectiva.

Ante considera que el momento adecuado para automatizar depende del impacto que la automatización tendrá en el proceso. Si una tarea se realiza repetitivamente y puede ser automatizada, entonces es un buen candidato, especialmente si la automatización puede reducir el tiempo y los errores involucrados.

Ante Tomić
Ante Tomić
22 min
25 Mar, 2022

Comments

Sign in or register to post your comment.
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.

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

Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
Automatizando Todo el Código y las Pruebas con GitHub Actions
React Advanced 2021React Advanced 2021
19 min
Automatizando Todo el Código y las Pruebas con GitHub Actions
Top Content
We will learn how to automate code and testing with GitHub Actions, including linting, formatting, testing, and deployments. Automating deployments with scripts and Git hooks can help avoid mistakes. Popular CI-CD frameworks like Jenkins offer powerful orchestration but can be challenging to work with. GitHub Actions are flexible and approachable, allowing for environment setup, testing, deployment, and custom actions. A custom AppleTools Eyes GitHub action simplifies visual testing. Other examples include automating content reminders for sharing old content and tutorials.
Ajustando DevOps para las Personas sobre la Perfección
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Ajustando DevOps para las Personas sobre la Perfección
Top Content
DevOps is a journey that varies for each company, and remote work makes transformation challenging. Pull requests can be frustrating and slow, but success stories like Mateo Colia's company show the benefits of deploying every day. Challenges with tools and vulnerabilities require careful consideration and prioritization. Investing in documentation and people is important for efficient workflows and team growth. Trust is more important than excessive control when deploying to production.
¿Por qué es tan lento el CI?
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
¿Por qué es tan lento el CI?
Slow CI has a negative impact on productivity and finances. Debugging CI workflows and tool slowness is even worse. Dependencies impact CI and waiting for NPM or YARN is frustrating. The ideal CI job involves native programs for static jobs and lightweight environments for dynamic jobs. Improving formatter performance and linting is a priority. Performance optimization and fast tools are essential for CI and developers using slower hardware.
La filosofía de Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
La filosofía de Yarn
Let's talk about React and TypeScript, Yarn's philosophy and long-term relevance, stability and error handling in Yarn, Yarn's behavior and open source sustainability, investing in maintenance and future contributors, contributing to the JavaScript ecosystem, open-source contribution experience, maintaining naming consistency in large projects, version consistency and strictness in Yarn, and Yarn 4 experiments for performance improvement.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
This Talk discusses atomic deployment for JavaScript and TypeScript, focusing on automated deployment processes, Git hooks, and using hard links to copy changes. The speaker demonstrates setting up a bare repository, configuring deployment variables, and using the post-receive hook to push changes to production. They also cover environment setup, branch configuration, and the build process. The Talk concludes with tips on real use cases, webhooks, and wrapping the deployment process.

Workshops on related topic

Despliegue de aplicaciones React Native en la nube
React Summit 2023React Summit 2023
88 min
Despliegue de aplicaciones React Native en la nube
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Desplegar aplicaciones React Native manualmente en una máquina local puede ser complejo. Las diferencias entre Android e iOS requieren que los desarrolladores utilicen herramientas y procesos específicos para cada plataforma, incluidos los requisitos de hardware para iOS. Los despliegues manuales también dificultan la gestión de las credenciales de firma, las configuraciones de entorno, el seguimiento de las versiones y la colaboración en equipo.
Appflow es la plataforma de DevOps móvil en la nube creada por Ionic. Utilizar un servicio como Appflow para construir aplicaciones React Native no solo proporciona acceso a potentes recursos informáticos, sino que también simplifica el proceso de despliegue al proporcionar un entorno centralizado para gestionar y distribuir tu aplicación en múltiples plataformas. Esto puede ahorrar tiempo y recursos, permitir la colaboración, así como mejorar la confiabilidad y escalabilidad general de una aplicación.
En este masterclass, desplegarás una aplicación React Native para su entrega en dispositivos de prueba Android e iOS utilizando Appflow. También aprenderás los pasos para publicar en Google Play y Apple App Stores. No se requiere experiencia previa en el despliegue de aplicaciones nativas, y obtendrás una comprensión más profunda del proceso de despliegue móvil y las mejores prácticas para utilizar una plataforma de DevOps móvil en la nube para enviar rápidamente a gran escala.
Despliegue de Aplicación MERN Stack en Kubernetes
DevOps.js Conf 2022DevOps.js Conf 2022
152 min
Despliegue de Aplicación MERN Stack en Kubernetes
Workshop
Joel Lord
Joel Lord
Desplegar y gestionar aplicaciones JavaScript en Kubernetes puede volverse complicado. Especialmente cuando una base de datos también debe formar parte del despliegue. MongoDB Atlas ha facilitado mucho la vida de los desarrolladores, sin embargo, ¿cómo se integra un producto SaaS con su clúster de Kubernetes existente? Aquí es donde entra en juego el Operador de MongoDB Atlas. En este masterclass, los asistentes aprenderán cómo crear una aplicación MERN (MongoDB, Express, React, Node.js) localmente y cómo desplegar todo en un clúster de Kubernetes con el Operador de Atlas.
Azure Static Web Apps (SWA) con Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) con Azure DevOps
Workshop
Juarez Barbosa Junior
Juarez Barbosa Junior
Las Azure Static Web Apps se lanzaron a principios de 2021 y, de forma predeterminada, pueden integrar su repositorio existente y implementar su aplicación web estática desde Azure DevOps. Este masterclass demuestra cómo publicar una Azure Static Web App con Azure DevOps.
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
TestJS Summit 2021TestJS Summit 2021
85 min
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
Workshop
Bonnie Schulkin
Bonnie Schulkin
¿Incluyen tus pruebas automatizadas verificaciones de accesibilidad? Este masterclass cubrirá cómo comenzar con jest-axe para detectar violaciones de accesibilidad basadas en código, y Lighthouse CI para validar la accesibilidad de las páginas completamente renderizadas. Ninguna cantidad de pruebas automatizadas puede reemplazar las pruebas manuales de accesibilidad, pero estas verificaciones se asegurarán de que tus probadores manuales no estén haciendo más trabajo del necesario.
Cómo desarrollar, construir e implementar microservicios Node.js con Pulumi y Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
Cómo desarrollar, construir e implementar microservicios Node.js con Pulumi y Azure DevOps
Workshop
Alex Korzhikov
Andrew Reddikh
2 authors
El masterclass ofrece una perspectiva práctica de los principios clave necesarios para desarrollar, construir y mantener un conjunto de microservicios en el stack Node.js. Cubre los detalles específicos de la creación de servicios TypeScript aislados utilizando el enfoque de monorepo con lerna y yarn workspaces. El masterclass incluye una descripción general y un ejercicio en vivo para crear un entorno en la nube con el framework Pulumi y los servicios de Azure. Las sesiones están dirigidas a los mejores desarrolladores que deseen aprender y practicar técnicas de construcción e implementación utilizando el stack Azure y Pulumi para Node.js.