6 minute read
DevOps: un camino necesario
Mejorar la agilidad y eficiencia de los procesos El camino que conduce hacia la agilidad y eficiencia basándose en DevOps comienza en la definición de un gobierno que establezca las bases para, a partir de ahí, ir iterando en el proceso a través de la automatización de tareas. Esta iteración debe ser contante, ya que siempre vamos a encontrar la forma de hacer más eficiente el camino critico que debe recorrer nuestro software hasta llegar al cliente.
Basándonos en una definición canónica de DevOps se podría decir que este concepto es una metodología de desarrollo de software cuyo pilar fundamental es mejorar la relación entre los equipos de desarrollo y los de sistemas, de tal forma que permita a los desarrolladores centrarse en lo que mejor saben hacer: escribir software de calidad y que, además, se pueda desplegar de una forma rápida y sencilla. Aunque no parece muy complicado, en muchas organizaciones esta metodología llega a producir verdaderos quebraderos de cabeza sin que tan siquiera lleguen a acercarse a un modelo de integración continua. En la mayoría de los casos, esto se debe a que es necesario llevar a cabo un cambio cultural muy importante dentro de la organización. De hecho, un error común es pensar que lo relacionado con la parte técnica va a solucionar todos los problemas que se presentan a la hora de adoptar DevOps. Sin embargo, uno de los puntos clave en estos procesos es preparar a la organización para el camino que hay que recorrer.
Advertisement
INICIO DEL CAMINO
En muchos casos, el planteamiento de cambio se produce cuando la organización no es lo suficientemente ágil para poner en producción las aplicaciones que le demanda el mercado o Negocio. Otro añadido son los problemas que se encuentra el software una vez que empieza a ser utilizado por el usuario final. Para resolver estos retos, lo primero que se intenta es actuar sobre la agilidad y la calidad, dos de los puntos que la metodología DevOps promete mejorar. De esta forma, al inicio de este camino es muy importante revisar cuáles son las debilidades de los procesos y su nivel de madurez: » El tiempo de entrega del producto es demasiado alto.
*Es recomendable
establecer proyectos piloto muy acotados, en los que se utilicen los principios a adoptar
» La calidad no es la adecuada. » Se demandan continuos cambios por integraciones erróneas debido a la falta de comunicación entre equipos. » El producto no se adapta a las necesidades reales. Una vez identificados los problemas, hay que aplicar los cambios necesarios para subsanarlos, y aquí es donde entra la metodología DevOps. Hay que tener en cuenta que se trata de un proceso iterativo, y que no se puede llegar a la implementación total de la noche al día. La madurez del proceso actual se toma como pilar fundamental del tránsito hacia la nueva metodología. Si ya se siguen una serie de políticas —como el mantenimiento del código fuente (SCM), revisión de buenas prácticas, gestión de despliegues, etc.—, el camino será mucho más corto y menos accidentado. En cualquier caso, no resulta fácil contar con un grado de madurez lo suficientemente alto como para poder adoptar este tipo de metodologías sin realizar un esfuerzo importante. Teniendo en cuenta todo esto, lo ideal es abordarlo siguiendo una serie de fases.
MEJORA DEL PROCESO
Lo más recomendable es establecer proyectos piloto muy acotados, que empiecen a utilizar los principios que queremos adoptar. Esta fase es conocida como crawl, empezamos gateando: » Gestión de tareas (kanban para DevOps). Permite conocer qué se está haciendo, el estado en el que se encuentra el proyecto y las interacciones con otros elementos del equipo. Facilita la agilidad del proceso. » Automatizar tareas. En este primer estadio se busca automatizar las tareas más sencillas que se suelen realizar durante el proceso de desarrollo del software. Estas tareas se reutilizarán y mejorarán en fases posteriores. » Medir los procesos. Es vital conocer el estado de todos los elementos que intervienen dentro del desarrollos de software, para iterar y poder mejorarlo. » Coordinación de equipos. Todos los equipos involucrados deben estar alineados en cuanto al modo en el que se va a ejecutar el proceso. Es necesario definir los roles y responsabilidades de cada uno, aclarando qué tareas va a ejecutar. También es muy importante definir las interfaces de los equipos de trabajo, con el fin de ayudar a que la interacción entre equipos sea mucho más fluida. Estos cuatro puntos deben establecerse de forma muy sólida, ya que son los pilares sobre los que se va a construir el nuevo edificio. A partir de aquí, los pasos para empezar a “gatear” son los siguientes: » Onboarding. Es necesario que los equipos de proyecto conozcan la forma de trabajo dentro de la organización. Aunque pueda parecer obvio, en la práctica esto suele generar ineficiencias. » Estandarizar la gestión del código fuente. Es habitual que, dentro de la misma organización, cada grupo gestione el código de las aplicaciones de forma muy diversa. ¿Por qué gastar esfuerzo en varios procesos que realizan la misma tarea? » Estrategia de ramas. Es necesario hacer un estudio de las distintas tecnologías e implementar una estrategia de ramas adecuada para cada caso. Sobre ella se construirán los pipelines de despliegue. » Documentar el error. Dado que no se van a poder evitar los errores, es necesario utilizar herramientas para saber quién está haciendo qué. Esto permite optimizar el proceso, pues disminuye la posibilidad de que se cometa el mismo error en las siguientes etapas, y facilita la automatización de tareas. » Pruebas, pruebas y pruebas. Es fundamental definir la estrategia de pruebas automáticas, ya que ello agilizará el chequeo de modificaciones en el futuro. Además, esta herramienta asegura que lo que se va a desplegar está probado. » Chequeo de la calidad de código. Si se utilizan las mejores prácticas y estándares de desarrollo, se estará ganando en agilidad y eficiencia. Es posible automatizar estos chequeos estableciendo un histórico de evolución del código, asegurando que el producto que se entrega cumple con la calidad que espera el cliente. » Monitorización. La potencia sin control no sirve de nada. Es muy importante establecer mecanismos de revisión, tanto de la plataforma como del producto que vamos a realizar.
Jesús Chicharro Gallego
Principal Consultant
TECHEDGE
techedgegroup.com
GOBIERNO
Hasta ahora no se ha nombrado la palabra gobierno, pero sí se han definido una serie de pautas que son las que conforman el gobierno DevOps dentro de la organización. Esto es lo que va a permitir recorrer, de la forma menos traumática posible, el camino hacía el mundo de la entrega continua. Ya se ha definido cómo trabajar, ahora hay que empezar a andar, es decir, a aumentar la eficiencia de los procesos iterando sobre la automatización de tareas. Normalmente, aquí empezaríamos a hablar de herramientas de integración/entrega continua (CI/CD), monitores de calidad, repositorios, integraciones, pipelines, builds. Sin embargo, donde hay que poner el foco es en las tareas que se encuentran dentro del camino crítico dentro del proceso. Estas tareas son las que hay que factorizar y automatizar, y esto se realiza apoyándose en herramientas, y no al revés.