Automatización del Pipeline de Despliegue
Fabio Oquendo
Fabio Oquendo
Desarrollador Angular, .NET DevOps
automatización del pipeline de despliegue

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

Aspects, pipeline de despegue

https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance

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.

The state of DevOps

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

Deja un comentario

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

¿ TIENES UNA IDEA ?

Contáctanos, nos encantará saber de ti.

BLOG

© Copyright 2023 | Castor Evolución Digital | Todos los derechos reservados

Contáctanos