How to design a modern CI/CD Pipeline
Diseño de un Pipeline CI/CD Moderno
Introducción al Pipeline CI/CD
- El video se centra en el diseño de un pipeline CI/CD moderno, dirigido a ingenieros de software y DevOps.
- Se menciona que el contenido es aplicable independientemente de la industria o tipo de aplicación.
Etapa de Fuente
- La etapa inicial del pipeline es la "etapa de fuente", donde se obtiene el código del repositorio, como GitHub o Bitbucket.
- Se recomienda implementar reglas básicas de protección de ramas para asegurar revisiones antes de fusionar cambios en la rama principal.
- Se sugiere utilizar herramientas de linting para verificar errores sintácticos en el código antes del commit.
- Un "pre-commit hook" puede ejecutarse localmente en el IDE del desarrollador para realizar verificaciones antes del commit.
Etapa de Construcción
- En la etapa de construcción, se compila el código y se crean imágenes contenedoras (Docker).
- La preferencia personal es construir primero las imágenes contenedoras y luego compilar el código dentro de ellas.
- Las pruebas unitarias son fundamentales; cada nuevo cambio debe incluir pruebas que verifiquen funciones básicas del código.
Cobertura del Código
- Es importante verificar la cobertura del código, idealmente entre 80% y 90%, asegurando que los desarrolladores implementen suficientes pruebas unitarias.
- Si la cobertura cae por debajo del umbral establecido, se recomienda fallar el pipeline.
Etapa de Pruebas
- La etapa final es donde se realizan pruebas más exhaustivas, conocidas como pruebas de integración.
Integración y Entrega Continua en Microservicios
Importancia de las Pruebas Integradas
- La ejecución de pruebas integradas puede ser un proceso que consume tiempo, especialmente cuando se construyen imágenes para microservicios que dependen de otros servicios y bases de datos.
- Es crucial establecer un entorno de pruebas integrado. Herramientas como Docker Compose pueden facilitar esto, pero también es posible hacerlo en un clúster de Kubernetes, dependiendo de la organización y sus necesidades.
Etapa de Liberación en el Pipeline CI/CD
- La etapa final del pipeline CI/CD es la liberación, donde se envía la imagen a un registro para que los servidores puedan utilizarla.
- Una vez que la imagen está disponible en el registro (por ejemplo, ECR), otros entornos como QA pueden comenzar a realizar pruebas adicionales sobre la aplicación.
- Los entornos pre-productivos, como staging y producción, también deben estar conectados al registro para acceder a la imagen liberada.
Conclusiones sobre CI/CD
- Todo lo discutido hasta ahora forma parte del concepto más amplio conocido como pipeline de integración continua y entrega continua (CI/CD).