miércoles, 15 de julio de 2015

DevOps al rescate

Motivación/Problemática:

En los últimos años, el desarrollo de software ha cambiado radicalmente, tal vez como nunca antes. La introducción de las metodologías ágiles está modificando la manera en que hacemos y pensamos el software.

Si bien es una realidad que la Agilidad ha acercado sustancialmente al mundo de desarrollo con el mundo del negocio y sus necesidades, y que las entregas incrementales y frecuentes aportan valor de manera sostenida (con todas las ventajas que esto conlleva), también es verdad que este “enamoramiento” entre el negocio y desarrollo ha dejado al descubierto nuevas falencias, o tal vez en realidad solo ha puesto mucho más en evidencia ciertas problemáticas que existían desde siempre.

Aunque las metodologías ágiles pueden ayudar a acelerar el proceso de desarrollo, este es sólo un paso en el largo y complejo camino hacia la verdadera entrega de valor constante y sostenido.

Es que muchas organizaciones, en el afán de generar valor de forma más frecuente, lo único que logran es acelerar el proceso de desarrollo, para luego chocarse con la dura realidad de que llevar esos nuevos desarrollos a producción es un proceso tedioso y burocrático que hace que los nuevos entregables se acumulen en una cola interminable.

Y esto es sólo la parte operativa de la cuestión. Ni que hablar de la tensión y el mal clima que se genera muchas veces entre los equipos de Desarrollo y Operaciones, cuando unos no se sienten comprendidos, valorados o apoyados por los otros.

¿Por qué sucede esto? Por diversas cuestiones, pero si tuviéramos que resumirlas en una sola, esto ocurre porque Desarrollo y Operaciones no tienen un objetivo común.

Mientras los programadores quieren desarrollar y realizar pequeñas entregas lo más rápido posible, de manera de impactar sus cambios en producción de forma frecuente, los administradores de la infraestructura buscan mantener la estabilidad y evitar la disrupción constantemente.

Otro motivo, es la falta de comunicación e interacción entre estos equipos y la consecuente imposibilidad de ponerse en el lugar del otro que esto genera, fomentando la desconfianza y las acusaciones cruzadas ante incidentes o situaciones delicadas.

image

¿Cómo ataca DevOps esta problemática?

Para entender cómo DevOps puede ayudarnos a solucionar esta situación, antes debemos entender que es DevOps.

Algunos dicen que DevOps es un nuevo rol. Otros dicen que es una nueva metodología, mientras que también hay quienes afirman que es una nueva manera de pensar, una especie de “movimiento”. Otros tantos, más bien lo asocian con un conjunto de prácticas y herramientas. Yo creo que DevOps es una mezcla de todo eso, y más. Es una nueva forma de colaboración entre los equipos de desarrollo y operaciones, que por supuesto, involucra nuevos roles o perfiles, con sus respectivos skills, y además es un cambio en la cultura organizacional, y quizás también, en los procesos de la compañía. Y todo esto, soportado por nuevas prácticas y herramientas.

Entonces, podemos decir que DevOps es la práctica de Desarrollo y Operaciones participando juntos en el ciclo de vida completo del proyecto, desde el diseño temprano hasta el soporte a producción.

Si bien DevOps comparte los valores y principios de las metodologías ágiles, donde las personas están por sobre los procesos y las herramientas, lleva todos esos conceptos al siguiente nivel.

image 

Desde esta perspectiva, DevOps simplemente extiende los principios de Agile mucho más allá de los límites del código, alcanzando el proceso de Delivery completo.

DevOps llego para reducir, y en lo posible eliminar, la brecha que hoy existe entre Desarrollo y Operaciones, de manera de incorporar definitivamente la administración de la Infraestructura en la ecuación. Para ello, hace hincapié en conceptos básicos como la comunicación, la colaboración y la integración, entre otras cosas. Si queremos que Desarrollo y Operaciones cooperen como un verdadero equipo, con el objetivo común de satisfacer las necesidades del negocio, entonces es imperativo lograr el involucramiento de Operaciones como actor principal desde el principio de un proyecto, junto a Desarrollo y al negocio, promoviendo una cultura que rompa las barreras existentes y que fomente la visibilidad y empatía entre las distintas áreas. Para lograr esta sinergia necesaria entre equipos, DevOps toma los valores, principios y muchos de los métodos de las metodologías ágiles y los aplica en la administración de los sistemas.

Para conseguir este ambicioso objetivo, DevOps se basa en un conjunto de prácticas, automatización y herramientas. Pero por sobre todo, se basa en que cada uno de los equipos, Desarrollo y Operaciones, reconozca la existencia del otro y trabajen juntos de manera colaborativa entendiendo las responsabilidades y necesidades de cada uno.

Las herramientas disponibles son muchas y muy variadas. Pero aquí, lo importante es que DevOps implica mucho más que implementar algunas prácticas utilizando las herramientas. DevOps implica entender los valores y principios fundamentales que lo conforman y aplicarlos con el convencimiento de que el software no está realmente listo hasta que es exitosamente desplegado en producción y accesible a los usuarios para cubrir sus necesidades reales.

image 

Conclusión

DevOps es un conjunto de conceptos relacionados que promueven la colaboración e interacción entre los desarrolladores y Operaciones para satisfacer las necesidades del negocio.

La iniciativa de DevOps, generalmente, diverge en dos marcadas estrategias:

Algunas organizaciones generan un nuevo rol al que denominan DevOp, que es una especie de mediador y facilitador entre programadores y sysadmins. Estos perfiles DevOp, deben contar con habilidades técnicas mixtas y adicionalmente habilidades blandas como comunicación, resolución de conflictos y liderazgo, más allá de que quizás no terminen ejerciendo autoridad formal sobre los miembros de Desarrollo ni de Operaciones.

Por otro lado, otras ven a DevOps como una transformación en la organización mediante la cual programadores y sysadmins trabajan colaborativamente unos con otros.

Ambas estrategias son válidas y la combinación de ambas quizás se aproxime a la solución ideal, aunque el enfoque definitivo dependerá de las necesidades de cada organización.


Sobre el autor:

Trabajando hace más de 12 años en proyectos de IT como Líder de Proyecto, Project Manager, Scrum Master y Agile Coach, Alejandro Faguaga posee una amplia y variada experiencia en Gestión de Proyectos IT y Metodologías Ágiles.