Resumen
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 las aplicaciones y el tiempo de comercialización.
Debe considerarse un enfoque multidisciplinar destinado a mejorar la cultura del trabajo y la productividad, así como a tener un impacto positivo en lo económico. Desde el punto de vista empresarial, los programas de ingeniería de plataformas agilizan el tiempo de comercialización de las aplicaciones, optimizan las operaciones y mejoran la eficiencia en las etapas de desarrollo, implementación, gestión y mantenimiento. Desde el punto de vista cultural, su finalidad es mejorar la colaboración entre los equipos y reducir el esfuerzo cognitivo al brindar a los desarrolladores las herramientas y el respaldo que necesitan para centrarse en los aspectos más importantes de sus tareas.
A nivel general, su objetivo es identificar las dificultades que afectan a los equipos de desarrollo y reducirlas con herramientas y funciones comunes y reutilizables a través de una plataforma interna para desarrolladores (IDP).
La ingeniería de plataformas
Cuando se habla de la ingeniería de plataformas se puede hacer referencia a un puesto de trabajo específico, así como a una disciplina o metodología que un grupo de personas adopta como iniciativa colectiva.
La función de este campo beneficia a las empresas, ya que fomenta la uniformidad y la eficacia. Además, favorece una mayor colaboración entre los equipos y reduce la curva de aprendizaje de los nuevos miembros al permitir una cooperación más eficaz.
En esencia, la ingeniería de plataformas busca reducir el tiempo empleado en tareas administrativas que pueden mermar la productividad de los desarrolladores y obstaculizar el ciclo de vida de las aplicaciones. Para lograrlo, los equipos e ingenieros deben gestionar la infraestructura y crear un conjunto de herramientas que guíen a los desarrolladores a través de un flujo de trabajo diseñado para satisfacer sus necesidades, lo que se suele conocer como planes de referencia ("golden paths").
Los distintos equipos de desarrollo, incluso aquellos de la misma empresa, tienen necesidades diferentes, de modo que no hay dos plataformas de desarrollo iguales. Los ingenieros de plataformas son conscientes de ello y seleccionan un conjunto personalizado de herramientas y procesos que se adaptan a las necesidades específicas de cada empresa mediante funciones de autoservicio e infraestructuras automatizadas que facilitan el trabajo de los desarrolladores de software.Gracias a esta capacidad de adaptación, los desarrolladores no se ven limitados por las soluciones genéricas y pueden emplear las herramientas que mejor se adapten a los requisitos de sus proyectos. Del mismo modo, no tienen que aprender nuevas habilidades ni realizar tareas innecesarias, sino que pueden centrarse en su especialidad: la programación.
Los equipos de ingeniería de plataformas también garantizan la existencia de marcos de control sólidos que permiten hacer un seguimiento de los recursos, la seguridad y el cumplimiento normativo en todos los entornos. La ventaja de esto es que ofrece a las empresas una manera más práctica de supervisar el rendimiento, controlar los costos e identificar posibles riesgos o puntos vulnerables.
El origen de la ingeniería de plataformas
La ingeniería de plataformas surgió en respuesta a un nuevo debate en el ámbito tecnológico: los desarrolladores no deberían tener que preocuparse por la infraestructura, sobre todo en el caso de los entornos híbridos y multicloud.
Tradicionalmente, la tarea del desarrollador ha consistido en encontrar una herramienta que se adapte a sus necesidades o crearla desde cero. Aunque las versiones anteriores y básicas de la tecnología respaldaban esta idea, los desarrolladores actuales de las empresas se han percatado de que las tareas de brindar soporte a los usuarios y ajustar la capacidad de la infraestructura se vuelven más complejas y fragmentadas con el crecimiento de la empresa.
Cada día aparecen nuevas herramientas, hay que mantenerse actualizado respecto a las funciones más recientes y se necesita tiempo para evaluar y seleccionar aquellas que son adecuadas para una determinada tarea. Sin embargo, el tiempo que se dedica a aprender utilizarlas, investigar tecnologías novedosas, solicitar servicios de infraestructura y aplicaciones, y conocer los riesgos de seguridad más recientes, puede consumir mucha atención y recursos. De este modo, se pierde tiempo que podría emplearse en mejorar el producto que se vende y en cumplir los objetivos prioritarios de la empresa.
Las plataformas internas para desarrolladores
En el ámbito de la ingeniería de plataformas, los clientes son los desarrolladores, y el producto, las plataformas internas para desarrolladores (IDP), de cuya configuración se encargan los equipos de ingeniería de plataformas.
Estas consisten en un conjunto estandarizado de herramientas y tecnologías internas de autoservicio que los desarrolladores necesitan para crear, implementar y mantener el código a lo largo de todo el ciclo de vida de una aplicación. Las cadenas de herramientas que se integran a una IDP permiten un flujo de trabajo más favorable y productivo para los desarrolladores, se centran en factores como la seguridad y la capacidad de ajuste, y ayudan a las empresas a ofrecer más beneficios a los clientes.
Para crear una IDP eficaz, es necesario detectar cualquier dificultad en el proceso de desarrollo y seleccionar las herramientas y tecnologías que puedan eliminarla o reducirla. Para ello, se recomienda adoptar un enfoque minimalista, es decir, incorporar únicamente las herramientas que el equipo considere beneficiosas y, a partir de allí, ampliar las funciones de forma gradual acorde a sus necesidades y solicitar comentarios durante el proceso.
Las diferencias entre la ingeniería de plataformas y DevOps
Tanto la ingeniería de plataformas como DevOps comparten el mismo objetivo: lograr que los desarrolladores y los equipos de operaciones estén en mayor consonancia a través de un aumento en la automatización y la colaboración. Si pensamos en la relación entre ambas prácticas, la ingeniería de plataformas puede considerarse un elemento fundamental y complementario a la hora de hacer frente a los desafíos que plantea el ajuste de DevOps a toda una empresa.
Tradicionalmente, las prácticas de DevOps fomentan que los propios desarrolladores busquen, aprendan, implementen y gestionen el software, lo cual les permite conocerlo y controlarlo mejor en la etapa de producción; sin embargo, este enfoque no siempre es positivo en términos económicos, sino que aumenta la carga administrativa y cognitiva para quienes se encargan de su desarrollo.
Un equipo determinado puede tener interés en ofrecer una función, pero carecer de las habilidades necesarias para hacerlo; puede tener estas últimas, pero no el interés en desarrollar la función; o bien puede contar con las habilidades y el interés, pero que no sea seguro o rentable llevarlo a cabo. El panorama se complica conforme las empresas se expanden y crecen.
Como consecuencia de la adopción de DevOps y de la distribución continua, los canales y las cadenas de herramientas son cada vez más largos. Además, debido a la presión de tener que implementar la seguridad en las primeras etapas del desarrollo, es decir, poseer una visión integral de cada etapa del flujo de trabajo a la hora de crear y mantener una aplicación, los desarrolladores han pasado a ser responsables de conocer a fondo las complejidades de las aplicaciones que diseñan.
Si bien esta autonomía ofrece una sensación de libertad, también puede conllevar una carga cognitiva y un sentido de la responsabilidad extenuantes que, a fin de cuentas, no sirven ni al empleado ni a la propia empresa.
La estrategia de la ingeniería de plataformas, que hace más hincapié en la empatía y la experiencia del usuario, se basa en DevOps para buscar nuevos métodos de automatizar la distribución de aplicaciones, mejorar la colaboración y la comunicación, reducir los errores, reforzar la seguridad y el cumplimiento, aumentar la eficiencia y, sobre todo, volver a centrar la atención de los desarrolladores donde más se necesita.
Las diferencias entre los ingenieros de plataformas y los de confiabilidad del sitio (SRE)
Si bien la ingeniería de plataformas y la ingeniería de confiabilidad del sitio se ocupan de la creación y el mantenimiento de los sistemas, la diferencia entre ambas radica en el enfoque de cada práctica. Los ingenieros de confiabilidad del sitio se centran en los equipos de operaciones de TI y los ayudan a utilizar el software como herramienta para gestionar los sistemas, resolver los problemas y automatizar las tareas.
En cambio, los ingenieros de plataformas se centran en los equipos de desarrollo y los ayudan a crear plataformas para gestionar los sistemas, resolver los problemas y automatizar los procesos de la etapa de desarrollo.
Los beneficios de Red Hat para los ingenieros de plataformas
Red Hat® OpenShift® reúne las condiciones necesarias para ofrecer a los equipos de ingeniería de plataformas un amplio conjunto de funciones y características, tales como las compilaciones, los canales, GitOps, la tecnología sin servidor y la malla de servicios.
Cuando se combina OpenShift con Red Hat Developer Hub, los equipos de ingeniería obtienen las plantillas de proyectos, la documentación y los flujos de trabajo que necesitan para diseñar y gestionar de manera eficaz una plataforma interna para desarrolladores (IDP) única y adaptada a las necesidades y objetivos de la empresa.
Además, los desarrolladores pueden conectarse a un panel de control unificado y acceder a una gran variedad de herramientas, plantillas de software, documentación y demás recursos que les ayudarán a diseñar sistemas de software de excelente calidad de forma eficiente. Del mismo modo, tienen acceso a la información y los recursos que necesitan para unirse a un proyecto en curso y así agilizar el tiempo de incorporación.
La plataforma está orientada hacia la innovación open source, por lo que ofrece flexibilidad y evita la dependencia de un solo proveedor, mientras que la reputación de Red Hat en materia de estabilidad, soporte y confiabilidad le brinda tranquilidad. Además, la capacidad de Developer Hub para integrar fácilmente nuevas herramientas y servicios a través de plugins, junto con su flexibilidad, lo convierten en una solución preparada para el futuro que se adapta a las necesidades de desarrollo en constante evolución.
Al contar con OpenShift, Red Hat Developer Hub, Trusted Software Supply Chain, Advanced Cluster Security (ACS), Advanced Cluster Management (ACM) y Ansible como elementos básicos, los ingenieros de plataformas pueden diseñar y crear cadenas de herramientas y flujos de trabajo integrados que ofrecen una experiencia más fluida y eficiente a los desarrolladores.