La implementación de prácticas DevOps en el Ciclo de Vida del Desarrollo del Software proporciona mejoras sustanciales en la construcción y mantenimiento del software. Sin embargo, la experiencia en la adopción de estas prácticas varía según la entidad, influenciada por factores como tamaño, madurez en Agile, modelo de arquitectura o integraciones con sistemas heredados ("legacy").
El objetivo primordial es optimizar el rendimiento de los equipos de desarrollo, introduciendo el concepto de "experiencia del desarrollador" para evaluar la excelencia. Aunque se ha trabajado en proporcionar a estos equipos las herramientas necesarias y medir la mejora en cada cambio, los resultados no siempre son óptimos. Por ejemplo, en organizaciones con varios equipos, la falta de homogeneidad en el ciclo de desarrollo y entrega, así como la diversidad en las herramientas utilizadas, genera complejidades, mantenimiento adicional y repercusiones negativas en costes.
Por otro lado, en organizaciones con un equipo centralizado de DevOps, la "carga cognitiva" de los equipos de desarrollo disminuye debido a una mayor distribución de responsabilidades en la definición del ciclo de desarrollo y entrega, así como en las herramientas asociadas. Sin embargo, esto no evita tensiones entre los equipos DevOps y los de Desarrollo en situaciones conflictivas por falta de entendimiento.
Estas situaciones desvían la atención de la esencia de DevOps, que busca automatizar el ciclo de vida del software (SW) para alinear iniciativas y fomentar la colaboración entre equipos para entregar software de manera más eficiente y menos estresante, imprescindible para poder hacerlo de forma continua.
Un nuevo enfoque DevOps
Emergen nuevas tendencias que buscan transformar el modelo DevOps en un producto empresarial, alejándose de su tratamiento como un simple proyecto. Se adopta el concepto Agile de Producto, enfocándose en la claridad en la interacción entre equipos, capacitación para maximizar la aportación de valor, aumento del flujo de entregas y reducción de la "carga cognitiva" para los equipos de Desarrollo.
La propuesta implica estandarizar la infraestructura, crear interfaces de autoservicio para desarrolladores y dedicar un equipo para mantener todo como una plataforma. Esta evolución se denomina "Ingeniería de Plataforma", y conlleva el cambio del nombre del equipo DevOps a "equipo de ingeniería".
La estrategia consiste en seguir con DevOps, pero cambiando la forma de gestión para hacerla global y con retorno, garantizando la incorporación de las necesidades de los equipos de desarrollo en cuanto vayan surgiendo a través del perfil agile del Product Owner para crear y mantener un producto que resuelva todas sus necesidades y desafíos diarios.
La idea principal es reutilizar las herramientas y procesos existentes para minimizar el impacto inicial. En organizaciones nuevas, se sugiere contratar productos integrados como GitLab o GitHub que ya ofrecen las herramientas necesarias y evolucionar con opciones adicionales de integración con otros productos freemium o de comunidad.
La creación del equipo de Plataforma incluirá a equipos DevOps, Operación/Sistemas/Seguridad existentes, y miembros del equipo de desarrollo convencidos de las ventajas de este cambio. La comprensión de las necesidades de los usuarios, la capacidad para priorizar el trabajo y la construcción de una plataforma útil son fundamentales, a pesar de la dificultad. Se busca que a través de la plataforma los equipos de desarrollo puedan desarrollar y entregar con la cadencia que necesiten, enfocándose en la aplicación en lugar de asumir un aprendizaje creciente de la problemática DevOps.
Para ofrecer un acceso organizado y completo al nuevo producto, se recomienda una "Plataforma Interna de Desarrollo" a través de un portal centralizado. Estudios indican que la creación de una Plataforma Interna de Desarrollo impacta positivamente en la evolución de las prácticas DevOps, al estandarizar un modelo de autoservicio de herramientas y tecnologías para los desarrolladores, reduciendo la carga cognitiva que podría perjudicar su desempeño.
Conclusiones
Empresas como Spotify, Airbnb y Zalando ya han adoptado este modelo, y Gartner predice que para 2028, el 80% de las organizaciones relacionadas con el desarrollo de software contarán con equipos internos de "Ingeniería de Plataforma", ofreciendo servicios internos reutilizables, componentes y herramientas a los equipos de desarrollo para la entrega del software.
¡Descubre las tendencias que están marcando el 2024 descargándote nuestro white paper!
Autor: Iñigo Chaso Rico, Responsable LoB de Industrialización de SDLC en knowmad mood.