Diferencias entre la ingeniería de plataformas y DevOps

Copiar URL

La ingeniería de plataformas y DevOps son prácticas de TI que utilizan metodologías de desarrollo de software para agilizar el lanzamiento de los productos y reducir los obstáculos que impiden el desarrollo. Sin embargo, cada práctica se aplica en una etapa diferente y se centra en un conjunto de problemas específicos. Por eso, es importante conocer las diferencias entre ambas, ya que así podrás elegir el enfoque más conveniente para tus objetivos. DevOps es un enfoque de desarrollo de software que las empresas aplican para combinar las funciones de desarrollo y operaciones de TI en flujos de trabajo constantes. Por su parte, la ingeniería de plataformas se centra en la creación de plataformas y herramientas internas que respalden esos flujos de trabajo. 

DevOps combina dos áreas distintas (desarrollo y operaciones) y utiliza herramientas y procesos para coordinar equipos que solían trabajar aislados en las empresas. Este enfoque incluye principios ágiles, es decir, una metodología de desarrollo que se basa en equipos autogestionados y en procesos de repetición rápida. La implementación de DevOps implica la colaboración entre distintos equipos y funciones, así como la generación de confianza y una mayor uniformidad, por lo que requiere un cambio más bien empresarial que un mero ajuste de los procesos. En otras palabras, para que su uso resulte eficaz, es necesario cambiar la cultura interna de la empresa.

DevOps y el enfoque ágil surgieron en respuesta a las críticas que recibían los métodos tradicionales de desarrollo de software en cascada, en particular porque se considera que este tipo de desarrollo frena la innovación y crea bloqueos y obstáculos para la empresa. En un sistema en cascada, se prueban los requisitos de código para determinar su funcionalidad, eficiencia, estandarización y documentación antes de integrarlos en una aplicación. Si estos aspectos se prueban con antelación, puede producirse una larga cola de procesos que dificulta la ejecución de los proyectos dentro de su alcance, plazo y presupuesto, sobre todo cuando estos no son claros o están en fase de cambio.

Por su parte, DevOps utiliza la automatización y los procesos cíclicos que permiten que los equipos de desarrollo trasladen el software de la fase de desarrollo a la de producción con rapidez y, una vez en producción, lo sigan mejorando. Este enfoque requiere una mayor comunicación y colaboración entre los equipos a través de prácticas que promueven la experiencia compartida, lo que permite que las mejoras del producto se integren y desarrollen en varias repeticiones, en lugar de ejecutarse por adelantado con plazos de lanzamiento más lentos. Las empresas que implementan DevOps mejoran el software de manera sistemática a lo largo del tiempo, de modo que los equipos pueden adaptarse a los cambios y probar enfoques nuevos de una forma que los modelos de desarrollo tradicionales suelen impedir.

La ingeniería de plataformas amplía el alcance de las prácticas de DevOps con herramientas, servicios y flujos de trabajo estandarizados que permiten que los equipos de desarrollo diseñen soluciones de software con mayor eficiencia. Se trata de un término más moderno que describe la manera de organizar los servicios y los recursos internos para que los equipos de desarrollo puedan diseñar soluciones sin tener que gestionar directamente los elementos fundamentales. Los ingenieros de plataformas seleccionan y mantienen los distintos servicios, herramientas y documentación que necesitan los equipos para que cada miembro de la empresa de TI pueda realizar su trabajo de manera más eficiente sin ser totalmente independiente, mediante procesos automatizados conocidos como "planes de referencia". A medida que se generaliza la adopción de DevOps, la ingeniería de plataformas aumenta su importancia, ya que aporta los elementos fundamentales que respaldan los flujos de trabajo de DevOps y contribuyen a su crecimiento en las grandes empresas.

