Herramientas de ingeniería de plataformas
Las herramientas de ingeniería de plataformas permiten que los equipos de desarrollo (internos y externos) mejoren su productividad gracias a una estrategia de autoservicio, la cual les facilita el acceso a todos recursos necesarios en el momento oportuno. Respaldan funciones como la integración y distribución o implementación continuas (CI/CD), la infraestructura como código (IaC), la organización en contenedores, la observabilidad, la seguridad y el autoservicio para los desarrolladores, entre otras.
Un equipo de ingeniería de plataformas (también conocido como "equipo de plataformas") se encarga de respaldar un portal para desarrolladores, que brinda acceso de autoservicio a los recursos, la documentación y las herramientas que los desarrolladores necesitan para interactuar con diversos servicios y API. Además, estos equipos pueden mantener una plataforma interna para desarrolladores (IDP), que sirve como infraestructura para que estos diseñen, implementen y gestionen sus aplicaciones.
Si bien las tecnologías de ingeniería de plataformas y las herramientas para desarrolladores guardan cierta relación entre sí, no pertenecen a la misma categoría. Las primeras, junto con la propia IDP, permiten establecer procesos uniformes para que los desarrolladores realicen su trabajo 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, analizaremos en detalle los objetivos de la ingeniería de plataformas y los tipos de tecnologías y servicios disponibles para alcanzarlos.
Los objetivos de la ingeniería de plataformas
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 de plataformas diseñan y crean conjuntos de herramientas y flujos de trabajo para posibilitar las funciones de autoservicio en 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 utilizan cuentan con soporte interno, pueden controlarse 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. Reconoce la carga cognitiva que recae sobre los desarrolladores de software y trata de identificar y reducir las dificultades a las que se enfrentan.
¿Cómo se aplica esto en la práctica? 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 en toda la empresa. Asimismo, proporcionan herramientas y funciones comunes y reutilizables para que los desarrolladores puedan trabajar con eficacia y aumentar su productividad.
El estado de la ingeniería de plataformas en la era de la inteligencia artificial
Plataformas internas para desarrolladores (IDP)
Las plataformas internas para desarrolladores (IDP) consisten en un conjunto de tecnologías y herramientas de autoservicio que los desarrolladores necesitan para crear e implementar código. Al consolidar y simplificar los elementos del proceso de desarrollo, las IDP logran que el trabajo de los equipos de desarrollo sea más eficiente, colaborativo y fácil de gestionar.
Las IDP reflejan las opciones de ingeniería de plataformas. Son una base que consta de API de autoservicio, herramientas, servicios, conocimientos y soporte que conforman un producto interno atractivo. Mientras que los equipos de desarrollo son los usuarios principales de una IDP, los ingenieros de plataformas 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, que 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 frontend 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 Cloud Native Computing Foundation (CNCF). Backstage es la base de Red Hat® Developer Hub, que ofrece un marco con soporte y recomendaciones prestablecidas para diseñar plataformas para desarrolladores, con integraciones y soporte destinados a los clientes empresariales.
Herramientas de CI/CD
Las herramientas de CI/CD son útiles para que los equipos automaticen el desarrollo, la implementación y las pruebas. Algunas de ellas se ocupan específicamente de la integración (CI), otras gestionan el desarrollo y la implementación (CD) y otras 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 de CI/CD open source muy conocidas, como las siguientes:
- Argo CD es una herramienta declarativa de distribución continua para Kubernetes que se adapta 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 necesitan los clústeres.
- Red Hat OpenShift® GitOps se basa en Argo CD.
- Tekton es un marco de CI/CD 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 los procesos de CI y CD a pequeña y gran escala.
- Spinnaker es una plataforma de CD diseñada para los entornos multicloud.
- GoCD es un servidor de CI/CD que se centra en la creación de modelos y la visualización.
- Concourse es una herramienta de automatización ideal para los procesos permanentes.
- Screwdriver es una plataforma de diseño creada para la CD.
Es posible que a los equipos también les convenga adquirir las herramientas gestionadas de CI/CD que ofrecen muchos proveedores. La elección correcta 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 todas las plataformas.
Herramientas de infraestructura como código (IaC)
La infraestructura como código (IaC) es un enfoque que se aplica a las infraestructuras y permite que los administradores automaticen su gestión y aprovisionamiento, 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 permiten definir las especificaciones de la infraestructura, lo que facilita el aprovisionamiento uniforme de los entornos. Además, la IaC permite editar y distribuir las configuraciones en toda la empresa y evita los cambios muy específicos y no documentados.
La IaC se basa en herramientas de gestión de la configuración y de automatización de servidores. 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.
Herramientas de contenedores y Kubernetes
Las herramientas de contenedores son esenciales para los ingenieros de plataformas.
Los contenedores les permiten empaquetar y aislar las aplicaciones junto con todo el entorno de tiempo de ejecución, es decir, con todos los archivos necesarios para ejecutarlas. En consecuencia, las aplicaciones en contenedores 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 utilizan herramientas como Docker y Podman, que son compatibles con los estándares de 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 permiten automatizar la implementación, la gestión, el ajuste y la conexión de los contenedores durante 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 empresariales que se basa en Kubernetes. Los ingenieros de plataforma pueden integrar Red Hat OpenShift a una IDP como Red Hat OpenShift Developer Hub para ofrecer un entorno para desarrolladores.
Herramientas de observabilidad
La supervisión y la observabilidad son importantes para 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 estas herramientas, los desarrolladores y los administradores pueden mejorar la seguridad, el rendimiento y la confiabilidad de la infraestructura y las aplicaciones complejas.
La observabilidad 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 observabilidad en función de sus necesidades.
Algunas de las herramientas open source que se suelen utilizar en el ámbito de la observabilidad son Grafana, Jaeger, OpenTelemetry y Prometheus. Red Hat OpenShift Observability es un conjunto de herramientas de observabilidad que se diseñó para funcionar con Red Hat OpenShift mediante los estándares de OpenTelemetry.
Herramientas de seguridad para la ingeniería de plataformas
Ante la creciente preocupación por la seguridad, las empresas de software modernas 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 solo realizar una última comprobación antes de la implementación, la seguridad se aplica desde 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 gestió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 de las API.
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, como Red Hat Trusted Profile Analyzer, Red Hat Trusted Application Pipeline y Red Hat Trusted Artifact Signer.
- Red Hat Trusted Profile Analyzer permite gestionar listas de elementos de software (SBOM), así como cotejar información sobre los CVE y advertencias de seguridad de fuentes confiables. Incorpora tecnología de los proyectos open source Graph for Understanding Artifact Composition (GUAC), Trustification y Exhort.
- Red Hat Trusted Artifact Signer se basa en el proyecto Sigstore y simplifica la firma criptográfica y la verificación de artefactos de software, como las imágenes de contenedores, los archivos binarios y los documentos. También incorpora la tecnología de los proyectos Cosign y Fulcio, y admite la integración completa con otros sistemas de gestión de claves, como HashiCorp Vault, Google/Azure y AWS KMS.
- Red Hat Advanced Developer Suite ofrece un seguimiento integral de la procedencia de los artefactos de software.
Para las implementaciones de Kubernetes, Red Hat Advanced Cluster Security for Kubernetes protege las cargas de trabajo en contenedores en todas las plataformas, lo que permite que los equipos identifiquen y aborden los puntos vulnerables y apliquen políticas de seguridad.
Ventajas de elegir Red Hat para la ingeniería de plataformas
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 de su fábrica de software desde el principio.
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.