Continuous Integration y Delivery en Google Cloud Platform

Clase 15 de 48Entrenamiento de Google Cloud Platform

Contenido del curso

Compute on Google Cloud Platform

Google Kubernetes Engine

Streaming Data Analytics

Machine Learning

Resumen

Automatizar la construcción, prueba y liberación de software es una de las prácticas más valiosas en el desarrollo moderno. Comprender cómo funcionan los procesos de Continuous Integration y Continuous Delivery permite a los equipos reducir errores, acelerar entregas y mantener la calidad en cada ambiente de despliegue. A continuación se explican los fundamentos, las fases de un pipeline y las buenas prácticas que hacen efectivo todo el ciclo.

¿Qué significan Continuous Integration y Continuous Delivery?

Continuous Integration y Continuous Delivery (CI/CD) es un conjunto de prácticas que busca realizar actualizaciones de software de manera frecuente y regular en los distintos ambientes de una aplicación, no solo en producción [0:48].

  • Continuous Integration se enfoca en cómo se crean los artefactos y cómo se unifica el trabajo de varios desarrolladores en un mismo conjunto de artefactos listos para ser desplegados [1:07]. La meta es que dichos artefactos estén libres de errores o que contengan la menor cantidad posible.
  • Continuous Delivery se refiere a la forma en la que esos artefactos se despliegan en ciclos de desarrollo bastante reducidos, agilizando el proceso de lanzar o actualizar las aplicaciones [1:31]. Estas liberaciones pueden ser automáticas o manuales, dependiendo de la configuración del pipeline.

¿Qué es un pipeline y cómo se estructura?

Un pipeline es el proceso que define la serie de pasos para consolidar el código creado por varios desarrolladores, construir los artefactos, pasar por las autorizaciones correspondientes y finalmente liberarlos al ambiente productivo [1:54].

Las fases típicas de un pipeline son:

  • Construcción e integración del código: se consolida el código fuente de la aplicación. Si se trabaja con containers, aquí se construyen esos artefactos [2:15].
  • Despliegue: los artefactos se envían a los diferentes ambientes, que pueden ser preproducción, calidad o producción directamente [2:33].
  • Pruebas: se ejecutan pruebas unitarias, de rendimiento, seguridad e integración para garantizar que los artefactos cumplen con los criterios de calidad [2:50].
  • Aprobaciones: se decide en qué momento los artefactos se promueven hacia los siguientes ambientes, como producción [3:14].

¿Cómo fluye un pipeline de CI/CD en la práctica?

En la fase de Continuous Integration, los desarrolladores consolidan su código en un repositorio, y a partir de ahí se construyen los artefactos [3:28]. Una vez listos, pasan a la fase de Continuous Delivery, donde se liberan primero a un ambiente de pruebas y calidad [3:50].

Si todas las pruebas unitarias son exitosas, los artefactos se promueven al siguiente ambiente. Este movimiento puede hacerse de manera automática cuando no involucra ambientes sensibles [4:18]. Antes de llegar a producción, se requiere una evaluación manual para autorizar el despliegue final [4:35].

Para orquestar todo este proceso existe Spinnaker, una solución open source que facilita la gestión de la liberación de artefactos hasta producción [4:54].

¿Cuáles son las buenas prácticas para pipelines efectivos?

Existen cuatro prácticas fundamentales que hacen que un pipeline funcione de manera óptima [5:07]:

  • Calidad: los artefactos deben estar correctamente construidos y listos para desplegarse de forma segura. Se pueden utilizar estrategias como Canary o Blue-Green Deployments para minimizar riesgos en la liberación [5:20].
  • Velocidad: se busca reducir los procesos manuales al máximo para acelerar el despliegue desde la construcción hasta producción [5:44].
  • Visibilidad: las herramientas de control de código fuente permiten ramificar el código, unirlo y auditar cada cambio. Problemas de seguridad o bugs quedan documentados en el software de control de versiones. Los artefactos también se pueden marcar con metadatos para rastrear su evolución dentro del pipeline [5:57].
  • Escalabilidad: cuando los artefactos se vuelven complejos o tienen muchas dependencias, conviene separar los componentes del código de la aplicación y las librerías reutilizables, uniéndolos solo al momento de la construcción [6:29].

¿Cómo se implementa CI/CD con herramientas reales?

Un ejemplo sencillo de integración continua funciona así: un usuario hace un push de su código a un repositorio GIT [6:52]. Ese evento dispara automáticamente la construcción de artefactos, las pruebas de integración con dependencias y librerías, y finalmente la publicación en el ambiente correspondiente [7:02].

Existen dos modelos para implementar estos pipelines:

  • Infraestructura como servicio (IaaS): se provisiona la infraestructura y se instala el software de orquestación como Jenkins, GitLab, Spinnaker o Bamboo. El equipo se hace responsable de administrar esa infraestructura [7:28].
  • Software as a Service (SaaS): soluciones gestionadas como Circle CI, Travis CI y Cloud Build de Google Cloud, donde no se necesita gestionar la infraestructura subyacente [7:46].

Si quieres profundizar en cómo elegir la estrategia de despliegue adecuada para tu equipo, comparte tu experiencia o dudas en los comentarios.