Herramientas de ingeniería de plataformas

Copiar URL

Las herramientas de ingeniería de plataformas permiten que los equipos de desarrollo (internos y externos) mejoren su productividad gracias a un enfoque de autoservicio que les facilita el acceso a todo aquello que necesitan en el momento oportuno. Respaldan diversas funciones, tales como la integración y la distribución o implementación continuas (CI/CD), la infraestructura como código (IaC), la organización en contenedores, la determinación del estado interno, la seguridad, el autoservicio para los desarrolladores y muchas más.

Un equipo de ingeniería de plataformas (o simplemente equipo de plataformas) se encarga de respaldar un portal para desarrolladores, que proporciona acceso de autoservicio a los recursos, la documentación y las herramientas que se necesitan para interactuar con diversos servicios y API. Además, estos equipos pueden mantener una plataforma interna para desarrolladores (IDP), que sirve como infraestructura fundamental para que estos diseñen, implementen y gestionen sus aplicaciones.

Las tecnologías de ingeniería de plataformas no tienen la misma categoría que las herramientas para desarrolladores, aunque guarden cierta relación entre sí. Las tecnologías de ingeniería de plataformas y la propia IDP permiten establecer procesos uniformes para que los desarrolladores realicen sus tareas de manera eficiente. Por su parte, las herramientas para desarrolladores parten de esa base para que estos puedan mejorar su experiencia en la IDP y llevar a cabo proyectos específicos.

A continuación, examinaremos con detalle los objetivos de la ingeniería de plataformas y los tipos de tecnologías y servicios disponibles para alcanzarlos.

La ingeniería de plataformas busca sacar partido de la gran cantidad de tecnologías que se utilizan en la era de la nube. Los ingenieros del sector diseñan y desarrollan conjuntos de herramientas y flujos de trabajo para facilitar funciones de autoservicio a las empresas de ingeniería de software. De este modo, los equipos de desarrollo pueden obtener las funciones que necesitan en cuestión de minutos y con la garantía de que las soluciones que usan cuentan con soporte interno, se pueden controlar y siguen las prácticas de seguridad de la empresa.

La ingeniería de plataformas es un enfoque multidisciplinario que combina la cultura laboral, las operaciones empresariales, la colaboración entre equipos y otros aspectos necesarios para desarrollar software de manera más eficiente. Este enfoque reconoce la carga cognitiva que recae sobre los desarrolladores de software y trata de identificar y reducir las dificultades a las que se enfrentan.

En la práctica, esto significa que los ingenieros de plataformas crean un conjunto de contenidos, herramientas, documentación, plantillas y flujos de trabajo que aportan flexibilidad y, al mismo tiempo, garantizan la uniformidad de toda la empresa. Asimismo, proporcionan herramientas y funciones comunes y reutilizables para que los desarrolladores puedan trabajar con eficacia y aumentar su productividad.

Una IDP consiste en un conjunto de tecnologías y herramientas de autoservicio que los desarrolladores usan para crear e implementar código. Su finalidad es lograr que el trabajo diario de los equipos de desarrollo sea más eficiente, colaborativo y fácil de gestionar. Para ello, consolidan y simplifican los elementos del proceso de desarrollo.

Las IDP reflejan las opciones de ingeniería de la plataforma. Se trata de una base que consta de diversos elementos (API de autoservicio, herramientas, servicios, conocimiento y soporte) que conforman un producto interno eficiente. Mientras que los equipos de desarrollo son los usuarios principales de una IDP, los ingenieros de plataforma son los responsables de la configuración inicial, el mantenimiento y el soporte. De este modo, se garantiza que toda la empresa utilice un conjunto unificado de tecnologías y recursos, independientemente de quién lo haya creado. La implementación de una IDP puede servir para aplicar y mantener las prácticas recomendadas de DevOps, las cuales fomentan una relación laboral más eficaz entre los equipos de desarrollo y operaciones.

Los términos "portal interno para desarrolladores" y "plataforma interna para desarrolladores" tienden a confundirse; la diferencia consiste en que el primero puede funcionar como front-end del segundo, el cual aporta una plataforma de aplicaciones con funciones más avanzadas y capacidad de ajuste.

Uno de los proyectos open source más conocidos para las plataformas para desarrolladores es Backstage, cuyo lanzamiento estuvo a cargo de los ingenieros de Spotify y que posteriormente se donó a la Cloud Native Computing Foundation (CNCF). Backstage constituye la base de Red Hat® Developer Hub. Esta plataforma ofrece un marco bien pensado destinado a diseñar plataformas para desarrolladores, con integraciones y soporte para los clientes empresariales.

