ITSM4DevOps – Qué entendemos por DevOps
En estos tiempos de pandemia que nos ha tocado vivir y que tanto (¿tiempo?) nos está dando de pensar, no quería dejar de pasar la ocasión para poder tener la oportunidad de plantearnos algunas cuestiones y consideraciones que toman cuenta acerca de DevOps.
Al tratarse de un tema complejo en el amplio sentido del término TIC (Tecnología de la Información y de la Comunicación), con muchos vértices y también con muchas aristas en su interpretación, la respuesta a la pregunta… ¿qué entendemos por DevOps? dependerá mucho de a quién se lo preguntemos y lo que entienda, aunque siempre hay quien trata de “arrimar el ascua a su sardina” ????.
Desde el punto de vista de definición lo más objetiva posible, en la propia Wikipedia lo describe como una práctica de ingeniería del software que trata y que tiene como objetivo unificar el desarrollo de software (Dev) y la operación del software (Ops). Sin embargo, creo que la siguiente ilustración muestra de forma más sencilla la triple colaboración y cooperación precisa:
En mi opinión, aunque hay un importante aspecto cultural en la forma de trabajo además de las prácticas, creo que una aproximación cercana podría ser partir de la idea (salvando las distancias) de referenciarlo y aproximarlo como una “metodología” de desarrollo de software. Por lo que si en cualquier organización se quisiera comenzar a trabajar de forma DevOps, puede ser buena idea preguntarse si antes de nada existe una metodología de software definida y si la misma está en utilización, ya que ese mismo podría ser el origen sobre el que ir iterando y evolucionando ese modelo anterior en su conjunto, para lograr, no solo la tan necesaria colaboración, sino más bien que las personas de la organización (de todos los perfiles) se acostumbren a trabajar de igual a igual, de forma conjunta, más plana y abierta.
Hay un extenso y muy interesante artículo que su autor indica como “DevOps Topologies: https://web.devopstopologies.com/“, en el cual aparecen descritos los diferentes modelos organizacionales en torno a posibles topologías DevOps, en el cual, además se proporcionan los pros y los contras de cada uno de ellos e igualmente los anti patrones a tener en cuenta. Por ejemplo, la creación de un nuevo silo más en la organización IT.
A mi modo de ver, con todos los matices, detalles y adaptaciones a cada tipo de organización, es probable que lo más óptimo pasaría por tratar de aproximarse inicialmente hacia el denominado de “COE DevOps” (Centro de Excelencia DevOps) , el cual daría cabida e incorporaría a todos los perfiles para formar un equipo multidisciplinar que pueda comenzar a ser autónomo en el desarrollo, pruebas, puesta en producción y en el mantenimiento de los productos software de la organización (de extremo a extremo), en lugar de la forma de trabajo tradicional en la que unos desarrollan (sin conocer la operación y mantenimiento) y otros operan el software (sin conocer el desarrollo ni su testing).
La evolución de lo anterior sería por tanto el escalado gradual en la propia organización hacía equipos específicos por producto (que no ya de proyecto ????), cubriendo todas las actividades y tareas de principio a fin del ciclo de vida de cada producto software, derivando progresivamente el “COE DevOps” de forma trasversal para procesos y actividades comunes. Por poner algún ejemplo, este es el método y mecanismo que proponen la mayoría de los CSP (Proveedores de Servicios Cloud) en sus frameworks de adopción Cloud.
Y vosotros, ¿qué opináis?
Víctor Fernández
Miembro del Grupo de Trabajo ITSM4DevOps del Comité de Estándares de itSMF España