GitOps como única fuente de verdad en el desarrollo de aplicaciones cloud native

Alejandro de Fuenmayor    23 marzo, 2021
gitops

Probablemente os hayáis encontrado alguna vez en la tesitura de estar programando o trabajando con una hoja de cálculo y que, de repente, algo se tuerza. Pasar de ir todo conforme a los planes y estar cerca de la implementación a que no funcione. Uno entonces empieza a revisar, de arriba abajo, de derecha a izquierda pero, por mucho que revise, añada o quite, el problema sigue ahí. Se pierde tanto tiempo que sería el equivalente a rehacer desde cero, que es lo que al final se acaba haciendo… Ahí radica la utilidad de GitOps para aplicaciones nativas en la nube.

Y es que la situación que describía es perfectamente extrapolable a cualquier proyecto de transformación digital. Con la dificultad añadida de que esa gestión o trabajo no es individual, sino colectivo. El proceso implica a diferentes departamentos, incluso a agentes externos a la organización.

En mi día a día profesional reconozco pocas cosas de las que aprendí en la escuela o la universidad. Todo a nuestro alrededor -la sociedad, las ciudades- también ha cambiado tremendamente en los últimos años. Incluso el liderazgo económico y empresarial. Y, cómo no, el mundo de la tecnología, que, además, impulsa y realimenta todos los demás cambios.

GitOps para simplificar y acelerar las implementaciones de aplicaciones

Hace tiempo que dejamos de tratar a nuestros sistemas como infraestructuras inmutables.. Esto supuso un cambio de paradigma para muchos departamentos de sistemas y uno de sus retos actuales es disponer de “una única fuente de verdad”.

Me explico: a la hora de analizar y proponer mejoras en los servicios TIC es muy útil contar con un repositorio que defina qué es lo que hay desplegado y todas las versiones de código e infraestructura que se han ido utilizando (las fotos intermedias).

GitOps se ha establecido como el modelo operativo para el desarrollo y construcción de aplicaciones nativas en la nube desde la aparición de los contenedores como pieza central de la implementación de iniciativas agile en los departamentos de sistemas.

GitOps tiene como motor de sus operaciones, cómo no podía ser de otra manera, a Git, la herramienta de gestión de versiones desarrollada por Linus Torvald. Sí, el padre de Linux, uno de los mayores fenómenos alrededor del movimiento del software libre. Y, por supuesto, Git, como sistema de control de versiones distribuido, se basa en una licencia de código abierto, que permite gestionar el despliegue de código con la velocidad y eficiencia que los departamentos de sistemas requieren en el entorno VUCA actual.

Una visión extremo a extremo

Desde el nacimiento de Kubernetes como herramienta para la gestión de contenedores y microservicios, el modelo GitOps ha definido diferentes buenas prácticas en lo que a la administración de clústeres de Kubernetes y entrega de aplicaciones se refiere. Git se usa como una fuente única de verdad para la infraestructura declarativa y las aplicaciones. Permite monitorizar cada uno de los elementos desplegados en el clúster y alerta de diferencias entre el código del repositorio Git y la infraestructura y aplicaciones desplegadas.

La metodología GitOps, junto a diferentes modelos de trabajo como implementación y distribución continua (CI/CD), permite disponer de una visión extremo a extremo de todo el proceso de creación y despliegue de infraestructura y aplicaciones. Esto garantiza la reducción de los tiempos de entrega de nuevas versiones, elimina errores y permite sistemas mucho más robustos, en lo que a pruebas unitarias y de seguridad se refiere.

Pilares de una correcta implementación de GitOps

A continuación os dejo los cuatro principios que hay que tener en cuenta para implementar de forma correcta la metodología GitOps:

  1. Todos los sistemas han de estar descritos de forma declarativa
  2. Las versiones del estado ideal de la plataforma serán custodiadas en Git
  3. La gestión de cambios se automatizará y centralizará en un único sistema/herramienta.
  4. Y, por último, pero no menos importante, hay que monitorizar y gestiona los entornos mediante agentes para alertas ante cualquier anomalía entre el estado deseado y los recursos desplegados.

GitOps es una solución para incrementar la productividad de los recursos, aumentar la estabilidad de los sistemas, dotarlos de escalabilidad “ilimitada”, mejorar la experiencia de los desarrolladores o alcanzar mejores estándares de seguridad.

Imagen; spacemoeba

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *