Automatización del Pipeline de Despliegue, la necesidad de desplegar frecuentemente
Vivimos en un mundo cambiante en el cual día a día suceden distintos acontecimientos que nos obligan de una u otra forma a cambiar nuestras necesidades. En la actualidad una de las cosas más importantes para una compañía es la innovación, que permite a los productos o servicios que se ofrecen puedan adaptarse a las necesidades variables de los usuarios.
Hoy en día existe una estrategia para innovar llamada DevOps y uno de sus principios fundamentales es el pipeline de despliegue, pero mucho cuidado, esto es solo un principio. Tener o implementar un pipeline de despliegue no significa que la compañía haga DevOps o tenga esta cultura.
Cultura
DevOps es una cultura de colaboración entre las diferentes áreas de las compañías que permite dejar de pensar en tareas aisladas y enfocarse en el flujo de valor, de esta manera se eliminan los silos existentes y se trabaja hacia un objetivo común. DevOps cuenta con muchos principios y prácticas claves fundamentadas en la tecnología. Uno de ellos es el principio del pipeline de despliegue que se explicará a continuación:
Los pipeline de despliegue están compuestos por tres etapas principales y cada una de ellas tiene tareas repetitivas. Estas tareas pueden ser automatizadas mediante scripts escritos en formatos YAML, un formato que permite describir etapas y tareas en forma de árbol que se ejecutan de forma secuencial. Actualmente existen diversas herramientas visuales de CI/CD (integración continua y entrega continua) en el mercado y se encuentran de todos los tipos:
- Open-source
- Free
- Freemium
- De pago
- Empresariales
Entre las herramientas más conocidas para CI/CD se encuentran las siguientes:
- Jenkins
- GitLab
- Azure Pipeline
- AWS CodePipeline
Sistema de control de versiones de código fuente
Para automatizar un pipeline de despliegue es indispensable contar con un sistema de control de versiones de código fuente, idealmente basado en GIT.
Se debe realizar una configuración inicial para garantizar la conexión entre la herramienta de CI/CD y el sistema de control de versiones en el cual se almacena el código fuente y los scripts necesarios para cada una de las etapas.
Etapas del Pipeline de despliegue
Primera etapa del pipeline de despliegue: integración
Tareas:
- Compilación del código.
- Ejecución de pruebas unitarias.
- Análisis de la calidad de código.
Si algo llegase a fallar en esta primera etapa, el pipeline se debe detener y se deben corregir de inmediato los errores en el código o en los scripts de integración para volver a ser ejecutado.
Segunda etapa: entrega a un ambiente de pruebas o pre-productivo
Después de que la primera etapa sea exitosa, se ejecutará la etapa de entrega a un ambiente de pruebas o pre-productivo, en la cual se realizan las siguientes tareas:
- Despliegue de los archivos generados por la compilación de la primera etapa.
- Automatización de pruebas de integración y aceptación.
- Pruebas no funcionales (usabilidad, seguridad, rendimiento).
- Pruebas manuales de usuario.
Al igual que en la etapa anterior, si algo llegase a fallar, el pipeline se debe detener y la falla debe ser reportada al equipo de desarrollo para que sea corregida lo antes posible y volver a ejecutar el pipeline desde el primer paso.
Esta etapa se puede repetir en cada uno de los entornos que el negocio crea necesario, tratando de que cada uno de los ambientes sea muy parecido al ambiente productivo y así garantizar la mejor calidad en el producto.
Tercera etapa: Despliegue a producción
Por último, si la etapa de integración y la etapa de entrega en uno o más entornos fueron satisfactorias, se procederá al despliegue en producción, en donde se realizan las siguientes tareas:
- Despliegue de los archivos generados por la compilación de la primera etapa.
- Validación de nuevas funcionalidades.
- Validación de funcionalidades anteriores.
Posible paso adicional
En el paso por los ambientes pre-productivos y productivos es posible agregar una pequeña etapa o paso adicional, en la etapa del despliegue, para gestionar las aprobaciones, esta es una práctica clave de DevOps (la liberación es una decisión comercial), donde el código desarrollado siempre se encuentra listo para ser desplegado a producción, pero sólo se libera cuando el negocio lo considere necesario.
Siguiendo esta serie de ideas de un pipeline bien estructurado por etapas, se tendrá un producto de calidad en producción.
Ventajas
Tener estas etapas automatizadas conllevan a las siguientes ventajas:
- Acelerar la entrega de cambios a producción.
- Mejorar la calidad del producto en ambientes productivos.
- Mejora los tiempos de recuperación de un ambiente productivo que presente fallas o donde se encuentren errores.
- Dejar registros y logs constantes que permitan el monitoreo y mediciones de cada una de las etapas para una mejora continua.
- Disminuir el desperdicio de talento, donde el equipo de desarrollo y personal de operaciones no estarán realizando tareas repetitivas y podrán estar asignados a tareas que generen más valor a la compañía.
El informe “State of DevOps 2019” realizado por DORA y Google Cloud, realiza cada año una investigación y recolección de datos de profesionales por todo el mundo, permitiendo clasificar las empresas en:
- Elite
- Alto
- Medio
- Bajo
Teniendo en cuenta los siguientes aspectos del rendimiento de la entrega de software:
- Frecuencia de despliegues
- Tiempo de carga o espera para cambios
- Tiempo transcurrido para restaurar un servicio
- Tasa de falla de los cambios
En este informe se dan a conocer las grandes ventajas que se pueden lograr adoptando la cultura DevOps y siguiendo sus principios como el de tener un pipeline de despliegue automatizado.
Para las empresas clasificadas con un rendimiento Elite, se evidencian los siguientes resultados:
- Despliegues de código 208 veces más frecuentes.
- Tiempos de entrega 106 veces más rápido desde el commit hasta el despliegue.
- Tiempo para recuperarse de incidentes 2604 veces más rápido.
- Tasa de fallos de cambios 7 veces menor.
https://devops.com/the-state-of-devops-report-2019-is-out/
La imagen de portada fue tomada de: Computer vector created by upklyak – www.freepik.com
Mantente al tanto de nuestras publicaciones a través de nuestras redes sociales: LinkedIn, Instagram y Twitter.
Referencias
https://services.google.com/fh/files/misc/state-of-devops-2019.pd