Estrategia de innovación que permitirá la autogestión de productos y despliegues de manera ágil.
Para implementación de la solución se estableció un proceso de Integración continua y despliegue continuo (CI/CD), orquestado con Jenkins y plantillas escritas en Groovy, utilizando solo una plantilla para cada solución, pero permitiendo su personalización a través de secretos almacenados en Jenkins con la configuración específica para cada entorno, por ejemplo el ID de la cuenta de AWS en el que se deben aplicar los cambios.
Los pipelines que se diseñaron para realizar los correspondientes despliegues, incluyendo las etapas que permiten realizar las tareas requeridas, pueden ser agrupados en: 1) tareas de preparación, 2) tareas de construcción y 3) tareas de despliegue.
Las variables se aplican usando documentos JSON, y se optó por utilizar Cloudformation para la construcción de los IaC ya que el equipo del cliente está familiarizado con este lenguaje.
Estas plantillas están desplegadas en los pipelines de Jenkins, dividas por directorios con el tipo de recursos que implementan y versionan en un repositorio GIT.
De la misma forma, existen pipelines para provisionar recursos de servicios gestionados, por ejemplo, un grupo de usuarios en AWS Cognito, esto se debe a las regulaciones que se deben cumplir (una única sesión activa, confidencialidad de la información del usuario). Fue necesario agregar Lambda que funciona como un desencadenador user pool para cumplir con los requerimientos.
Teniendo en cuenta que estos recursos (Lambdas y Cognito User Pool) se convierten en un único componente que debe ser replicado en los diferentes entornos (dev, qa, prod) Se establecen stacks de infraestructura como código, que también se ejecutan desde Jenkins, haciendo uso de AWS CLI.
Para la generación de métricas y hallazgos se utiliza la herramienta SonarQube para evaluar la calidad del código que es creado por los desarrolladores del equipo, permitiendo analizar e identificar vulnerabilidades existentes, código duplicado y cobertura del mismo a través de pruebas unitarias, entre otras.
Dentro de este proceso de validación, se decidió restringir la actualización de las solicitudes incorporando en los diferentes pipelines las reglas de validación de las puertas de calidad para tener la proactividad de controlar y permitir el bloqueo de nuevos cambios en los entornos.
Prometheus, Kibana, Gitlab, Jenkins, SonarQube, JUnit Test, Fluid Attacks.
22 de Noviembre del 2020
El proyecto aún está vigente
15 de Enero de 2022