NoticiasDevOps

DevOps: un tándem para el cambio cultural

Isaías Reina, Presidente de Business Agility Corporation, habla de DevOps como una filosofía de trabajo que surge a partir de los DevOps Days, organizados por Patrick Debois en Gante en 2009, que busca que equipos multidisciplinares (Desarrollo/ Producción) trabajen conjuntamente para desarrollar y entregar software de calidad de forma rápida y frecuente.

Es importante resaltar que, como tal filosofía, existen diferentes visiones con respecto a cómo aterrizarla. No ocurre como con Agile, donde existe el Agile Manifesto, aquí existen una serie de principios, que pueden variar dependiendo de la fuente que tomemos. Si vamos a DASA (Devops Agile Skills Association) son seis principios; otros autores como Gavin Davies hablan de cuatro. En mi caso, me parece más adecuado plantear los siguientes cinco principios: 

  • Cultura: Lo primero son las personas y los procesos.  Las herramientas vienen después. 
  • Automatización: Una vez establecida la cultura DevOps, hay que establecer una serie de herramientas relacionadas entre sí que automaticen el ciclo de entrega de las soluciones. 
  • Medición: Monitorización del comportamiento todo el ciclo de software lo más frecuentemente posible, como entrada a un ciclo de mejora continua. 
  • Colaboración: Compartición de ideas y problemas, como base para la creación de una cultura colaborativa. 
  • Iterativo: Aproximación a la solución final por iteraciones. 

¿Y qué constituye DevOps? Podemos decir que es un conjunto de buenas prácticas que permiten acelerar la entrega de valor al cliente, sea externo o interno.  Para ello, en nuestra experiencia desde la Asociación, debe ser combinado con prácticas que inciden en las actividades de diseño de la solución, así como en el desarrollo de la misma. De esta forma se consigue que el ciclo end to end de entrega de valor al cliente sea más eficiente, se mejore el time to market y se haga además con una mejor calidad. Es por eso mismo que en una transformación organizacional se recomienda aplicar no solo DevOps, sino también Design thinking, Scrum, Lean Startup y Kanban. La combinación de todos ellos permite entrar en una dinámica virtuosa de trabajo, que permite que el ciclo de entrega de soluciones a clientes mejore de forma integral.  Las prácticas de DevOps se sustentan en un conjunto de herramientas, procesos y funciones que facilitan la participación y colaboración, a la vez que varían en función del enfoque que se plantee y del ámbito desde el que sea analizado.  Algunas de las más relevantes son las siguientes:

  • Planificación continua: Alineamiento continuo con los objetivos de negocio, trazabilidad y visibilidad, gestión del backlog y planificación de releases. 
  • Desarrollo colaborativo: Builds automáticas, radiadores de información, TDD, BDD, Pair programming, Versionado de todo tipo de elementos (código, middleware, entornos, etc) y gestión de la deuda técnica. 
  • Pruebas continuas: Provisión automática de datos, Versionado de entornos, Recreación automática de cualquier versión de un entorno, Automatización de pruebas de todo tipo (Unitarias, Funcionales, Integración, Rendimiento, seguridad, etc) y Shift-left. 
  • Despliegue y entrega continua: Automatización de las tareas de integración (CI) y de despliegue (CD) que posibiliten el delivery continuo (lo que implica que el software está siempre listo para ser entregado), Infraestructura como código, patrones de infraestructura, portal autoservicio y Canary Release. Todo esto conlleva que se plantee una forma de hacer software iterativa, que siempre entregue valor y ello es posible gracias al uso de arquitecturas donde las dependencias sean gestionadas en gran medida gracias al uso de API. 
  • Monitorización continua: De rendimiento, capacidad, calidad, uso, seguridad, cumplimiento de objetivos, de todos los elementos que tienen que ver con la solución entregada y los objetivos a alcanzar.  optimización continua, autoescalado de entornos, predicción de potenciales problemas, gestión de eventos, de incidencias, logs, etc. 
  • Feedback continuo y optimización: Análisis del comportamiento y experiencia del cliente, mejora continua de procesos, análisis de utilización de las capacidades entregadas, de forma que todos estos datos puedan ser incorporados al backlog de nuevas funcionalidades que se entregarán en la siguiente reléase del producto. 
Podemos decir que es un conjunto de buenas  prácticas que permiten  acelerar la entrega de  valor al cliente, sea  externo o interno 

No hay que olvidar que desde un punto de vista organizativo tradicionalmente los profesionales de desarrollo están más preocupados por la funcionalidad del software, mientras que los profesionales de operaciones lo están por la estabilidad, disponibilidad y monitorización.  En este sentido, DevOps hace a todas las partes miembros de un único equipo, por eso, y a este respecto, existen diferentes modelos de implantación organizativa. Inicialmente se suelen crear equipos transversales a las funciones de Desarrollo y de Operaciones, que hacen de ‘puente’ entre ambos. En segunda instancia, estos equipos van evolucionando tanto en arquitectura y plataforma, como en funciones, automatizando gran parte de los procesos del ciclo de vida del software, de forma que los equipos de producto son cada vez más autosuficientes.  En un estado final, no es necesario contar con estos equipos, ya que tanto la organización de desarrollo como la de operación han evolucionado en sus funciones, la primera asumiendo prácticamente toda la responsabilidad de llevar la solución hasta la producción, en gran parte gracias a todo el esfuerzo de automatización de actividades y autoaprovisionamiento de capacidades que ha realizado el equipo de operaciones. Estos últimos pasan a una función más de monitorización y mejora continua de la infraestructura y servicios asociados. 

Puede acceder al contenido completo en el Anuario 2018 de Computing

Computing 816