Actualmente, muchos profesionales afirman que el DevOps está en crisis, mientras que para otros solo estamos asistiendo a su siguiente evolución natural: Platform Engineering.
¿Qué ha resuelto el DevOps? Antes de la llegada de Platform Engineering
Como hemos visto previamente, la metodología de desarrollo DevOps surge principalmente para resolver los posibles conflictos de intereses entre los equipos de desarrollo y los de operaciones,y acelerar el ciclo de vida del desarrollo de software.
Antes de que existiera la metodología de trabajo DevOps y Platform Engineering, las empresas de tecnología tenían una estructura muy estanca, hasta el punto de que podía existir cierta rivalidad entre los equipos de desarrolladores y los de operaciones, que parecían tener objetivos muy diferentes entre sí. Además, se observaban otros problemas a la hora del desarrollo:
- Falta de comunicación y colaboración entre equipos de desarrollo y operaciones.
- Procesos de integración y despliegue manuales y propensos a errores.
- Falta de automatización y herramientas para facilitar el desarrollo y el despliegue.
- Poca flexibilidad y rapidez en el proceso de desarrollo, debido a las restricciones de las herramientas y las prácticas existentes.
- Problemas de escalabilidad, disponibilidad y seguridad debido a la falta de pruebas y monitoreo adecuado.
- El despliegue de software conllevaba largos tiempos de inactividad.
El proceso de desarrollo de software en muchas empresas era muy lineal y estructurado. El equipo de desarrollo se encargaba de crear y probar el software, mientras que el equipo de operaciones se encargaba de implementar y mantener el software en producción. Estos equipos a menudo trabajaban de manera independiente y tenían poco o ningún contacto entre sí, lo que dificultaba la comunicación y colaboración.
Además, los objetivos y las métricas de éxito de estos equipos eran diferentes. El equipo de desarrollo se enfocaba en completar las funcionalidades de manera rápida y cumplir con las expectativas del cliente, mientras que el equipo de operaciones estaba centrado sobre todo en la estabilidad y la disponibilidad del software en producción. Esto llevaba a una gran tensión entre los equipos, ya que el objetivo del desarrollo parecía entrar en conflicto con el objetivo de las operaciones.
Los equipos de desarrollo son los responsables de implantar nuevas funciones, seguir la demanda del mercado y actualizar constantemente el software. Por su parte, los de operaciones se ocupan de que todo funcione correctamente y de que el entorno operativo no se venga abajo por la introducción de cambios rápidos.
Para entenderlo mejor, pongamos un ejemplo: los desarrolladores estarían más preocupados por la introducción de los nuevos cambios que demanda el mercado para tener un software competitivo y actual, mientras que operaciones se preocuparía más por la estabilidad del sistema y de que sea fiable y seguro antes que nada.
La respuesta a este problema vino de la mano de la implantación de entornos DevOps de desarrollo. La filosofía tras este movimiento se define con tres ideas claves:
- DevOps es una metodología para creación de software; no es un software como tal, ni un código, ni una herramienta más. Se trata de un método de trabajo común para ambos equipos de desarrollo y operaciones.
- DevOps busca la integración entre desarrolladores de software y administradores de sistemas.
- DevOps está pensado para producir software de forma más ágil y en un periodo de tiempo más corto. Esto debe redundar en un producto de más calidad y a un menor coste.
Platform Engineering, la evolución del DevOps
Platform Engineering es un nuevo enfoque de DevOps en el cual las organizaciones crean una plataforma común para aumentar la eficiencia y productividad de sus desarrolladores mediante la implementación de herramientas y características que les permiten automatizar tareas relacionadas con la infraestructura.
- Entre las funciones principales de una plataforma de Platform Engineering se encuentran la configuración del entorno de ejecución, el manejo de la infraestructura de Kubernetes y la implementación del proceso de lanzamiento de software, además de características adicionales como la gestión de secretos, gestión de certificados, pruebas de recuperación ante desastres y ejercicios de ingeniería.
- En la metodología Platform Engineering se ofrece una plataforma de desarrollo interna para todo el equipo que permite crear software de forma ágil en un mismo entorno de trabajo. Esta plataforma de desarrollo interno cubre todas las necesidades de la aplicación durante todo el ciclo de vida, lo cual facilita enormemente las diferentes tareas, a la vez que simplifica los procesos de desarrollo y ejecución en un entorno estandarizado y común.
Algunas organizaciones avanzadas utilizan Platform Engineering para proporcionar servicios en la nube compartidos (conocidos como plataforma SaaS) que ofrecen funcionalidades como facturación, medición, gestión de cuentas en la nube y autorización en la nube para diferentes áreas del negocio.
Esa plataforma de desarrollo interno o IDP es una base tecnológica que tiene su propio equipo de ingeniería y que permite un escenario ordinario para los entornos de desarrollo y operaciones.
Normalmente, al frente de esta plataforma de desarrollo interno se encuentra un equipo de soporte que la configura y actualiza como un producto más, de tal forma que desarrolladores y operadores se limiten a conocer la parte que le atañe a su tarea. Permite un amplio nivel de abstracción y de especialización que facilita el trabajo.
- Por otro lado, Platform Engineering permite que sea operativa en distintos tipos de empresa. Mientras que la filosofía DevOps era útil en grandes empresas como Amazon o Google donde siempre había un talento senior al que consultar, no era práctica en empresas de ingeniería más pequeñas, que no pueden tener un equipo muy amplio que cubra todas las tecnologías.
La herramienta IDP crea un entorno común de desarrollo y el ingeniero puede centrarse en aquella parte de la herramienta que más le interesa para sus fines.
Platform Engineering es la evolución natural del DevOps y en sí encierra principios que la hacen deudora de esta metodología. Por otro lado, es una evolución que ha encontrado en la actual economía cloud un gran aliado