DevOps en el sector financiero
El equipo gestor de un fondo de inversión solicita al área de Fintech una app tipo dashboard para consultar información cualitativa, ratios y otras variables cuantitativas sobre los activos en cartera. El equipo gestor tiene una intuición de lo que necesita, pero no puede definir por completo todos los requisitos del producto final. De los datos descritos hay algunos que son más informativos que otros, por lo que algunas gráficas y tablas serán más relevantes que otras. El equipo gestor considera que disponer de una app funcional, aunque inicialmente incompleta, incrementará su competitividad mucho antes que esperar a disponer de una versión completamente terminada.
Es imposible hablar de DevOps sin mencionar Agile y CI/CD. Antes de entrar más en detalle, podemos decir que Agile se centra en el proceso de trabajo realizado por los componentes humanos, CI/CD en el ciclo de vida del software y DevOps en la cultura del equipo.

Figura 1. vista de Agile, CI/CD y DevOps
Agile
Agile nace como contraposición a una visión de desarrollo de software estática y poco práctica que se aplicaba hasta el momento denominada metodología en cascada (Waterfall). Esta visión consistía en que la parte interesada (stakeholder) trataba de definir todo el producto previamente, y la construcción de este se concebía bajo un enfoque secuencial, en el que diferentes equipos especializados se ocupaban de diferentes fases. El área de Fintech realizaba una estimación y, posteriormente, se procedía con la ejecución escalonada sin apenas comunicación con el stakeholder.

Figura 2. Metodología en cascada
Sin embargo, construir software no es como construir una casa. Los requerimientos terminan cambiando con frecuencia, ya sea por nuevas necesidades del cliente o porque durante su creación y mejora aparecen insights que conducen a replantear ciertos aspectos.
Con Agile, por otro lado, el stakeholder y el área de Fintech planifican solo lo suficiente antes de comenzar a formar un producto mínimo viable que más tarde será mejorado o modificado iterativamente a lo largo del desarrollo.
Agile planifica el tiempo en periodos denominados sprints, cuya duración habitual varía entre una y cuatro semanas. En cada una de estas iteraciones se van añadiendo pequeñas piezas de software, o se van modificando las ya existentes. Al final de cada sprint, Fintech y el stakeholder mantienen una reunión retrospectiva en la que se analiza el resultado, y se proponen mejoras o modificaciones estratégicas o funcionales.
*Nótese que se ha asumido Agile con Scrum.

Figura 3. Metodología Agile. Recuperado de: Chronicles
Y claro, Agile saca a relucir un factor que puede ser aprovechado. Si desde el principio se cuenta con un producto mínimo funcional, este puede empezar a ser útil desde dicho momento, aportando valor y reduciendo la ansiedad del cliente. Es por eso que CI/CD nace de forma natural para complementar a Agile.
Continuous Integration and Continuous Delivery
CI/CD es un conjunto de prácticas que automatizan los procesos de construcción (building), pruebas (testing) y despliegue (deploy) del software. A continuación, se desgrana sus dos conceptos:
Continuous Integration (CI): Se fundamenta en herramientas de control de versiones como Git y consiste en integrar frecuentemente cambios de código realizados por los desarrolladores a la rama principal del proyecto (“merge a la rama main”). Tras esta operación de fusión se dispara automáticamente el build y los tests definidos para asegurar que el código siempre se encuentre operativo, y que los potenciales problemas de integridad sean detectados.
Continuous Delivery (CD): Se fundamenta en delivery pipelines que se apoyan en herramientas como máquinas, plataformas de contenedores (Docker, Kubernetes) o servicios serverless, según el caso. Así como CI automatiza el build y los tests, CD automatiza el empaquetado y despliegue. Los equipos que practican CD pueden hacer build, empaquetar el software (Docker) y orquestar su despliegue (Kubernetes) de forma que puede liberarse en producción con un alto grado de automatización y bajo costo.
*Nótese que se ha incluido Continuous Deployment dentro de Continuous Delivery.
Cuando CI/CD se combina con Agile, los cambios llegan a producción con más frecuencia, ofreciendo al cliente la oportunidad de experimentar y dar feedback continuo.
Llegados aquí entendemos como la metodología Agile unida a las prácticas CI/CD dinamizan un proyecto de software, pero todavía las fricciones entre diferentes equipos pueden ralentizarlo. Es aquí donde entra el punto que da título a este artículo.
DevOps
La cultura DevOps busca minimizar las fricciones que se generan entre equipos (Desarrollo, Operaciones, Seguridad, Datos, Machine Learning…) involucrados en el ciclo de vida de un producto de software del “mundo real”. Para ello pretende que los profesionales tengan formación en aspectos propios de otros equipos, lo que se conoce como formación cruzada o cross-trainig. Así, DevOps mitiga el impacto negativo de la excesiva especialización y de una división rígida de funciones. Esto permite dar una respuesta más rápida y eficaz a los problemas que puedan surgir en producción.
*Nótese se ha incluido dentro de la cultura DevOps subculturas como SecOps, DataOps y MLOps.

Figura 4. Representación cultura DevOps. Recuperado de: Medium
Con lo aprendido en este artículo, ahora resulta claro cómo abordar el caso de uso inicial. Con Agile el área de Fintech se centrará en priorizar y entregar primero los módulos más estratégicos, con un feedback continuo del equipo gestor que irá guiando su evolución. CI/CD permitirá la integración automatizada y segura de las nuevas funcionalidades, mientras que una cultura DevOps facilita que expertos de los distintos equipos con una cultura DevOps colaboren sin fricciones, acelerando la entrega de valor.
ENG