¿No sabes cómo comenzar con DevOps? En este blog te mostraremos los primeros pasos para montar tu estrategia Continuous Integration / Continuous Delivery Pipeline de manera sencilla.
En este blog nos centraremos en las 3 primeras fases del ciclo de vida del desarrollo software, es decir, en el camino desde el equipo de desarrollo hacia el cliente, desde el código al lanzamiento del desarrollo, analizando cómo AWS nos ayuda en la creación del conocido como CI/CD Pipeline.
DevOps aparece ante la necesidad de alinear los diferentes equipos que, de una forma u otra, toman parte en el ciclo de vida de un desarrollo software o en su mantenimiento.
Si bien tradicionalmente los departamentos trabajaban prácticamente de manera aislada, DevOps propone una metodología orientada a:
- Eliminar barreras
- Facilitar la comunicación
- Mejorar la eficiencia
- Mejorar la calidad de los desarrollos de software
Ese ciclo de vida se compone de 5 fases, que son:
De estas 5 fases, nos centraremos en las 3 primeras, y mostraremos la arquitectura y los procedimientos que posibilitan la integración y entrega continuas.
Una parte integral de DevOps es la implementación de la metodología:
- Consistente en realizar una integración (CI – Continuous Integration)
- Entrega de manera continua (CD – Continuous Delivery)
Lo cual facilita que los cambios en el código vayan pasando progresivamente por diferentes fases de manera automatizada, desde la creación de la aplicación hasta su despliegue y lanzamiento, desde el entorno de desarrollo hasta el de producción.
A nivel de arquitectura, podemos reflejarlo de la siguiente forma:
Si hacemos un resumen muy simple, llevamos el código a la computación en AWS de una manera automatizada, lo que facilita el trabajo de los diferentes roles que han de tomar parte en el proceso (desarrollo, validación, test, pruebas y despliegue).
Partiendo de que nuestro equipo utiliza GitLab como repositorio de código, el funcionamiento de la arquitectura anterior es el siguiente:
Tras analizar las diferentes fases y servicios que componen el pipe CI/CD, resulta interesante entrar un poco más en profundidad en cada uno de los servicios AWS que han formado parte del flujo, haciendo mención expresa a que todos son servicios completamente administrados por AWS, lo que implica que nos despreocuparemos de la gestión de la infra, alta disponibilidad, rendimiento, etc. y los consumiremos en modo pago por uso:
Un servicio de control de código fuente que aloja repositorios seguros basados en Git. CodeCommit facilita a los equipos la colaboración en código en un ecosistema seguro y altamente escalable. Esta solución utiliza CodeCommit para crear un repositorio que almacena el código de aplicación.
Un servicio de integración continua que compila código fuente, ejecuta pruebas y produce paquetes de software listos para implementarse en un servidor de compilación creado dinámicamente. Esta solución usa CodeBuild para compilar y probar el código.
Un servicio de implementación completamente administrado que automatiza las implementaciones de software en una variedad de servicios de computación como Amazon EC2, AWS Fargate, AWS Lambda e incluso servidores locales (On Premise).
Un servicio de entrega continua que ayuda a automatizar los pipes de versiones para obtener actualizaciones rápidas y fiables de aplicaciones e infraestructura. Esta solución utiliza CodePipeline para crear un pipe integral que recupera el código de la aplicación de CodeCommit, compila y prueba con CodeBuild y, por último, se implementa con CodeDeploy.
Se crea una regla de AWS CloudWatch Events para activar CodePipeline en una confirmación de Git en el repositorio de CodeCommit.
Un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes del sector. Esta solución utiliza un bucket de S3 para almacenar los artefactos de compilación e implementación creados durante la ejecución del pipe.
Desde Neteris queremos ayudarte a que IT responda de la manera más ágil posible ante las necesidades de negocio, y creemos que este tipo de soluciones realmente contribuyen a ser más eficientes, hacer más con menos y, así, obtener ventaja competitiva.
Por tanto, no dudes en contactar con nosotros para estudiar tu caso y analizar cuál es la forma óptima de cumplir con los requisitos de tu negocio.