Obtén más información sobre las plataformas internas para desarrolladores

Las herramientas de CI/CD permiten que los equipos automaticen el desarrollo, la implementación y las pruebas. Hay algunas que gestionan específicamente la integración (CI), otras que abordan el desarrollo y la implementación (CD), y algunas que se especializan en las pruebas permanentes u otras funciones relacionadas. Muchas de estas herramientas se integran en una IDP cuando se adopta un enfoque de ingeniería de plataformas.

Hay una gran variedad de herramientas open source de CI/CD muy conocidas, entre ellas cabe mencionar:

  • Argo CD es una herramienta declarativa de distribución continua para Kubernetes que se ajusta a las prácticas de GitOps. Se puede utilizar como una herramienta independiente o como parte del flujo de trabajo de CI/CD para distribuir los recursos que los clústeres necesitan.
  • Red Hat OpenShift® GitOps se basa en Argo CD.
  • Tekton es un marco para las plataformas Kubernetes que ofrece una experiencia estándar de CI/CD en la nube con contenedores.
  • Red Hat OpenShift Pipelines se basa en el marco Tekton.
  • Jenkins es una herramienta de automatización que puede gestionar procesos de CI/CD en entornos pequeños o grandes.
  • Spinnaker es una plataforma de distribución continua diseñada para los entornos multicloud.
  • GoCD es un servidor de CI/CD que se enfoca en la creación de modelos y la visualización.
  • Concourse es una herramienta de automatización adecuada para procesos permanentes.
  • Screwdriver es una plataforma de diseño creada para la distribución continua.

Es posible que a los equipos también les convenga adquirir las herramientas gestionadas de CI/CD que ofrecen muchos proveedores. La elección adecuada de las herramientas de CI/CD permite que los equipos automaticen el diseño, las pruebas y la implementación de una aplicación en distintas plataformas. 

Obtén más información sobre la CI/CD

La infraestructura como código (IaC) es un enfoque que se aplica para las infraestructuras y permite que los administradores automaticen su gestión y preparación, incluidos los servidores y las máquinas virtuales. Al respaldar las infraestructuras automatizadas y de autoservicio, se ajusta a los objetivos de la ingeniería de plataformas.

Con el uso de las herramientas de IaC, los archivos de configuración definen las especificaciones de la infraestructura, lo cual facilita la preparación uniforme de los entornos. Además, permite editar y distribuir las configuraciones en toda la empresa y desalienta los cambios muy específicos y no documentados.

Para ello, se basa en herramientas de automatización de servidores y de gestión de la configuración. Entre las herramientas de automatización de TI más comunes que se adaptan al enfoque de la IaC se encuentran Red Hat Ansible® Automation Platform, Terraform, Chef, Puppet y Salt.

Obtén más información sobre la IaC

Las herramientas de contenedores son esenciales para los ingenieros de plataformas.Los

contenedores empaquetan y aíslan las aplicaciones junto con el entorno de tiempo de ejecución, es decir, con todos los archivos que se necesitan para ejecutarlas. En consecuencia, este tipo de aplicaciones se ejecutan de manera uniforme dondequiera que se implementen y en diferentes entornos e infraestructuras. Los contenedores son fundamentales para el desarrollo en la nube: un método que divide las grandes aplicaciones en conjuntos de microservicios pequeños, independientes y sin conexión directa.

Hay una gran variedad de herramientas open source que facilitan el uso de los contenedores. Para diseñarlos e implementarlos, los desarrolladores pueden usar herramientas como Docker y Podman, que son compatibles con los estándares de la Open Container Initiative (OCI).

Los equipos de operaciones recurren a las plataformas de organización de contenedores, como el proyecto open source de Kubernetes, para gestionarlos según sea necesario. Estas plataformas se encargan de automatizar su implementación, gestión, ajuste y conexión en red a lo largo de todo el ciclo de vida.

Las plataformas Kubernetes se encuentran disponibles a través de diferentes proveedores. Red Hat OpenShift es una plataforma de aplicaciones empresarial basada en Kubernetes. Los ingenieros de plataforma pueden integrar Red Hat OpenShift con una IDP que ofrezca un entorno para desarrolladores, como Red Hat OpenShift Developer Hub.

