LABORATORIO DIGITAL

Centralización de plantillas de despliegue de microservicios en un solo proyecto

by | Oct 16, 2024 | CI-CD | 0 comments

El desarrollo de microservicios se ha vuelto una estrategia clave para muchas organizaciones, permitiendo mayor flexibilidad y escalabilidad. Sin embargo, con el crecimiento de estos servicios surge un desafío recurrente: la proliferación de procesos de despliegue similares pero dispersos. Esto puede generar una complejidad innecesaria, dificultando la gestión y actualización de los pipelines CI/CD.

Dentro de los principales desafíos en cuanto a complejidad que surgen al abordar este particular tenemos:

Elemento de ComplejidadDescripción
Duplicación de archivo de pipelines de CI/CDSe replican procesos de integración y despliegue en múltiples microservicios, lo que incrementa el mantenimiento manual.
Actualización fragmentadaLas mejoras deben aplicarse individualmente en cada microservicio, aumentando el riesgo de omisiones.
Escalabilidad limitadaLa falta de centralización hace que la gestión de despliegue sea lenta y difícil de escalar a medida que crecen los servicios.
Mayor carga operativaMantener múltiples archivos y pipelines separados, aumentan la complejidad operativa.
Falta de visibilidad globalLos procesos separados dificultan una visión clara y unificada del estado de los despliegues en toda la organización.

Para abordar este reto, es crucial centralizar toda la estructura de despliegue en un solo proyecto, utilizando un archivo .gitlab-ci.yml compartido. Esta solución no solo simplifica la administración, sino que también garantiza que cualquier mejora o actualización en los procesos de integración y despliegue continuo afecte a todos los microservicios, en lugar de requerir cambios individuales en cada uno.

Esto se logra a través una estructura modular similar a lo indicado en la siguiente figura que permite una mayor flexibilidad, escalabilidad y una mejor gestión de los recursos dentro de un proyecto CI/CD.

Por lo general la estructura modular esta constituida por los siguientes elementos

ElementoDescripción
resourcesContiene recursos específicos a ser utilizados por los repositorios que llaman a este proyecto (puede ser scripts comunes que consumen apis de servicios externos).
snippetsAlmacena fragmentos reutilizables de código CI/CD.
stagesDefine las etapas del pipeline, como build, test, y deploy.
variablesContiene variables globales para configuraciones comunes.
Security-Quality-Mandatory.ymlContiene plantillas para analisis de seguridad y calidad de código
template-principal.ymlOrquesta y llama todos los recursos del proyecto

¿Cómo se implementa? La funcionalidad clave de GitLab para alcanzar esta centralización es la directiva include. Esta directiva permite incluir archivos .gitlab-ci.yml de otros repositorios en el pipeline actual, permitiendo reutilizar configuraciones comunes sin duplicar código.

Para incluir un archivo ci-templates.yml desde otro repositorio, la configuración podría verse así:

include:
  - project: 'grupo/ci-templates'
    ref: 'main'
    file: 'template-principal.yml'

En este caso, el archivo template-principal.yml, almacenado en el repositorio grupo/ci-templates, se incluye en el pipeline del proyecto actual. De esta manera, cualquier cambio realizado en el archivo incluido automáticamente afectará a todos los proyectos que lo utilicen, asegurando una gestión centralizada y eficiente de los pipelines.

Este enfoque no solo facilita la vida de los equipos de desarrollo, sino que también impulsa una cultura de automatización y mejora continua, aspectos vitales para la competitividad en entornos tecnológicos dinámicos.

Entradas Relacionadas

Escrito por:

Felipe Roldán

Felipe Roldán

Ingeniero DevOps, Laboratorio Digital