El objetivo de esta publicación es compartir contigo algunas ideas y experiencias que hemos recopilado a lo largo de los años trabajando con clientes y socios para entregar software que cumpla con sus requisitos comerciales a tiempo.
La aplicación de los principios ágiles para desarrollar software permite la entrega incremental de nuevas características a los clientes. Pero en algún momento nos enfrentamos a cuellos de botella para llevar estas nuevas características a los entornos de producción debido a las siguientes razones:
Cuando surgen estos problemas, comenzamos a acumular los cambios que se moverán a cada etapa (la etapa de producción es la más común), lo que resulta en lanzamientos poco frecuentes y elimina la oportunidad de recibir comentarios rápidamente de los usuarios.
Las organizaciones podrían adoptar un enfoque para implementar procesos más manuales y una colaboración constante entre los equipos, pero en algún momento esto reducirá la productividad y generará agotamiento en los miembros del equipo debido a la cantidad de tiempo y reuniones que tendrán que llevar a cabo para lograr resultados. Al final del día, automatizar los pasos de compilación, prueba e implementación ayuda a completar las características de manera eficiente y rápida.
El punto es que aplicar una cultura de DevOps desde el principio podría ser realmente difícil, pero hay una cita importante relacionada con esto:
“DevOps tiene la idea de que si algo es doloroso, deberías hacerlo con más frecuencia”.
Comencemos definiendo qué es CI/CD. La Integración Continua (CI) y la Implementación/Entrega Continua (CD) son prácticas que automatizan los pasos que se deben realizar para lanzar nuevas versiones de software con las siguientes ventajas:
La Integración Continua reduce el riesgo de problemas de integración y mejora la calidad del código. Los desarrolladores envían sus cambios al repositorio de código de manera regular y comprueban si el repositorio de código sigue funcionando cuando otros desarrolladores están contribuyendo. Más que un componente técnico, la Integración Continua es un componente cultural donde los desarrolladores aprenden buenas prácticas para integrar sus cambios con frecuencia.
Por lo tanto, hemos integrado GitFlow en nuestro flujo de trabajo de desarrollo de software. Nos ha ayudado a aplicar buenas prácticas para trabajar colectivamente, mantener el historial de nuestros repositorios coherente y reducir significativamente el riesgo de problemas de integración e introducción de errores.
Estas son algunas herramientas que necesitas para aplicar los principios de CI:
Un servidor de CI tiene las siguientes misiones:
Después de completar todos los pasos de la Integración Continua, entra en juego la Entrega Continua. Esta práctica automatiza algunos de los pasos necesarios para entregar nuestras soluciones al entorno de producción.
La entrega continua integra un conjunto de procesos, herramientas y una cultura de colaboración y retroalimentación continua para cumplir con la misión. Un cambio de mentalidad de tu equipo es importante para:
Implementar un pipeline requiere identificar los puntos problemáticos y cuellos de botella que podrían afectar el proceso de entrega, e implementar prácticas para detectar errores temprano es relevante. Después de identificar estos elementos, piensa en cuáles se pueden automatizar (no es obligatorio automatizar todos ellos), es muy relevante gestionar algunos escenarios manualmente. Esto es lo que llamamos puertas manuales, algunos de ellos pueden ser cuestionables, mientras que otros pueden ser legítimos.
Escenario legítimo:
Escenario cuestionable:
Otro paso importante para la entrega continua es definir una etapa casi igual a la producción para validar las configuraciones del entorno y realizar pruebas manuales. Esto ayuda a avanzar con la auditoría de seguridad, encontrar vulnerabilidades y detectar errores temprano. Tendrás mucho espacio para mejorar.
La última práctica que se puede aplicar es la implementación continua, donde la integración continua y la entrega continua se llevan al extremo, haciendo que este proceso sea completamente automatizado.
El código enviado por los desarrolladores se prueba, compila e implementa automáticamente sin intervención manual. Grandes empresas han adoptado esta práctica, incluyendo elementos para validar las versiones en producción con la ayuda de sus usuarios y evitar posibles indisponibilidades de servicios:
No queremos crear un ranking o algo así, a lo largo de los años hemos visto proyectos que han implementado soluciones con estas herramientas:
No es tan importante conocer todos los detalles o la semántica de las diferencias entre la integración continua, la entrega continua y la implementación continua. En este punto, deberías poder identificar los conceptos, pasos, prácticas y beneficios de comenzar con la implementación de esta cultura en tus proyectos.
Esta publicación ha sido escrita con el apoyo y la colaboración de Fernanda Jaramillo e Ihann Pascuas Ihann Pascuas. Gracias a Ayté y TBBC por proporcionar las herramientas y proyectos para validar estas ideas.
Todo lo mejor, no dudes en contactarnos si tienes preguntas.
Esteban Cerón
Leave A Comment