Última

Ingeniería de plataformas: agilidad y DevOps

Compartir esta entrada

La aparición de plataformas

¿Qué tienen en común Deezer, EasyBourse, Spartoo, Photoweb y Molotov, además de ser clientes de Iguana Solutions?
Todos estos servicios son populares servicios en línea que utilizamos a diario. Pero entre bastidores, estos servicios dependen de una plataforma para funcionar.

Una plataforma reúne todas las piezas del puzzle que necesita una aplicación para funcionar. Esto incluye recursos de infraestructura como servidores, almacenamiento y redes, así como recursos del sistema como el sistema operativo, lenguajes de programación y bibliotecas de aplicaciones. Las plataformas también incluyen recursos de supervisión y observabilidad, que ayudan a garantizar que la aplicación funciona sin problemas y que cualquier problema se identifica y resuelve rápidamente.

Para implantar plataformas, los equipos técnicos utilizan métodos ágiles y herramientas DevOps. Estas herramientas automatizan y agilizan el proceso de desarrollo y despliegue, facilitando la entrega de nuevas funciones y actualizaciones de las aplicaciones.

La llegada de los proveedores de cloud ha facilitado la gestión de plataformas. Los proveedores de Cloud ofrecen una gama de servicios gestionados que pueden utilizarse para automatizar y simplificar el proceso de gestión de plataformas. Esto libera a los equipos técnicos para que puedan centrarse en otras tareas, como el desarrollo de nuevas funciones y aplicaciones.

En el pasado, el desarrollo de software era un proceso lento y laborioso. Los equipos pasaban meses trabajando en un solo proyecto y luego tenían que esperar a que se aprovisionara la infraestructura para poder desplegar su código. Esto provocaba largos ciclos de publicación y falta de agilidad.

Hoy en día, gracias a DevOps, los métodos ágiles y cloud, la entrega de software es mucho más rápida y frecuente. Los equipos pueden ahora desplegar su código varias veces al mes, o incluso varias veces al día. En el resto de este artículo, veremos cómo estos factores han contribuido a la aceleración de la entrega de software.

 

Rapidez frente a corrección

El despliegue rápido es esencial para productos con un gran impacto en el usuario, como las aplicaciones SaaS plataformas de streaming de vídeo o música y plataformas móviles. Los despliegues frecuentes permiten obtener información inmediata sobre el uso de nuevas funciones o su impacto en el rendimiento general, así como actualizaciones periódicas de la seguridad de la aplicación.

Implantar rápida y correctamente es posible cuando los equipos técnicos son pequeños. Sin embargo, mantener la misma velocidad de despliegue y gestión de la plataforma se vuelve más complejo a medida que las empresas crecen en tamaño. Esto se debe a que hay más personas implicadas en el proceso y a que la web técnica stack se vuelve más compleja..:

 

¿Cómo mantener la misma velocidad de despliegue y gestión de plataformas cuando hay varios equipos de desarrollo?

Añadir más personas a un equipo no conduce necesariamente a una mayor productividad. De hecho, a menudo puede aumentar la jerarquía, la complejidad y las dependencias entre equipos. Esto puede dificultar el mantenimiento de un ritmo de entrega rápido.

La ingeniería de plataformas es un concepto que pretende dar respuesta a este reto. La ingeniería de plataformas busca simplificar el consumo de plataformas por parte de los desarrolladores, dándoles mayor autonomía. Para ello, se racionaliza la arquitectura, el diseño, el despliegue y el mantenimiento de las plataformas dentro del ecosistema de una empresa.

La ingeniería de plataformas puede ayudar a mantener la misma velocidad de despliegue y gestión de plataformas incluso cuando una empresa crece y añade más equipos de desarrollo. Esto se debe a que la ingeniería de plataformas reduce la necesidad de coordinación y comunicación entre equipos, y facilita a los desarrolladores la obtención de los recursos que necesitan para desplegar sus aplicaciones de forma rápida y sencilla.

 

Límites de DevOps

A medida que los principios DevOps se adoptan de forma más generalizada, es importante ser consciente de las limitaciones y retos asociados a este enfoque. Uno de los mayores retos es la proliferación de herramientas. Ahora hay cientos de herramientas DevOps diferentes disponibles, y puede ser difícil elegir las adecuadas para las necesidades específicas de una organización. Además, la integración de estas herramientas puede ser compleja y llevar mucho tiempo. A menudo es necesario que los equipos escriban código o secuencias de comandos para conectar las herramientas entre sí. La responsabilidad de mantener este "pegamento funcional" suele recaer en los equipos de operaciones.

Figura: El trabajo de operaciones hoy, poco visible

Para que los equipos de desarrollo puedan hacer su parte del trabajo en el lado de la infraestructura, es necesario redefinir la relación entre Dev y Ops.

