Hola, soy Eric Minich con IBM Cloud y quiero contarte un poco sobre la integración continua hoy en día. Esta es una práctica de desarrollo que casi todo el mundo cree estar haciendo, pero es ampliamente malentendida. Así que quiero empezar hablando de los malos tiempos antes de tenerla, cuál era el problema que estábamos tratando de resolver y lo que esto significa para nosotros.
El enfoque antiguo
Comencemos con nuestro enfoque antiguo, en el que teníamos un par de desarrolladores que probablemente estaban en un equipo de 30 o 50 personas. Tenemos a Alicia y a Bob, y están trabajando en sus propias funcionalidades, manteniéndose separados durante mucho tiempo. Están escribiendo nuevos fragmentos de código aquí, quizás eliminando una línea de código allá, en su plan está que sus funcionalidades funcionen con la base de código y, luego, un par de semanas o meses después, van a integrar su trabajo juntos. Van a fusionar su trabajo juntos y van a decir «mi código, tu código, tenemos que unirlos y todo va a funcionar».
En este mundo, podríamos tener una situación en la que Alicia y Bob cambian la misma línea de código, y tal vez Alicia cambió este código pero luego Bob lo eliminó. Esto se vuelve realmente incómodo muy rápido cuando intentamos combinarlo algorítmicamente. Se produce lo que se conoce como un conflicto de fusión. Y esto empeora porque podría ser que algún código de aquí arriba interfiera con algún código de aquí abajo, simplemente no funcionan juntos y tenemos errores. Esto puede suceder en un solo archivo, pero en el mundo real no son solo dos desarrolladores trabajando en el mismo archivo. Hay miles o millones de archivos en una aplicación, hay decenas de desarrolladores involucrados y esto ocurre durante semanas y semanas. Reconciliar todos estos problemas se convierte en un gran desastre llamado «infierno de fusión». Entonces, ¿qué hacemos para evitar este «infierno de fusión»? Así fue como llegamos aquí.
La integración continua
Bien, comenzamos y Alicia escribe algún código de nuevo. Alicia escribe su código genial, tan pronto como tiene algo que funciona, aunque su funcionalidad no esté completa, pero tiene código que funciona y no rompe las cosas. Ella lo envía al control de código fuente. Bob, antes de comenzar a trabajar, baja el mismo código. Siempre trabaja con el último código de Alicia. Alicia siempre envía el suyo. Bob hace su cambio, tal vez elimina una línea de código. Genial. Alicia vuelve, está trabajando en otra parte de su funcionalidad, está trabajando en otra función. El coge el código de Bob. Ahora están trabajando juntos en estas cosas, y la probabilidad de que estén trabajando en lo mismo al mismo tiempo y que haya conflictos es bastante pequeña. Y si tienen algún conflicto, es solo sobre el código en el que han trabajado en el último día. Pueden sentarse juntos y solucionarlo, no hay problema. El principio básico que estamos viendo aquí, una de mis cosas favoritas en el desarrollo de software que es tan contraintuitivo es que si duele, hazlo a menudo y no te dolerá tanto. Eso nos ayuda a eliminar el gran gran problema aquí, que es no tener un infierno de fusión. No queremos eso. Así que eso está resuelto. Solución número uno.
Pero esto crea un nuevo problema. Tienes mucha gente que constantemente está enviando código al repositorio de código. Las cosas se van a romper. No va a compilar, habrá errores que no estaban allí ayer. Tienes este problema continuo de código roto. ¿Qué hacemos? Pues, metemos automatización. Siempre está vigilando el código, y cuando ocurre algún cambio, lo toma, lo compila y lo prueba. Ejecuta nuestras pruebas unitarias. Si algo falla, envía un correo electrónico al equipo, le avisa a Alicia, Bob y a todo el equipo: «Hey, hubieron dos cambios desde la última vez que compilé. Parece que Alicia y Bob tocaron esto. Ahora está roto, tienen que ir a arreglarlo en el repositorio». Ahora tenemos una red de seguridad que nos permite la integración continua. Eso está bien.
Pero también obtenemos otra cosa. Siempre tenemos esta construcción. Cuando el equipo de pruebas quiere probarlo en mayor profundidad, hacer pruebas más intensivas que las pruebas unitarias que hacemos aquí, necesitan tener una construcción. Y saben que compila y que es lo más nuevo. Ese es otro beneficio importante de la integración continua, siempre tenemos una construcción que se puede probar.
Resumen
Entonces, la integración continua abordaba la antigua forma de integración infrecuente, diciendo: si duele, lo vamos a hacer de forma continua, lo vamos a hacer mucho, y eso evita el infierno de fusión, mantiene a nuestros desarrolladores productivos y nos proporciona una construcción constantemente probables. Eso es la integración continua en pocas palabras. Gracias. Si tienes alguna pregunta, no dudes en contactarnos, y si deseas ver más contenido como este en el futuro, asegúrate de darle «me gusta» y suscribirte.
Beneficios de la integración continua: |
---|
Evita el infierno de fusión |
Mantiene a los desarrolladores productivos |
Proporciona una construcción constantemente probables |
Preguntas frecuentes
1. ¿Qué es la integración continua?
La integración continua es una práctica de desarrollo que busca evitar los problemas de fusión y ruptura continua de código al permitir que los desarrolladores integren su trabajo de forma frecuente y continua en lugar de esperar mucho tiempo para combinarlo.
2. ¿Cuáles son los beneficios de la integración continua?
La integración continua tiene varios beneficios, como evitar el infierno de fusión, mantener a los desarrolladores productivos y proporcionar una construcción constantemente probada.
3. ¿Cómo se evita el infierno de fusión?
El infierno de fusión se evita al permitir que los desarrolladores integren su trabajo de forma frecuente y continua, alineando los cambios y resolviendo cualquier conflicto de fusión de manera temprana.
4. ¿Qué es una construcción probada?
Una construcción probada es una versión del software que ha sido compilada y probada para verificar su funcionalidad y detectar posibles errores antes de su lanzamiento o implementación.
Cada artículo informativo cuenta con un final sorprendente que motiva a los lectores a leer más. Si quieres conocer más sobre la seguridad cibernética y estar al tanto de las últimas tendencias y buenas prácticas, ¡no olvides visitar nuestros otros artículos relacionados! ¡Hasta la próxima!
¿Te ha resultado útil??
0 / 0
Hola, somos Mila Jiménez y César Sánchez. Dos apasionados de la ciberseguridad con muchos años de experiencia. Hemos trabajado en muchas empresas del mundo TI y ahora nos apetece compartir nuestro conocimiento con cualquiera que lo necesite.
¡Si te gusta nuestro contenido puedes invitarnos a un café AQUÍ!