En su presentación en DevOpsDays London, Abby Bangser utilizó términos relacionados con el mundo culinario para describir la función de la ingeniería de plataformas en DevOps. Si estás "cocinando" un software (la comida) y necesitas un utensilio (una sartén) o un ingrediente (perejil), puedes solicitarlo, pero quizás no obtengas exactamente lo que buscas. Es posible que el personal encargado de los suministros no pueda facilitarte el ingrediente exacto que deseas o que no tenga acceso a tu solicitud. En un modelo de DevOps, puedes evitar estos inconvenientes a la hora de realizar solicitudes y confiar en los suministros, pero tendrías que elaborar tú mismo el ingrediente o la herramienta que necesitas. Para seguir con la analogía culinaria de Bangser, sería como forjar uno mismo la sartén de metal o cultivar el perejil sembrado, lo cual sería una tarea complicada e ineficaz.

En este modelo de autoservicio, los equipos de desarrollo se encuentran desbordados por la gran cantidad de tecnologías que necesitan para llevar a cabo sus tareas diarias. El uso de diferentes conjuntos de herramientas puede resultar poco práctico, reducir la eficiencia y aumentar la carga cognitiva de los equipos. También surgen algunos desafíos en el proceso de incorporación: la integración eficaz de los miembros nuevos se vuelve más compleja, ya que tienen que familiarizarse con muchas herramientas y sistemas, y los miembros sénior del equipo, que deben brindarles asesoramiento, se desvían de sus tareas principales, lo que reduce la productividad. El objetivo de la ingeniería de plataformas es respaldar los flujos de trabajo de DevOps al reducir estas cargas, de modo que la empresa de TI pueda centrarse en generar innovaciones, en tanto que los ingenieros de plataformas se ocupen de concentrar las prácticas recomendadas y las experiencias de autoservicio para ellos.

Obtén más información sobre la ingeniería de plataformas

La ingeniería de plataformas permite ajustar la capacidad de DevOps porque sus equipos ya no deben ocuparse de todo por sí solos. El uso de plataformas de ingeniería permite disponer de un conjunto de herramientas, conocimientos, servicios y procesos estandarizados que resultan útiles para muchos equipos de desarrollo de toda la empresa. Con las plataformas seleccionadas, estos equipos pueden diseñar, implementar, poseer y respaldar sus elementos, mientras que el equipo de plataforma hace lo mismo con los suyos. De este modo, el personal trabaja en conjunto y obtiene resultados en menos tiempo. Los equipos de plataformas proporcionan todo como servicio para que los equipos de DevOps no tengan que crear los elementos específicos.

Si los equipos de plataformas proporcionan elementos a los de desarrollo, puede parecer que la ingeniería de plataformas tiene potencial para generar los mismos problemas y dependencias internas que DevOps intentó disminuir en un principio. Si el equipo de aplicaciones depende de que el de plataformas le aporte los recursos necesarios, ¿no se producirán obstáculos en el proceso?

Aunque en teoría es posible, los equipos de plataformas también tienen el potencial de disminuir la redundancia y la repetición de tareas, lo cual puede suponer una pérdida de tiempo para toda la empresa. Los distintos equipos de desarrollo pueden utilizar una misma plataforma de autoservicio en lugar de que cada uno diseñe la suya con las mismas funciones. De este modo, se garantiza la uniformidad a lo largo del tiempo, incluso cuando el equipo de desarrollo ya no esté a cargo del proyecto en curso. Además, estos equipos de plataformas tratan a los de desarrollo como si fueran sus clientes y son conscientes de que, si no satisfacen las necesidades de los usuarios finales, esos clientes internos recurrirán a otro tipo de infraestructura o mecanismo de implementación, por lo que hay una motivación para agilizar la distribución. Las prácticas recomendadas y las soluciones ya consolidadas pueden incorporarse a la plataforma, y los equipos pueden compartir conocimientos de forma más eficaz.

