A lo largo de los posts anteriores hemos ido introduciendo el concepto de DevOps y los síntomas que evidencian la necesidad del uso de dicha metodología. Desde un punto de vista práctico, una vez que hemos decidido que queremos implantar una metodología DevOps y tenemos claro qué pasos hay que dar para su implantación, tenemos que determinar qué herramientas nos van a ayudar en nuestro camino en dicha implantación.
Esta fase es precisamente la que voy a abordar en este post, cuál es el conjunto de herramientas más comunes que se utilizan en la implantación de un enfoque DevOps. Quiero aclarar que las herramientas a las que me voy a referir son aquellas que estadísticamente se ha demostrado que ayudan a los equipos y organizaciones a mejorar en su objetivo final de entregar el máximo valor al cliente en el menor tiempo posible.
Y como el proceso de selección de las herramientas puede resultar complejo si no se domina, dedicaré a este tema dos posts. En esta primera parte voy a explicar los conceptos y herramientas metodológicas que nos guiarán en la elección de las herramientas específicas. En la segunda parte indicaré las herramientas que propone Xeridia desde su experiencia para satisfacer dichos conceptos y metodologías y que harán más fácil la implantación de DevOps.
Para adentrarnos en las herramientas metodológicas es necesario primero hacer mención a los tres caminos de DevOps descritos por el autor Gene Kim, que son los que definen los principios que subyacen a la metodología DevOps y explican en gran medida su éxito.
Caminos que definen los principios de la metodología DevOps:
Primer Camino – Systems thinking o Accelerate Flow.
Se ha demostrado que las empresas que implementan este camino reducen los tiempos de ciclo, mejoran la calidad y minimizan los problemas en producción[1].
Este principio lo que busca es reducir los tiempos de ciclo completo de desarrollo, es decir, desde que surge una idea hasta que se entrega al cliente. Este primer camino es el que sienta las bases para la implementación de la entrega continua. De hecho, este primer camino es en realidad un sinónimo de entrega continua.
En este sentido, un concepto fundamental para poder hacer entrega continua es el patrón “Deployment Pipeline” que permite descomponer el flujo de trabajo definido en etapas validadas a través de tests automatizados que aumentan la
confianza según se va avanzando en la pipeline y proporciona feedback inmediato en caso de que se produzca algún fallo. Dentro del principio “Systems thinking” se engloban herramientas metodológicas como son el uso de técnicas de integración continua, testing automatizado y metodologías ágiles como Kanban, Scrum o Lean. El conjunto de herramientas que elijamos deberá adherirse a este principio de manera que una buena herramienta será aquella que facilite que se aumente o acelere el flujo de trabajo desde negocio a cliente, pasando por todas las etapas del ciclo de vida del desarrollo de software y operación.
Como herramienta metodológica principal podríamos tener el “Value Stream Mapping” mediante el cual se visualiza el flujo que sigue el trabajo a través de la cadena de valor desde que se concibe hasta que se entrega.
Ahora bien, si queremos acelerar el flujo primeramente tenemos que conocer dicho flujo, buscar los desperdicios y cuellos de botella para acelerar dicho flujo. En este punto la metodología LEAN y la Teoría de restricciones – TOC es lo que mejor aplican.
También son de especial relevancia en esta etapa los conceptos de “Small Batch Release” y “One Piece Flow” que buscan reducir la complejidad de las entregas y aumentar la frecuencia de las mismas en contra de las big-bang releases (pocas entregas al año de gran tamaño). La aplicación de estos conceptos busca alejarse lo más posible del modelo de desarrollo en cascada o Waterfall. Se ha demostrado que las empresas que adoptan estos principios aumentan el número de releases con la consiguiente reducción de los tiempos de ciclo.
En general lo que se persigue es hacer visible el trabajo, minimizar el trabajo en progreso, eliminar desperdicios y reducir cuellos de botella.
Por lo tanto, las herramientas y métodos de trabajo que seleccionemos serán aquellos que faciliten la adopción de este tipo de principios o conceptos.
Segundo Camino – Amplify feedback loops.
Una vez que hemos acelerado el flujo de izquierda a derecha es necesario recoger el feedback desde el cliente hacia abajo en la cadena de valor lo mejor y más rápido posible.
En este punto herramientas de monitorización, telemetría, comunicación con los clientes, establecimiento de SLAs, etc. adquieren vital importancia.
El objetivo es conocer inmediatamente como está operando nuestro servicio a todos los niveles la entrega de valor. A todos los niveles quiere decir tanto a nivel operativo de máquinas como de satisfacción del cliente.
Aquí se requieren herramientas que sean capaces de capturar información y generar conocimiento. Esta base de datos de conocimiento será de vital importancia para la mejora del sistema.
Este segundo camino supone que todos los implicados tengan accesible el conocimiento adquirido en el momento que se necesita.
Tercer camino – Culture of Continual Experimentation and Learning.
El tercer camino es más un cambio cultural completo de la organización desde el punto de vista de la colaboración y la mejora continua a través de la constante experimentación y el aprendizaje derivado de esa experimentación.
En este aspecto las herramientas que elijamos deben fomentar este espíritu de experimentación abordando el punto clave que es el blameless culture. No se puede experimentar cuando existe miedo al fallo. Solo cuando estamos seguros de que los experimentos no van a tener consecuencias negativas es cuando podemos experimentar libremente.
Desde este punto de vista adquiere un papel relevante el concepto de resiliencia por el cual lo importante no es cometer fallos sino ser capaz de recuperarse y aprender de ellos.
El uso de blameless postmortems será una herramienta de gran utilidad para la resolución de problemas y el aprendizaje derivado de ellos.
Aparte de los blameless postmortems el uso sistemático de retrospectivas es conveniente para analizar el proceso e identificar posibles mejoras en el mismo.
En este sentido, la metodología Lean Startup está muy alineada con los conceptos de aprendizaje validado a través de la experimentación.
Terminando…
Ya hemos definido a grandes rasgos los procesos y metodologías que deben soportar nuestras herramientas para facilitar la adopción de un enfoque DevOps. Resumiendo, las principales características que tienen que tener estas herramientas son las siguientes:
- Favorecen la visualización del flujo de trabajo
- Hacen posible acelerar el flujo de trabajo
- Aumentan la colaboración dentro de la organización
- Permiten acumular el conocimiento y hacerlo disponible para quien lo necesite
- Amplifican el feedback desde el usuario hasta el negocio.
- Proporcionan feedback del estado de los entornos de producción.
- Dan soporte a las principales metodologías ágiles.
- Soporte el patrón de “Deployment Pipeline”
En el siguiente post veremos cómo la plataforma ORBIS de Xeridia da respuesta a todos estos elementos, lo que hace perfecta para una implantación de la metodología DevOps dentro de la organización. Mientras, si quieres puedes conocer más detalles sobre ORBIS.
Emiliano Sutil es Project Manager en Xeridia
[1] Fuente: 2019 State of DevOps Report