Uno de los principales objetivos de la ingeniería de software es resolver problemas y crear valor, pero ese enfoque puede perderse en la fricción diaria del desarrollo moderno. Una plataforma interna para desarrolladores (IDP) está diseñada para aliviar la carga de los desarrolladores, de forma que puedan centrarse en el desarrollo de software. El objetivo principal de una IDP no es solo lanzar software más rápido, sino también reducir la carga mental de los desarrolladores creando plantillas y automatizaciones seguras, eficientes y bien respaldadas (a menudo denominadas "rutas doradas") para crear y desplegar aplicaciones.
Una plataforma interna para desarrolladores integra un conjunto seleccionado de tecnologías y herramientas, ceado y mantenido por un equipo de plataforma especializado. Esta pila suele incluir soluciones para la orquestación de contenedores, herramientas de infraestructura como código (IaC) y pipelines de CI/CD basados en proyectos de código abierto.
Una plataforma interna para desarrolladores (IDP) debe abordarse como un producto, con los desarrolladores como usuarios. Es fundamental abordar sus casos prácticos, recoger sus comentarios y perfeccionar continuamente la plataforma mediante la iteración. La IdP es la capa que conecta estas herramientas, abstrayendo su complejidad para que los desarrolladores puedan realizar tareas a través de un modelo de autoservicio sencillo. El objetivo es que la forma correcta de hacer las cosas sea la más sencilla, de modo que los desarrolladores puedan crear y lanzar productos con confianza y autonomía.
La carga cognitiva hace referencia a la cantidad total de esfuerzo mental que se utiliza en la memoria de trabajo de una persona. Piensa en ello como el ancho de banda mental que tiene un desarrollador. Cuando ese ancho de banda se consume en tareas que no son de programación, su capacidad para centrarse en la resolución de problemas complejos disminuye.
Los desarrolladores suelen tener que cambiar entre decenas de herramientas, paneles de control y archivos de configuración diferentes solo para implementar un cambio sencillo. Cada cambio de contexto obliga al cerebro a cargar un nuevo conjunto de información, lo que resulta agotador mentalmente. Esta constante combinación de herramientas y procesos aumenta la carga cognitiva, lo que puede provocar agotamiento, más errores y una innovación más lenta.
La ingeniería de plataformas es la disciplina que se encarga de diseñar, crear y mantener una plataforma interna para desarrolladores. Piénsalo así: si la IDP es el producto, el equipo de ingeniería de plataformas es el equipo de producto responsable de su ciclo de vida. Sus clientes son los desarrolladores de la organización.
Este enfoque implica que la plataforma se trata como cualquier otro producto de software. El equipo de ingeniería de plataformas es el responsable de comprender las necesidades de los desarrolladores, definir una hoja de ruta y proporcionar un conjunto de herramientas fiable, seguro y fácil de usar.
Una pregunta frecuente es la distinción entre una plataforma y un portal. Aunque a veces se usan indistintamente, representan diferentes capas de la experiencia del desarrollador. Piensa en la plataforma interna para desarrolladores (IDP) como el motor completo, que abarca todas las herramientas, flujos de trabajo e infraestructura que impulsan tu ciclo de vida de desarrollo.
Por otro lado, el portal interno para desarrolladores es el panel de control de ese motor. Es la interfaz gráfica de usuario (GUI) que proporciona a los desarrolladores un lugar único y centralizado para acceder a las funciones de la plataforma. Un portal para desarrolladores puede ayudar a los desarrolladores a descubrir y usar herramientas, consultar documentación, crear nuevos servicios y comprobar el estado de sus compilaciones sin necesidad de entender el complejo mecanismo que se ejecuta en segundo plano. Aunque una plataforma interna para desarrolladores (IDP) integral suele incluir un portal para desarrolladores que mejora la usabilidad y la visibilidad, la plataforma en sí es el conjunto completo de tecnologías subyacentes y procesos automatizados.
Aunque las necesidades de cada empresa son diferentes, la mayoría de las plataformas de inteligencia de datos se basan en unos cuantos componentes principales que funcionan en conjunto. Estos componentes se centran en crear una ruta optimizada, segura y eficiente desde el desarrollo hasta la producción.
La experiencia de desarrollador es la interfaz central que abstrae la complejidad subyacente de la infraestructura. Suele ser un portal para desarrolladores o una interfaz de línea de comandos (CLI) que les da acceso de autoservicio a las herramientas, la documentación y los recursos que necesitan. Por ejemplo, los complementos de IDEs como Cloud Code ayudan a los desarrolladores a escribir y depurar código directamente en las herramientas que ya conocen, mientras que los portales creados con soluciones como Backstage en Google Cloud ofrecen una vista única y consolidada de todo su ecosistema de software.
Las plantillas de aplicaciones, a veces denominadas "rutas de oro", proporcionan a los desarrolladores una estructura predefinida con prácticas recomendadas para las nuevas aplicaciones. Estas plantillas pueden incluir código repetitivo, flujos de procesamiento de CI/CD configurados, archivos de infraestructura como código y paneles de control de monitorización. Recursos como el App Design Center pueden ayudar a los equipos a crear y gestionar un catálogo de estas plantillas, lo que garantiza que las prácticas recomendadas sean fáciles de descubrir y reutilizar. Este enfoque acelera la incorporación de los desarrolladores y crea coherencia en todos los servicios.
Este componente integra la seguridad directamente en el flujo de trabajo de desarrollo. Automatiza la aplicación de políticas de seguridad, como la gestión de identidades y accesos (IAM), el control de acceso basado en roles (RBAC), las políticas de red, el análisis de vulnerabilidades y el endurecimiento de la infraestructura. Al integrar la seguridad en los cimientos de la plataforma, los equipos pueden "aplicar la estrategia de seguridad desde el principio" y abordar posibles problemas en las primeras fases del ciclo de vida de desarrollo. De esta forma, se evita que la seguridad se convierta en un cuello de botella justo antes de la producción.
Una base centrada en las aplicaciones crea una capa de abstracción estandarizada sobre la infraestructura subyacente. Proporciona un modelo unificado para las principales preocupaciones operativas, ofreciendo un enfoque único para las redes, la seguridad y la observabilidad que funciona en todos los entornos. Esta coherencia simplifica la gestión y reduce la carga cognitiva de los desarrolladores, que no tienen que preocuparse por los detalles únicos de cada objetivo de despliegue, como una configuración específica de clúster de Google Kubernetes Engine (GKE).
Un IDP gestiona los runtimes de las aplicaciones donde se ejecuta el código. Estos entornos de ejecución pueden ser plataformas de orquestación de contenedores como GKE, plataformas sin servidor como Cloud Run u otros entornos de computación. El IDP automatiza el aprovisionamiento, la configuración y el mantenimiento de estos runtimes. De esta forma, los desarrolladores pueden desplegar sus aplicaciones de forma rápida y fiable sin necesidad de tener conocimientos profundos sobre los servicios de computación subyacentes.
La plataforma de aplicaciones en la nube es el conjunto integrado de servicios en la nube que sirve de base para toda la IDP. Reúne recursos de computación, almacenamiento, redes, APIs de Cloud, herramientas de CI/CD y observabilidad en un sistema cohesionado. Crear una IDP sobre una base integral como Google Cloud puede permitir a los equipos aprovechar servicios gestionados y potentes para acelerar el desarrollo, mejorar la fiabilidad y asegurar que la plataforma pueda escalar para satisfacer la demanda.
Adoptar una plataforma interna para desarrolladores puede ofrecer ventajas significativas a las organizaciones de ingeniería.
Experiencia de desarrollo mejorada
Al reducir la carga cognitiva y proporcionar flujos de trabajo de autoservicio sencillos, las IDPs pueden ayudar a mejorar la experiencia de los desarrolladores.
Tiempo de lanzamiento más rápido
La automatización y la estandarización pueden ayudar a acelerar el proceso de creación e implementación de software, lo que permite a los equipos ofrecer valor a los clientes más rápidamente.
Mayor fiabilidad y coherencia
Las plataformas de desarrollo interno pueden ayudar a aplicar prácticas recomendadas mediante rutas de oro y pueden dar lugar a implementaciones de aplicaciones más coherentes y fiables.
Seguridad y cumplimiento mejorados
Las políticas de seguridad se pueden integrar directamente en las plantillas y los flujos de trabajo automatizados de la plataforma, lo que garantiza que todos los servicios nuevos cumplan los requisitos de cumplimiento desde el principio.
Mayor autonomía de los desarrolladores
Centralizar la gestión de la plataforma puede ayudar a los desarrolladores a centrarse en las funciones y les da autonomía para gestionar el ciclo de vida de sus aplicaciones.
Para ver cómo funciona una IDP en la práctica, vamos a analizar un ejemplo común de plataforma interna para desarrolladores que usa Google Cloud. Imagina que un desarrollador necesita crear un nuevo microservicio que requiere su propia base de datos y un flujo de procesamiento de CI/CD.
El desarrollador tendría que crear manualmente un repositorio de Cloud Source, escribir un módulo de Terraform para aprovisionar una base de datos de Cloud SQL, crear y configurar un archivo de despliegue de Google Kubernetes Engine (GKE) (YAML), configurar un nuevo activador en Cloud Build y gestionar los permisos de IAM para todo. Esto podría llevar días e implicar a varios equipos.
El proceso es mucho más sencillo.
Petición desde el portal: el desarrollador inicia sesión en el portal para desarrolladores y encuentra una plantilla predefinida para un "microservicio de Python con una base de datos de Cloud SQL".
Introducción de datos sencilla: los usuarios rellenan un breve formulario con el nombre del servicio y el de su equipo.
Empieza la orquestación: el desarrollador hace clic en "Crear" y el orquestador de la plataforma toma el control.
Acciones automatizadas: en segundo plano, el orquestador realiza una serie de tareas automatizadas mediante las APIs de Google Cloud:
Finalización: el proceso se completa en cuestión de minutos. El desarrollador recibe una notificación con enlaces a su nuevo repositorio, a su aplicación en ejecución en el entorno de ensayo de GKE y a las credenciales de la base de datos, todo ello sin escribir una sola línea de configuración.
Para obtener más información sobre los conceptos y las tecnologías que componen una plataforma interna para desarrolladores, consulta estos recursos adicionales:
Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.