(Este artículo corresponde a la serie dedicada a DevOps)
Así que decidiste poner en práctica la filosofía DevOps. ¡Genial! ¿Pero…por dónde empezar?
(Si tu respuesta es: “utilicemos Docker!” , buen intento pero…¡Docker NO ES DEVOPS!).
Bueno, volviendo al tema, este post te brindará un mapa y compás para saber por dónde empezar y cuales son los pasos a seguir para convertirte en un cinturón negro en DevOps.
Modelo de Madurez
DevOps y las artes marciales pueden parecer dos áreas completamente diferentes, sin embargo, es posible utilizar la misma analogía dado que el progreso del practicante es medido al ganar maestría paulatinamente en diferentes áreas del arte .
Inspirado en otros modelos de madurez como los de Jez Humble1Libro fundamental en la filosofía DevOps: Continous Delivery por J. Humble y D. Farley., y Scaled Agile Framework 2Artículo referido a como medir tu nivel de DevOps., decidí crear una versión simplificada de estos.
La parte más difícil de utilizar este modelo es ser honestos con nosotros mismos. ¡Sí!, tú y tus equipos de software/IT tendrán que hablar a “Calzón quitao”. Tranquilo, admitir que tienes un problema con la falta de comunicación, la escasez de automatización ó los Bugs encontrados en Producción – es el primer paso hacia la rehabilitación.
Niveles
Cinturón Blanco – Ad Hoc
En el nivel Ad-hoc3Ad hoc esta definido como: “… una solución específicamente elaborada para un problema o fin preciso y, por tanto, no generalizable ni utilizable para otros propósitos.“. Wikipedia – Ad Hoc la toma de decisiones tienden a darse debido a emergencias en Operaciones, Desarrollo o Calidad. Básicamente, para “apagar fuegos”, los equipos en este nivel toman decisiones (para salvar sus traseritos!) que deberían ser temporales, pero que terminan convirtiéndose en implementaciones oficiales. Algunos ejemplos: Creación de Features por presión de algunos clientes, falta de arquitectura de software, parches en la configuración de infraestructura o software en Producción. Así mismo, no se cuenta con ningún tipo de consistencia en la creación y configuración de infraestructura. En esencia: el caos y los comportamientos reactivos reinan el equipo.
La característica principal de este nivel, es la prevalente “Cultura del Dedo” (no me refiero a este dedo: , sino a este otro:
). Escenarios tóxicos como este, donde las acusaciones entre personas o equipos forma parte del día a día, son lo primero que deberá modificarse antes de aspirar a subir de nivel.
Cinturón Amarillo – Repetible
A este nivel se inicia la comunicación transparente entre los equipos, especialmente entre Desarrollo y Operaciones (Development + Operations = DevOps!).
Los procesos más importantes, a pesar de que aún sigan siendo manuales, pasan a ser documentados de manera escrita o en diagramas, para así permitir su visualización para su futura automatización.
De igual manera, el equipo de Desarrollo adquiere la costumbre de crear Unit Tests (Tests Unitarios) como parte de la nueva funcionalidad desarrollada, reduciendo así el testeo manual.
Herramientas empiezan a ser utilizadas para colaborar con las tareas de los equipos y para permitir estandarización. Por ejemplo: se adoptan herramientas de versionamiento de código (Git, svn, etc.) o herramientas para organización de tareas (Trello, Jira, etc.).
Cinturón Verde – Definido
La comunicación es clara y fluida, lo que permite que la toma de decisiones y el resultado de estas sea compartido entre los distintos equipos (lograr la paz entre estos no es una utopía).
Al nivel de los procesos y tecnologías, los equipos consiguen disminuir en gran manera su Deuda Técnica 4Dos referencias: Wikipedia – Technical Debt y este valioso artículo de Enrique Dans. gracias a la automatización de otro tipo de tests como los Tests de Integración, Tests de Aceptación de Usuario (UAT), y Tests de Stress.
Por otro lado, el uso de Infraestructura Como Código5Infrastructure-as-code y Monitoreo en tiempo real permiten que el aprovisionamiento y configuración de infraestructura se conviertan en tareas sencillas y previsibles.
Algo interesante de este nivel es que los equipos podrían realizar deployments a Producción con cada cambio en el código (commit) de manera automática si desearan. Si quieres saber cómo llegar a este punto, no olvides leer Continuous Delivery: Partos sin Dolor.
Cinturón Azul – Deliberado
Bueno, bueno, acá la cosa se pone buena. En este nivel, las decisiones son basadas en métricas, vale decir, que el monitoreo es tan maduro que somos capaces de identificar patrones, tanto en la infraestructura como en el uso de los productos.
El Deployment a Producción es automático con cada cambio en código o infraestrutura. Esta confianza es ganada a través de la práctica el principio llamado Andon Cord6Aprende Lean y Andon Cord (Zero Defects) aquí. el cual les permite asegurar calidad continuamente.
A este nivel, ya no se habla de CI/CD (Continuous Integration/Continuous Delivery) porque estas prácticas están sobreentendidas. Tal y como respirar es inconsciente, las organizaciones que llegan hasta este punto no necesitan negociar tiempo invertido en CI/CD porque está implícito que son parte fundamental del éxito de cualquier proyecto.
Cinturón Negro – Optimizado
Bienvenido a las grandes ligas. En este nivel las organizaciones actúan como lo haría un científico: postulando hipótesis y validándolas a través de experimentos7Wikipedia – Método científico, o en otras palabras, practican Aprendizaje Continuo. Esto permite que el aventurarse a innovar (probar ideas “locas” ) tenga una probabilidad alta de éxito.
Los deployments a producción no causan ningún tipo de interrupción en el servicio, el cual – vale la aclaración – ya cuenta con High-Availability8Wikipedia – High-Availability.
En contraposición al nivel inicial, estas organizaciones utilizan el Caos para mejorar continuamente (Antifragilidad9Lecturas sobre Antifragilidad y el Chaos Monkey de Netflix son altamente sugeridas.).
Nota: Llegar al nivel de Cinturón Negro, no implica que tus problemas se solucionen, sino que tendrás problemas diferentes, por ejemplo: tener a millones de personas protestando por su privacidad, dilemas éticos sobre el uso de Inteligencia Artificial o tener a países restringiendo el acceso a tu portal por considerarlo un peligro para el estado.
Si ya hiciste una evaluación mental del nivel actual en el que se encuentra tu equipo de desarrollo y obtuviste el cinturón blanco, no te sientas mal. En mi primera auto-evaluación, descubrí que ni siquiera tenía un cinturón!
Puesto que cada organización es única, el Modelo de Madurez presentado en este post es una referencia básica para ayudarte a empezar en la jornada DevOps. Encontrarás otros modelos con más detalle que también te ayudarán como los de Solinea y ThoughtWorks.
¿En qué etapa de la jornada DevOps se encuentra tu equipo? ¿Qué cinturón tienen? Deja tus comentarios y preguntas y sigamos ayudando a más equipos a progresar en su camino.
Keep on learning and maturing.
2 comentarios
JJ! Que bueno tu post, lo primero que hice fue comparar donde esta mi equipo con la tabla que presentas. Veredicto: todavia a espacio para mejorar 🙂