La supervisión y la determinación del estado interno de un sistema son elementos fundamentales de la ingeniería de plataformas, ya que permiten que los equipos evalúen los resultados, los registros y los indicadores de rendimiento para comprender mejor el estado de un sistema o una aplicación. Gracias a ello, los desarrolladores y los administradores pueden mejorar la seguridad, el rendimiento y la confiabilidad de la infraestructura y las aplicaciones complejas.

La determinación del estado interno amplía el concepto de supervisión e incluye tanto la identificación de las causas principales de los problemas como las previsiones y las predicciones. Las herramientas y las tecnologías en este campo son muy variadas, y los equipos pueden configurar sus propios sistemas de determinación del estado interno en función de sus necesidades.

Algunas herramientas open source que se utilizan habitualmente son Grafana, Jaeger, OpenTelemetry y Prometheus. Red Hat OpenShift Observability consta de un conjunto de herramientas de determinación del estado interno que funcionan con Red Hat OpenShift y emplean los estándares de OpenTelemetry.

Obtén más información sobre la determinación del estado interno

Ante la creciente preocupación por la seguridad, las empresas modernas dedicadas al desarrollo de software adoptan una estrategia de "shift left" para abordar este aspecto en cada fase del ciclo de vida del desarrollo de software (SDLC). Esto significa que, en lugar de que solo se realice una comprobación al final, antes de la implementación, la seguridad comienza directamente en la fase inicial del proyecto.

Los ingenieros de plataforma guían a los desarrolladores a lo largo de todo el SDLC para que sigan los pasos necesarios en materia de seguridad; entre ellos, se pueden incluir las comprobaciones y las pruebas automatizadas en el canal de CI/CD, que protegen el código, evitan las filtraciones de datos, velan por el cumplimiento de las políticas y garantizan la calidad.

Hay otras herramientas de seguridad para la ingeniería de plataformas que son útiles para la administración de secretos (gestión de contraseñas, archivos de configuración de los clientes, credenciales de repositorios, etc.) y la seguridad de las API (incluida la gestión de claves).

En Red Hat, ofrecemos una serie de herramientas y servicios para respaldar la seguridad del software.

Red Hat Trusted Software Supply Chain reúne un conjunto de soluciones que permiten reducir los puntos vulnerables y aplicar políticas de seguridad, entre ellas Red Hat Trusted Profile Analyzer, Red Hat Trusted Application Pipeline y Red Hat Trusted Artifact Signer.

Para las implementaciones de Kubernetes, Red Hat Advanced Cluster Security for Kubernetes protege las cargas de trabajo en contenedores en todas las plataformas, lo cual permite que los equipos identifiquen y aborden los puntos vulnerables y apliquen políticas de seguridad.

Obtén más información sobre la seguridad de la CI/CD

Red Hat ofrece a los ingenieros de plataformas una gran variedad de soluciones que se adaptan a sus objetivos. Gracias a la integración de nuestros productos y servicios, podemos mejorar la productividad de los equipos y, al mismo tiempo, aumentar el autoservicio, agilizar el proceso de incorporación y reducir las tareas repetitivas.

Red Hat OpenShift es una plataforma de aplicaciones empresariales que permite que los desarrolladores utilicen las herramientas que ya conocen en diversas aplicaciones, independientemente del entorno en el que se implementen: en las instalaciones, en la nube o en el extremo de la red.

Red Hat Developer Hub fomenta la eficiencia y la colaboración en todo el proceso de desarrollo de software a través de una plataforma unificada y abierta, al tiempo que reduce la carga cognitiva y el malestar del equipo de desarrollo. Con esta solución, las empresas pueden utilizar las IDP para integrar elementos del proceso de desarrollo, agilizar los flujos de trabajo y promover la colaboración interna.

Red Hat Trusted Software Supply Chain permite que los equipos incorporen la seguridad a los elementos, los procesos y las prácticas a su fábrica de software desde el principio.

Hub

Soluciones empresariales de Red Hat Developer Hub

Una plataforma empresarial open source basada en Backstage para diseñar portales para desarrolladores que consolida visualmente los elementos del proceso de desarrollo.

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.

Más información

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.

Comparación entre la ingeniería de plataformas y DevOps

Descubre las diferencias entre la ingeniería de plataformas y DevOps para identificar un enfoque que responda a tus objetivos.

¿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.

Platform engineering: lecturas recomendadas

Producto destacado

  • Red Hat Developer Hub

    Una plataforma empresarial abierta basada en Backstage para crear portales para desarrolladores que consolidan visualmente elementos del proceso de desarrollo.