Comparación 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 según tus objetivos. DevOps es un enfoque de desarrollo de software que aplican las empresas 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 el ajuste rápido de los procesos. La implementación de DevOps implica que colaboren distintos equipos, que se empleen funciones diferentes y que se genere confianza y mayor uniformidad, por lo que no se trata solo de ajustar los procesos, sino de realizar un cambio empresarial. En pocas palabras, para que su uso resulte eficaz, es necesario cambiar la cultura 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 obstaculiza el trabajo de 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 que los proyectos se ejecuten dentro de su alcance, plazo y presupuesto, en especial cuando no son claros o están en constante 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 allí, 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 de procesos, en lugar de ejecutarse por adelantado con plazos de lanzamiento más lentos. Las empresas que implementan DevOps mejoran el software sistemáticamente a lo largo del tiempo. Así, los equipos pueden adaptarse a los cambios y probar enfoques nuevos de un modo que no suele ser posible con los modelos de desarrollo tradicionales.

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 estos equipos puedan desarrollar soluciones sin tener que gestionar directamente sus 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 con mayor eficiencia sin necesidad de ser totalmente independiente, mediante procesos automatizados conocidos como "planes de referencia". A medida que se generaliza la adopción de DevOps, aumenta la importancia de la ingeniería de plataformas, ya que esta aporta los elementos fundamentales que respaldan los flujos de trabajo de DevOps y permiten que se adapte dentro de las empresas.

Abby Bangser, en su presentación en DevOpsDays London, 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. Con un modelo de DevOps, puedes evitar los inconvenientes que conlleva realizar solicitudes y confiar en los suministros, pero tienes que elaborar por tus propios medios el ingrediente o el utensilio que necesitas. Para seguir con la analogía culinaria de Bangser, sería como encargarte de forjar la sartén de metal o cultivar el perejil desde la siembra, lo cual sería una tarea complicada y poco eficiente.

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 desafíos durante el proceso de incorporación, que se vuelve más complejo porque el personal nuevo tiene 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 disminuye 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.

Backstage with platform engineering. Duración del video: 2:31


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

La ingeniería de plataformas permite ampliar la capacidad de DevOps para que sus equipos ya no deban ocuparse de todo por sí solos. Ofrece 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 plataformas 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 todos los elementos como servicio para que los equipos de DevOps no tengan que crear cada uno que necesiten.

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, las cuales pueden 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 sus necesidades, esos clientes internos recurrirán a otro tipo de infraestructura o mecanismo de implementación, por lo que se ven incentivados a 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). Google introdujo este término 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; sin embargo, 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 Red Hat respecto de la SRE

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 permita a los desarrolladores acceder a las funciones de autoservicio y, al mismo tiempo, reduzca 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. Al integrar y automatizar 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 unifiquen sus opciones tecnológicas, mejoren el autoservicio y el proceso de incorporación y aumenten 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 del entorno en el que se implementen: en las instalaciones, en la nube o en el extremo de la red.

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

Descubre el modo en que las tecnologías de Red Hat se complementan entre sí para mejorar la productividad de los desarrolladores.

Más información

Herramientas de ingeniería de plataformas

Las herramientas de ingeniería de plataformas son recursos que respaldan a los equipos de desarrollo para que mejoren su productividad a través de un enfoque de autoservicio.

Plan de referencia para el desarrollo de software

Los planes de referencia son una manera fundamentada, bien documentada y con respaldo de desarrollar e implementar software dentro de una empresa.

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.

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.