Comparación entre la ingeniería de plataformas y DevOps
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. 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.
¿Qué es DevOps?
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.
El estado de la ingeniería de plataformas en la era de la inteligencia artificial
Ingeniería de plataformas
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 con mayor eficiencia sin necesidad de ser totalmente independiente, mediante procesos automatizados conocidos como "planes de referencia" (golden paths). 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 un 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.
Backstage with platform engineering Duración del video: 2:31
Ventajas de la ingeniería de plataformas y DevOps
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.
El papel de la ingeniería de confiabilidad del sitio
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.
Casos prácticos de la ingeniería de plataformas y DevOps
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.
Diferencias entre las funciones de la ingeniería de plataformas y las de DevOps
DevOps y la ingeniería de plataformas son enfoques distintos pero complementarios que permiten optimizar el desarrollo y la implementación de software. Cada uno busca acelerar la velocidad de lanzamiento y mantener la estabilidad del sistema, pero difieren significativamente en su ejecución. Mientras que DevOps es una cultura y una metodología de colaboración, la ingeniería de plataformas funciona como una disciplina basada en el producto que permite diseñar las herramientas fundamentales para que esa cultura se expanda en toda la empresa.
En este ecosistema, los ingenieros de DevOps se centran en vincular a los equipos de desarrollo con las operaciones de TI. Su principal responsabilidad es automatizar los procesos de desarrollo, prueba e implementación mediante el diseño y el mantenimiento de los canales de CI/CD. Para garantizar la uniformidad en todos los entornos, utilizan mucho la infraestructura como código con el fin de aprovisionar la infraestructura y las plataformas de forma automática, en lugar de configurar los servidores de forma manual. Esta función se basa en un enfoque de perfeccionamiento constante, por lo que analiza permanentemente los canales de implementación para detectar inconvenientes. Además, los ingenieros de DevOps suelen trabajar en estrecha colaboración con los ingenieros de confiabilidad del sitio para equilibrar la gran velocidad de los lanzamientos de funciones con objetivos estrictos de confiabilidad y tiempo de actividad del sistema.
Los ingenieros de plataformas abordan la infraestructura con un enfoque en el producto, a fin de reducir la carga cognitiva que recae sobre los desarrolladores de software a medida que los entornos de nube se vuelven cada vez más complejos. La responsabilidad principal de un ingeniero de plataformas es diseñar y mantener una plataforma interna para desarrolladores que funcione como un portal de autoservicio donde los desarrolladores puedan aprovisionar entornos, bases de datos y canales de forma independiente. Gracias a esta función, se estandarizan en las plantillas de la plataforma los controles de acceso al sistema y el cumplimiento normativo en materia de seguridad. Los ingenieros de plataformas transforman los planes generales en planes de referencia reutilizables que eliminan las complejidades propias de las redes de la nube y la organización de los contenedores, lo que permite que los desarrolladores se centren únicamente en escribir el código de la aplicación.
Seguridad, cumplimiento normativo y gestión de riesgos
En los entornos empresariales, la seguridad y el cumplimiento normativo deben integrar las prácticas diarias de implementación. Si bien los modelos tradicionales de DevOps se centran en una filosofía de "shift left", que aborda la seguridad a través de pruebas automatizadas y la integración continua en la fase de desarrollo, esto puede implicar un aumento considerable de la carga cognitiva de los desarrolladores. Para reducir esta carga, la ingeniería de plataformas diseña plataformas seguras y que cumplen con las normas desde el principio.
Al incorporar políticas de seguridad y cumplimiento normativo en las herramientas de automatización y las prácticas de CI/CD estandarizadas, la ingeniería de plataformas reduce la complejidad normativa. Este enfoque garantiza que los desarrolladores diseñen una infraestructura segura y adaptable sin necesidad de ser especialistas en cumplimiento normativo.
Además, la integración de una gestión efectiva de los riesgos en las plataformas de nube requiere un enfoque unificado para la infraestructura como código y la organización en contenedores. Los equipos de DevOps disponen de estas metodologías para agilizar la distribución de software, mientras que los ingenieros de plataformas mantienen los sistemas basados en el control. Esta colaboración garantiza que cualquier incumplimiento de los requisitos empresariales se detecte de inmediato. Al cambiar la responsabilidad de diseñar sistemas seguros y adaptables por una estrategia de plataforma concentrada, las empresas pueden agilizar los lanzamientos y mantener una postura rígida frente a los riesgos normativos y operativos.
Red Hat puede ayudarte
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.