How to design a modern CI/CD Pipeline

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).
Video description

Learn how I design CI/CD pipelines. in this video I diagram out the major components and considerations taken when creating pipelines for modern software companies. Playlist: https://www.youtube.com/playlist?list=PLnFWJCugpwfwQgjlSg_-csiJbpBIze2qa If you are wondering about the diagraming software I used to create this video it's https://www.eraser.io (sponsor of this video) View my diagram: https://app.eraser.io/workspace/UHFVA30wF6pdEb2sgrWa ☕ Buy me a coffee: https://www.buymeacoffee.com/bradmorg 🛍️ Amazon Store (Homelab/YouTube Setup): https://www.amazon.com/shop/devopsjourney ☁️ $200 Digital Ocean Cloud Credits: https://m.do.co/c/adc24155a741