La clave está en centrarse en lo que es esencial para las necesidades de la organización y ofrecer sólo lo que los desarrolladores necesitan. Esto significa evitar las herramientas de moda que no añaden valor real o que no están alineadas con los objetivos de la organización.

 

Plataforma como producto

La ingeniería de plataformas es un enfoque de la gestión de plataformas orientado al producto. Esto significa que los ingenieros de plataformas se centran en ofrecer herramientas y plataformas que aporten valor a los desarrolladores, y utilizan ciclos continuos de retroalimentación para mejorar sus productos. Los ingenieros de plataforma también se centran en la experiencia del desarrollador (DX), que es similar a la experiencia del usuario (UX) específicamente para desarrolladores. Quieren facilitar a los desarrolladores el uso de sus plataformas y resolver los problemas habituales a los que se enfrentan.

Para diseñar y ofrecer fácilmente plataformas listas para usar a los desarrolladores, los ingenieros de plataformas recurren a una herramienta llamada Plataforma Interna para Desarrolladores (IDP). La IDP es un catálogo de plataformas predefinidas entre las que pueden elegir los desarrolladores. Los ingenieros de plataforma desempeñan el papel de jefes de producto o propietarios de producto para sus plataformas, y trabajan con los desarrolladores para garantizar que la IDP satisface sus necesidades.

Este modo de funcionamiento da más autonomía y libertad a los desarrolladores. Los desarrolladores pueden consumir recursos libremente, mientras que los equipos operativos permanecen serenos, ya que las normas de uso y seguridad están predefinidas y se respetan a través del IDP. Los equipos operativos disponen de más tiempo para ayudar y formar a los desarrolladores, y pueden centrarse en diseñar nuevos productos para la empresa. El IDP se convierte en el centro de los intercambios entre técnicos, y es un producto real que vive y crece con el departamento técnico.

 

¿Cuándo debe plantearse la ingeniería de plataformas?

La ingeniería de plataformas debe considerarse cuando la organización existente no satisface plenamente a las distintas partes interesadas de la empresa.

Los signos de tales problemas pueden incluir:

  • Fricción y frustración en los equipos técnicos: Esto puede manifestarse como fallos de comunicación, trabajo en silos y falta de confianza entre los equipos.
  • Latencia en los desarrollos: Esto puede provocar el incumplimiento de plazos y una disminución de la satisfacción del cliente.
  • Acumulación de deuda técnica: Esto puede dificultar el mantenimiento y la actualización de la infraestructura, con los consiguientes retrasos y problemas.
  • Descenso o estancamiento de la productividad: Puede deberse a varios factores, como la falta de concentración, la ineficacia de los procesos o la obsolescencia de las herramientas.
  • Cualquiersigno de debilidad organizativa: Esto podría incluir una falta de comunicación, una toma de decisiones deficiente o una falta de alineación entre los equipos.

 

La implantación de KPI o indicadores de frustración en los distintos equipos es una forma eficaz de detectar tensiones y problemas organizativos.

Los equipos con entre 20 y 30 desarrolladores suelen ser aquellos en los que estas dificultades organizativas se hacen visibles. Sin embargo, el número exacto de desarrolladores puede variar en función del equipo concreto. Es importante proporcionar el apoyo adecuado a los equipos que están adoptando la Ingeniería de Plataformas, especialmente si están más acostumbrados a un enfoque de "proyecto" que de "producto".

 

Producto frente a proyecto

Tradicionalmente, los proyectos se entregan sobre la base de una lista de tareas con una carga de trabajo estimada y una fecha límite. Este planteamiento puede funcionar, pero limita la agilidad y la flexibilidad. Los equipos suelen enfrentarse a tensiones y frustraciones a medida que se acercan los plazos.

Puede que tengan que elegir entre:

  • Ofrecer una función que no está totalmente terminada, lo que puede frustrar a desarrolladores y usuarios.
  • Entregar con retraso, lo que puede frustrar a ventas, a la dirección y a los clientes.

En cambio, el enfoque de producto se centra en resolver los problemas del usuario. El impacto de un problema en la vida diaria del usuario es más importante que la fecha exacta de entrega de la solución. Los desarrollos se planifican de acuerdo con la estrategia de la empresa para maximizar el impacto en el usuario.

El objetivo es lograr resultados rápidos y tangibles y animar a los usuarios a utilizar el producto de nuevas formas.

Si una función no se ajusta a la estrategia de la empresa o no tiene un impacto significativo en la propuesta de valor, no se le dará prioridad. Es importante tener un margen de tiempo para la disponibilidad de una función, pero no estar limitado por plazos estrictos reduce el estrés en los equipos.

Para implantar la ingeniería de plataformas en las organizaciones, es crucial demostrar las ventajas del enfoque de producto a los equipos de infraestructura y otras partes interesadas.

