/
Ciclo de Desarrollo en la Plataforma (CI/CD)

Ciclo de Desarrollo en la Plataforma (CI/CD)

Se plantea un ciclo de vida ágil de desarrollo basado en un modelo DevOps con flujo de entrega temprana, continua, iterativa e incremental de valor (foco en entrega de Valor a Cliente), con inspección y adaptación para la consecución de mejora continua y calidad en el proceso, ampliando con algunos ámbitos y bloques transversales identificados de interés para el desarrollo de soluciones.

DevOps supera y trasciende a Agile al ser mucho más completo e integrador, al estar orientado a servicio de extremo a extremo y a promover el flujo continuo como gestión conjunta de proyectos y servicios.

Bloques y Fases

Se propone una Consola Global como punto de acceso unificado, para todos los roles y como nexo para todo el marco de trabajo durante todo el ciclo de vida de una solución.

Se plantean 3 bloques transversales a todo el ciclo de vida DevOps por su importancia y uso común en el resto:

  • Collaborate: Conjunto de herramientas colaborativas que faciliten la comunicación ágil y la transparencia en todo el ciclo de vida del desarrollo de soluciones, así como facilitador de un punto de documentación de todos los ámbitos del marco de trabajo.

  • Security: Conjunto de actividades, herramientas, frameworks, prácticas y todo aquello que se defina como necesario e imprescindible para asegurar la seguridad en todo el marco de trabajo y ciclo de vida de una solución. Convierte el ciclo de vida DevOps en DevSecOps.

  • Governance: Censo o catálogo completo de todas las piezas que forman parte de una solución (Productos/Proyectos, Clientes, Usuarios, Procesos, Funcionalidades, Datos, Componentes visuales, Servicios, Algoritmos, Infraestructura y Sistemas, Herramientas, Frameworks, Módulos y Dependencias, etc.).

Herramientas

Traducido en herramientas tendríamos:

  • Global Console: Control Panel de la Plataforma desde el que se puede realizar el desarrollo, monitorización, seguimiento,...

  • Collaborate: Jenkins (documentación), Slack (comunicación).

  • Governance: Control Panel, JIRA.

  • Code: Eclipse (Java), Visual Studio Code (HTML, JS), Control Panel Plataforma (Reglas, Flows, APIS,...).

  • Build: Maven (Java), SonarQube, Jenkins, Docker, npm.

  • Test: JUnit (Java), Katalon (automatización test Capa Web), JMeter (Test Stress y Performance).

  • Release: Jenkins, Nexus, Docker Registry.

  • Monitor: Caas Platform (Rancher y OpenShift), Prometheus, Spring Boot Admin, Controla Panel Plataforma.

  • Operate: Caas Platform (Rancher y OpenShift).

  • Deploy: Ansible, Docker, Kubernetes.

Proceso CI/CD

Las herramientas descritas se unen en un flujo que compone el proceso CI/CD (Integración continua y despliegue continuo) de la plataforma.

El flujo conceptual se resume en:

  • El código de la plataforma se encuentra en Gitlab: Git es un sistema de control de versiones distribuido, fue diseñado para el desarrollo de grandes proyectos con una gran cantidad de código y gestionado por mucha gente. Gran cantidad de proyectos Open Source están migrando o han migrado a Git ya que la creación de ramas e integración de las mismas es más eficiente y sencilla que en los sistemas centralizados. 

    • Cada desarrollador trabaja sobre su propio Branch (rama). Al finalizar el desarrollo y testearlo solicita un Merge Request a la rama de Desarrollo (Develop) o de resolución de bugs de la versión que corresponda.

  • Todas las noches (y también bajo petición) se lanza un Pipeline Jenkins que:

    • Descarga los fuentes de la rama concreta de Gitlab,

    • Compila los fuentes y pasa los test unitarios con Maven,

    • Pasa los tests de calidad con Sonar,

    • Sube los artefactos generados en un Nexus y

    • Genera las imágenes Docker y las almacena en el Docker Registry.

  • Tras acabar este pipeline se lanza otro pipeline que ejecuta la plataforma y lanza los tests de integración.

  • Para realizar el despliegue se accede a la consola del CaaS correspondiente (Rancher u OpenShift) y se actualiza la versión de la plataforma.

Related content

Pruebas en la Plataforma
Pruebas en la Plataforma
Read with this
Marco de Referencia DevOps
Marco de Referencia DevOps
More like this
Política de Versionado de Onesait Platform
Política de Versionado de Onesait Platform
Read with this
Development Cycle in the Platform (CI/CD)
Development Cycle in the Platform (CI/CD)
More like this
Glosario de Seguridad
Glosario de Seguridad
More like this
Marco de Referencia Seguridad
Marco de Referencia Seguridad
More like this