Table of Contents
Introducción
Hoy en día, no existe ninguna empresa de éxito que no cuente con DevOps como enfoque para el desarrollo y las operaciones de software. Este conjunto de procesos permite a las empresas coordinar equipos de desarrollo dentro de un proyecto de software. Esto permite crear y mejorar productos de forma más rápida, ágil, flexible y satisfactoria que con los métodos tradicionales de desarrollo de software.
El objetivo de DevOps es la conciencia del equipo de seguir un camino con el fin de aplicar la automatización y las metodologías necesarias para ahorrar tiempo tanto para la empresa como para cada uno de los miembros del equipo de desarrollo. Así se liberan los tiempos de los trabajos mecánicos y los miembros invierten su tiempo en tareas realmente importantes.
DevOps tiene muchos beneficios, reduce los costes, mejora la productividad, facilita la escalabilidad, además de mejorar la comunicación entre el equipo y con el cliente final, software de mejor calidad …
Pero centrémonos en una de las grandes ventajas de DevOps: CI/CD (integración continua/entrega continua). En esta práctica de desarrollo de software, los miembros de un equipo de desarrollo integran el código en la misma ubicación, lo que permite automatizar la entrega de nuevas versiones.
El Despliegue Continuo es la automatización de estas entregas continuas a un entorno de producción. La métrica de la que vamos a hablar está relacionada exactamente con la frecuencia con la que realizamos estos despliegues.
Métricas Data-driven
Medir la efectividad de un equipo dentro de un proyecto es el camino hacia la mejora y finalmente el éxito. Las métricas basadas en datos (data-driven metrics) nos ayudan a medir y monitorizar dicha efectividad.
Hay 4 métricas clave relacionadas entre sí, para evaluar el desempeño dentro de un equipo, según el DORA (DevOps Research and Assessment):
- Mean Lead Time for Changes (MLT)
- Deployment frequency (DF)
- Mean Time to Recover (MTTR)
- Change Failure Rate (CFR)
Nosotros nos centraremos en la segunda, Deployment frequency.
Deployment Frequency
Es una de las métricas (basada en datos) principales de la metodología Agile y representa uno de los principales objetivos de la efectividad de DevOps, CI/CD.
La función de esta métrica es medir la frecuencia con la que desplegamos código a los entornos de desarrollo, test y producción. La frecuencia de despliegue de código puede incluir piezas funcionales de código (incremento de valor, nuevas funcionalidades), mejoras o bugs.
Uno de los objetivos principales de DevOps es realizar entregas continuas de código, más pequeñas, más rápidas y más testeables. De esta manera la frecuencia de despliegue está estrechamente relacionada con la filosofía de entrega continua de DevOps, de ahí la importancia que tiene esta métrica.
Además, ofrece una oportunidad para entender cómo de bien funcionan tus procesos. Ya que, monitorizándola nos puede ayudar a identificar problemas más amplios, como falta de personal en el equipo o procesos ineficientes.
¿Cómo se puede mejorar la frecuencia de despliegue?
Como hemos dicho antes medir la efectividad de un equipo dentro de un proyecto es el camino hacia la mejora y finalmente el éxito. Si nuestro objetivo es ser efectivos y pretendemos tener éxito en un proyecto, debemos mejorar la frecuencia de despliegue.
Dentro de un equipo de desarrollo de software se pueden tomar muchas acciones para mejorar esta métrica.
Por ejemplo, pongamos que queremos llegar a tener una nueva funcionalidad en producción, en una aplicación móvil.
Si el equipo de de desarrollo que está trabajando en dicha funcionalidad no utiliza metodologías ágiles, se complica la CI/CD. Ya que los despliegues se realizan de manera menos automatizada, las tareas no se desglosan en mvps… y por tanto es mucho más difícil mejorar esta métrica. Incluso podríamos llegar a pensar que no tiene mucho sentido hablar de frecuencia de despliegue. Por lo que, el primer paso para mejorarla o más bien empezar a usarla, es ser un equipo Agile.
Volvamos al ejemplo. Pongamos que somos un equipo de desarrollo que usamos Agile.
A la hora de desglosar la funcionalidad en tareas, se debe hacer un trabajo exhaustivo en el refinamiento de cada una de ellas. En este punto entra la concienciación de todo el equipo y se debe tener muy claro qué queremos conseguir y cuál es el camino a seguir, en este caso, para seguir las formas de DevOps con CI/CD.
Por tanto, si el equipo está concienciado de que éste es su camino, mayor grado de conciencia tendrá a la hora de realizar el refinamiento de las tareas. Por lo que irán apareciendo tareas a su vez más pequeñas de las tareas iniciales, y cada una de ellas aportando valor, es decir, llegar al minimum value product, MVP.
De esta manera conseguimos directamente, que se vaya abordando la funcionalidad general de manera totalmente particular con cada tarea, y podemos ir desplegando cada MVP en producción de manera continua conforme avanza el proyecto.
Esta es una de las maneras de mejorar la frecuencia de despliegue dentro de un equipo de desarrollo de software.
Además, cabe comentar otro de los grandes pilares de la CI/CD y que, por tanto, ayuda a mejorar la frecuencia de despliegue es tener una suite de test confiables. ¿Qué significa esto? Que cada funcionalidad nueva, por pequeña que sea, debe tener sus test unitarios, de integración y funcionales. Con esto, nos aseguramos de que el proceso de integración continua tendrá una fiabilidad alta y con ello, estar seguros de que no rompemos nada, cada vez que realizamos un nuevo despliegue, y al final de todo esto, podremos realizar despliegues con mayor seguridad, fiabilidad y facilidad.
Accelerate State of DevOps
Cada año Google Cloud’s DevOps Research and Assessment (DORA) publica su informe “Accelerate State of DevOps”. Este informe ofrece información sobre la industria basada en datos que examinan las capacidades y prácticas que impulsan la entrega de software, así como el desempeño operativo y organizacional.
Así pues, como podemos ver en la siguiente tabla, clasifican a los equipos en función de la entrega de su software, si nos centramos en la frecuencia de despliegue:
- Los equipos de élite, realizan deployments de código bajo demanda, múltiples veces al día.
- Los equipos de alto nivel de entrega de software realizan despliegues una vez a la semana o una vez al mes.
- A nivel medio una vez al mes o cada 6 meses
- Y a niveles bajos menos de una vez cada 6 meses.
Conclusiones
La frecuencia de despliegue es una de las métricas basadas en datos de mayor importancia.
Realizar entregas continuas diarias, más pequeñas, significa mayor facilidad para tests, despliegues, y Roll back si algo falla , por lo que caen también el Change Failure Rate y el Mean Time to Recover, aumentando así la disponibilidad.
Una frecuencia de despliegue alta, despliegues diarios bajo demanda, indica un nivel de madurez Agile del equipo de desarrollo. Esto está estrechamente relacionado con el objetivo principal de DevOps y con sus respectivos beneficios. Por ello si una empresa quiere alcanzar objetivos basados en datos es muy importante la medición de esta métrica entre otras.
Author
-
Technical Engineer in Computer Management with training in Web Design and Bioengineering. More 10 years of experience as a Fullstack Developer, the last 6 of them in Java environment. He brings knowledge in software design and development, projects for clients from different sectors, small team management and small team management and agile methodologies. Experience in automated testing and code quality review.
Ver todas las entradas