Estas son algunas de las ventajas del enfoque por productos:

  • Mayor agilidad: Los equipos pueden responder rápidamente a los cambios en el mercado o a las necesidades de los usuarios.
  • Mejora de la calidad: Es más probable que las funciones estén terminadas y probadas antes de su publicación.
  • Reducción del estrés: Los equipos no están bajo presión para cumplir plazos poco realistas.
  • Mayor satisfacción del usuario: Es más probable que los usuarios estén satisfechos con productos que se entregan a tiempo y satisfacen sus necesidades.

Demostrando las ventajas del enfoque de producto, las organizaciones pueden obtener apoyo para la ingeniería de plataformas y lograr mejores resultados.

 

Caso de uso

Para determinar si la ingeniería de plataformas es útil en su caso, hágase las siguientes preguntas:

  • ¿Puede catalogar las plataformas utilizadas en su organización?
  • ¿Las fases de despliegue son frecuentes, o incluso continuas, pero están limitadas por la disponibilidad de los equipos operativos?
  • ¿Están mis aplicaciones diseñadas para cloud (Cloud Native), con arquitectura de microservicios (en contenedores) y tecnologías recientes, lo que facilita su catalogación?

Si no responde afirmativamente al menos a una de estas tres preguntas, es posible que la ingeniería de plataformas no sea la más adecuada para su organización. Sin embargo, aunque no responda afirmativamente a las tres preguntas, es posible que pueda beneficiarse de algunos de los principios de la ingeniería de plataformas, como el enfoque en el producto y el uso de la automatización.

 

Herramientas para crear un PDI

Como ocurre con todo en el ecosistema tecnológico, no existe una herramienta única para crear una plataforma interna de desarrolladores (IDP). Cada organización tendrá que elegir la herramienta que mejor se adapte a sus necesidades.

Una de las herramientas más conocidas para crear un PDI es Backstage.io. Se trata de una herramienta código abierto de código abierto desarrollada por Spotify que proporciona una interfaz para acceder a un catálogo de servicios definidos por los equipos operativos. La ventaja de Backstage reside en su variedad de plugins, lo que la hace muy personalizable y puede integrarse con una amplia gama de otras herramientas.

Para las aplicaciones de microservicios que utilizan Kubernetes, también hay otras herramientas disponibles: 

  • Cápsula, es una herramienta que simplifica la creación de IDPs segmentando los recursos de Kubernetes por "tenant".
  • Qoveryes una herramienta que facilita la provisión de entornos de previsualización a partir de entornos de producción, garantizando al mismo tiempo la seguridad.

Estas herramientas pueden ayudar a mejorar la experiencia de los desarrolladores al proporcionar entornos de pruebas reales sin interrumpir la producción.

La integración de estas herramientas en el ecosistema de una organización puede suponer un reto. Si necesitas ayuda con este proceso, nuestros expertos en gestión de plataformas pueden ayudarte 👉 Ponte en contacto con nosotros para obtener más información.

 

Conclusión

La aparición de las plataformas SaaS ha revolucionado nuestra vida cotidiana. Sin embargo, a medida que las organizaciones crecen y sus equipos técnicos se amplían, puede resultar complicado mantener un ritmo de desarrollo sostenido y eficiente.

La Ingeniería de Plataformas, con su enfoque de producto y herramientas como la Plataforma Interna de Desarrolladores (IDP), simplifica el consumo de la infraestructura necesaria para ejecutar plataformas, fomenta la colaboración entre equipos y mejora la productividad. Sin embargo, la transición a la Ingeniería de Plataformas requiere una adopción gradual y arquitecturas modernas para aprovechar todas sus ventajas. Al reequilibrar las responsabilidades, la Ingeniería de Plataformas estimula la innovación y el crecimiento empresarial, al tiempo que mejora la satisfacción de los equipos técnicos.

 

A tener en cuenta

Ingeniería de plataformas: 

  • Tiene ventaja cuando hay contingencias de entrega (efecto embudo): los equipos de desarrollo esperan a tener acceso a los recursos para probar/entregar.
  • Disciplinar el uso de herramientas Devops para mejorar la experiencia del desarrollador (DX).
  • Utilice el enfoque de Producto para ofrecer Plataformas como Producto a través de Plataformas de Desarrolladores Internos (IDP).
  • Aplicable a plataformas estandarizables, incluidas las plataformas Cloud Native.

 

Compartir en Facebook

Soluciones Iguane

Redactor de contenidos, Iguana Solutions

"El saber hacer de Iguana Solutions nos permitió ser pertinentes en nuestras elecciones técnicas desde el principio del proyecto, al tiempo que aplicábamos una eficiencia económica excepcional."

Jean-David Blanc

CEO, Molotov.tv (adquirida por Fubo.tv)

Últimas actualizaciones

Manténgase informado con nuestras últimas entradas de blog y perspectivas del sector.