Entendiendo los pilares básicos de DevOps y el camino hacia la madurez y la trazabilidad End to End
19 Jul 2022
La palabra DevOps está de moda desde hace tiempo, pero como sucede con estos términos y más siendo algo amplio, su significado se desdibuja y no se define del mismo modo en todas las esferas. Además, son muchas las organizaciones que aseguran estar implementando DevOps pero se encuentran todavía lejos de la madurez. ¿Y en qué punto podemos hablar de madurez? Podríamos decir que una organización ha alcanzado un nivel alto cuando cuenta con entornos DevOps End-to-End o extremo a extremo. A continuación, veremos una breve definición de DevOps, para tener una idea unificada de a qué nos referimos con este concepto, a la vez que veremos en qué consiste la trazabilidad End to End y cómo podemos llegar a implantar todo esto en las compañías.
Definiendo DevOps
Podemos definir DevOps como un conjunto de buenas prácticas que buscan acelerar la entrega de aplicaciones. Es decir, agilizar el proceso, de modo que se reduzca el tiempo transcurrido desde que surge una necesidad de negocio hasta que ésta se convierte en un software en producción. Todo esto, asegurando la calidad del software, pues no se trata tan solo de velocidad sino de calidad y poniendo el foco en la comunicación, colaboración e integración de los grupos participantes: desarrollo, operaciones, calidad, etc. Por tanto, DevOps no es en realidad una metodología, sino un conjunto de buenas prácticas que recoge elementos de muchas áreas distintas (metodologías ágiles, Lean, ITIL, etc.).
Cuando en una organización se implanta DevOps se actúa fundamentalmente en 3 puntos clave:
- Procesos. En muchas organizaciones, cada grupo realiza los procesos de manera distinta. Por eso es importante homogeneizarlos y optimizarlos, para después poder comenzar a automatizar.
- Personas. En el ciclo de vida del software intervienen distintas personas y grupos. En muchos casos, los grupos de trabajo forman silos en los que la información no se comparte. Por eso es importante mejorar la comunicación, romper los silos e incluso crear equipos de trabajo multidisciplinares.
- Herramientas. Aunque a veces se piensa en DevOps simplemente como automatización, estas herramientas son solo un pilar más. No será útil contar con un gran número de herramientas si no se ha trabajado sobre los procesos y las personas antes. Estas herramientas, además, deberán de servir a la automatización en dos sentidos: automatización de aspectos técnicos (compilación, despliegues, pruebas, etc.) y automatización de aspectos organizativos (flujos de trabajo, gestión de las entregas, comunicación, etc.). Estas últimas serán fundamentales para alcanzar el nivel más alto de madurez de DevOps y hacer posible la trazabilidad E2E.
Disciplinas que pueden incluirse en DevOps
Las diferentes disciplinas en las que puede incorporarse DevOps dentro de las compañías, entre otras, son:
- Gestión automatizada de los repositorios de versiones de software.
- Construcción automatizada (para la compilación automática).
- Integración continua (CI): construcción, análisis de la calidad estática del código, pruebas unitarias, despliegue en repositorio de artefactos.
- Despliegue automatizado: entornos previos y producción.
- Pruebas automatizadas.
- Entrega continua.
- Despliegue continuo.
- Control automatizado de la seguridad del software.
- Infraestructura como código, aprovisionamiento automatizado de infraestructura.
- Trazabilidad End to End del ciclo de vida del software.
Además de lo anterior, podemos marcar como extras la posibilidad de automatizar aspectos como la configuración de nuevas aplicaciones en la plataforma DevOps. También el onboarding de desarrolladores (que de forma manual requiere numerosas altas y tareas), el onboarding de productos o la creación automatizada de entornos locales de desarrollo.
¿Qué es la trazabilidad End to End en DevOps?
A día de hoy muy pocas organizaciones tienen automatizada la trazabilidad. Es decir, un sistema que grabe todo lo que ocurre durante el ciclo de vida del software para poder hacer auditorías sobre cualquiera de sus puntos. Cuando hablamos de trazabilidad de extremo a extremo nos referimos a poder trazar los requisitos que han nacido de una necesidad de negocio concreta, con el software que va a automatizarlo y todo el proceso que ha seguido dicho software desde su desarrollo hasta su implantación en producción:
- Desarrollo, pruebas unitarias y análisis de calidad.
- Despliegues en los diferentes entornos de pruebas.
- Pruebas realizadas y evidencias de las mismas: funcionales, de rendimiento, de regresión, etc.
- Aseguramiento de la seguridad del software.
- Despliegue en producción.
- También lo relativo a la infraestructura necesaria y el escalado de la misma.
De todo este proceso se guardarán trazas con fines de auditoria de todo lo que ha ocurrido y quién ha estado implicado. Gracias a esto, si hubiese cualquier error o incidencia con el software sería mucho más sencillo saber qué ha ocurrido. También podremos tener información sobre a qué funcionalidades de negocio podría afectar un determinado fallo técnico, o conocer el coste o el tiempo que va a implicar un cambio en las funcionalidades o una corrección de un error. Es decir, que se facilita en general el proceso de auditoría.
Ventajas de contar con un sistema automatizado para la trazabilidad
Las principales ventajas de alcanzar la trazabilidad en DevOps son:
- Reducción de costes.
- Ahorro de tiempo.
- Mejoras en las estimaciones de los cambios en el software.
- Garantía de calidad.
- Mayor facilidad para encontrar el origen de un problema.
- Posibilidad de saber en qué estado del ciclo de vida está un software y en qué entornos está desplegado.
- Mejora de la comunicación entre equipos y participantes.
¿Cómo alcanzar este punto de madurez y llegar a la trazabilidad E2E en DevOps?
Para cambiar algo, lo primero que necesitamos es saber dónde estamos y a dónde queremos ir, para así definir el camino a recorrer. Desde VASS utilizamos un método propio para analizar la madurez DevOps de los clientes, como primer paso, hacia la mejora en la implantación de DevOps. Los distintos pasos a seguir serán:
Analizar el nivel de madurez DevOps actual
Analizaremos los pilares básicos de DevOps: centrándonos en el análisis de 11 disciplinas:
- Configuration Management
- Build Management
- Testing & QA
- Deployment automatin
- Continuous Delivery
- Envinroment Provisioning
- Release Management and Compliance
- Data Management
- Monitoring
- Security
- Teams Organization
Establecer metas realistas y un roadmap hacia la madurez de DevOps
Una vez realizado este análisis, habrá que establecer los niveles de madurez a los que se quiere llegar en el corto, medio y largo plazo. A continuación se definirá el Gap que existe entre la situación actual y las que se quieren alcanzar. Y, con esto, estableceremos el camino a recorrer con un roadmap de iniciativas a implantar.
Un ejemplo de roadmap con distintas posibles iniciativas (que será diferente para cada caso y compañía), podría ser el siguiente:
- Automatización de la gestión de versiones, implantación de un modelo de desarrollo y automatización de las construcciones.
- Implantación de metodologías ágiles, integración continua y despliegues automatizados.
- Infraestructura como código, automatización del aprovisionamiento automatizado y monitorización continua.
- Seguridad continua.
- Automatización de la calidad y las pruebas.
- Continous Delivery para alcanzar la trazabilidad E2E.
- Onboarding automatizado de productos: automatización de la configuración de nuevas aplicaciones en la plataforma DevOPS.
- Creación automatizada de entornos locales de desarrollo.
Es importante tener en cuenta que para alcanzar un alto nivel de madurez y una trazabilidad End-to-End habrá que actuar de manera gradual, acercándonos paulatinamente hacia los niveles más altos. No es algo que se produzca de la noche a la mañana, pero merece la pena trabajar por conseguirlo y mejorar continuamente.