La ingeniería de plataformas puede resultar familiar a quienes ya conocen la ingeniería de confiabilidad del sitio (SRE). SRE es un término que Google introdujo en el sector para describir los sistemas que ejecutan productos con automatización, como una alternativa al trabajo manual que normalmente realizarían los administradores de sistemas. Los equipos de SRE se encargan de gestionar la infraestructura fundamental y de desarrollar procesos y automatización para garantizar la integridad de la infraestructura y mantener el tiempo de actividad. Los especialistas en SRE y los ingenieros de plataformas tienen objetivos comunes, pero mientras que los primeros se centran en el rendimiento, la confiabilidad y la capacidad de ajuste del software, los segundos lo hacen en los sistemas que buscan mejorar la experiencia de los desarrolladores.

Obtén más información sobre el enfoque de SRE de Red Hat

Por lo general, los equipos aplican la ingeniería de plataformas con el fin de desarrollar sus propias plataformas internas para desarrolladores (IDP), así como sus herramientas, servicios y documentación en un portal de autoservicio. Los ingenieros de plataformas pueden diseñar y ofrecer una IDP en función de las necesidades de los usuarios y las prácticas recomendadas, y perfeccionarla constantemente mediante análisis y pruebas con los usuarios. Con los equipos de desarrollo como usuarios objetivo, los ingenieros de plataformas pueden ofrecer una IDP que posibilite el autoservicio de los desarrolladores y les permita reducir su carga cognitiva.

Las empresas que deseen establecer la integración y la distribución continuas (CI/CD) en el ciclo de vida del desarrollo de software deben adoptar las prácticas de DevOps. Los canales de CI/CD permiten automatizar las pruebas y la generación de código, lo cual reduce el impacto de los errores y las fallas de código, ya que el ciclo del desarrollo y de la actualización del software se integra de forma permanente. Gracias a la integración y la automatización de estos canales en todo el ciclo de vida del desarrollo de software, las empresas obtienen la información necesaria para diseñar plataformas de alta calidad y agilizar la distribución de sus aplicaciones.

Los productos y los servicios de Red Hat® se combinan a la perfección con el fin de favorecer la productividad de los desarrolladores y ofrecer a las empresas la flexibilidad que necesitan para aumentar el rendimiento de sus equipos y, al mismo tiempo, potenciar el autoservicio, agilizar el proceso de incorporación y disminuir las tareas repetitivas.

Red Hat Developer Hub es un portal interno para desarrolladores que se basa en el proyecto Backstage de Cloud Native Computing Foundation (CNCF). Este portal permite que las empresas consoliden sus opciones tecnológicas, aumenten el autoservicio y el proceso de incorporación y mejoren la productividad. Además, pueden utilizarlo para integrar elementos del proceso de desarrollo, agilizar los flujos de trabajo y promover la colaboración interna.

Red Hat OpenShift®, junto con Red Hat Developer Hub, permite que los desarrolladores utilicen las herramientas que ya conocen en distintas aplicaciones (ya sean heredadas, modernizadas o desarrolladas en la nube), independientemente de si se implementan en las instalaciones, en la nube o en el extremo de la red.

Productividad de los desarrolladores con las tecnologías de Red Hat

Las tecnologías de Red Hat se complementan entre sí para favorecer la productividad de los desarrolladores. Obtén más información al respecto.

Más información

¿Qué es la ingeniería de plataformas?

La ingeniería de plataformas es la disciplina del desarrollo de software que se centra en mejorar la productividad, la duración de los ciclos de vida de las aplicaciones y el tiempo de comercialización.

Red Hat OpenShift para los ingenieros de plataformas

Con Red Hat OpenShift, los equipos de ingeniería de plataformas disponen de las herramientas que necesitan para diseñar y gestionar con eficacia las plataformas internas para desarrolladores.

¿Qué es el ajuste fino eficiente de parámetros (PEFT)?

El PEFT es un conjunto de técnicas que ajustan solo una parte de los parámetros que están dentro de un LLM para utilizar menos recursos.

Platform engineering: lecturas recomendadas

Producto destacado

  • Red Hat OpenShift

    Una plataforma de desarrollo de aplicaciones unificada que te permite crear, modernizar e implementar aplicaciones a escala en la infraestructura de nube híbrida que elijas.