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. Las plataformas internas para desarrolladores (IDP) están diseñadas para aliviar la carga de los desarrolladores para que puedan enfocarse en el desarrollo de software. El objetivo principal de una IDP no es solo enviar software más rápido, sino reducir la carga mental de los desarrolladores mediante la creación de plantillas y automatización seguras, eficientes y bien respaldadas (a menudo denominadas “rutas doradas”) para crear e implementar aplicaciones.
Una plataforma interna para desarrolladores integra un conjunto seleccionado de tecnologías y herramientas, creado y mantenido por un equipo de plataforma exclusivo. Esta pila suele incluir soluciones para la organización de contenedores, herramientas de infraestructura como código (IaC) y canalizaciones de CI/CD potenciadas por proyectos de código abierto.
Una plataforma interna para desarrolladores (IDP) debe abordarse como un producto, con los desarrolladores como sus usuarios. Es fundamental abordar sus casos de uso, recopilar sus comentarios y perfeccionar continuamente la plataforma a través de la iteración. La IDP es la capa que conecta estas herramientas y abstrae su complejidad para que los desarrolladores puedan realizar tareas a través de un modelo simple de autoservicio. El objetivo es que la forma correcta sea la forma fácil, lo que les permite a los desarrolladores crear y enviar con confianza y autonomía.
La carga cognitiva hace referencia a la cantidad total de esfuerzo mental que se usa 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 enfocarse en la resolución de problemas complejos disminuye.
A menudo, los desarrolladores deben cambiar entre docenas de herramientas, paneles y archivos de configuración diferentes solo para implementar un simple cambio. Cada cambio de contexto obliga al cerebro a cargar un nuevo conjunto de información, lo que es mentalmente agotador. Este constante manejo de diferentes 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 de diseñar, crear y mantener una plataforma interna para desarrolladores. Piensa en esto: si la IDP es el producto, entonces 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 significa que la plataforma se trata como cualquier otro producto de software. El equipo de ingeniería de plataformas es responsable de comprender las necesidades de los desarrolladores, definir una hoja de ruta y proporcionar un conjunto de herramientas confiable, seguro y fácil de usar.
Una pregunta frecuente es la distinción entre una plataforma y un portal. Si bien los términos 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 ese motor. Es la interfaz gráfica de usuario (GUI) que les 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, aplicar andamiaje a nuevos servicios y verificar el estado de sus compilaciones sin necesidad de comprender la compleja maquinaria que se ejecuta en segundo plano. Si bien una IDP integral suele incluir un portal para desarrolladores para mejorar la usabilidad y la visibilidad, la plataforma en sí es el conjunto completo de tecnologías subyacentes y procesos automatizados.
Si bien las necesidades de cada empresa son diferentes, la mayoría de las IDP se basan en algunos componentes principales que trabajan en conjunto. Estos componentes se enfocan en crear una ruta optimizada, segura y eficiente desde el desarrollo hasta la producción.
La experiencia de los desarrolladores es la interfaz central que abstrae la complejidad subyacente de la infraestructura. A menudo, es 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 IDE como Cloud Code ayudan a los desarrolladores a escribir y depurar código directamente en las herramientas que les resultan familiares, mientras que los portales creados con soluciones como Backstage en Google Cloud proporcionan una vista única y consolidada de todo su ecosistema de software.
Las plantillas de apps, a veces llamadas rutas doradas, les proporcionan a los desarrolladores una estructura predefinida de prácticas recomendadas para las aplicaciones nuevas. Estas plantillas pueden incluir código estándar, canalizaciones de CI/CD configuradas, archivos de infraestructura como código y paneles de supervisión. Recursos como App Design Center pueden ayudar a los equipos a crear y administrar 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 desarrolladores y crea coherencia entre 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 administració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. Cuando se incorpora la seguridad en la base de la plataforma, los equipos pueden "implementar la seguridad de manera temprana" y abordar los posibles problemas en las primeras etapas del ciclo de vida del desarrollo. Esto evita que la seguridad se convierta en un cuello de botella justo antes de la producción.
Una base centrada en la aplicación crea una capa de abstracción estandarizada sobre la infraestructura subyacente. Proporciona un modelo unificado para las principales preocupaciones operativas, ya que ofrece un único enfoque para las redes, la seguridad y la observabilidad que funciona en todos los entornos. Esta coherencia simplifica la administración y reduce la carga cognitiva de los desarrolladores, que no necesitan preocuparse por los detalles únicos de cada destino de implementación, como una configuración específica de clústeres de Google Kubernetes Engine (GKE).
Una IDP administra los entornos de ejecución de aplicación en los que se ejecuta el código. Estos entornos de ejecución pueden ser plataformas de organización de contenedores como GKE, plataformas sin servidores como Cloud Run o cualquier otro entorno de procesamiento. La IDP automatiza el aprovisionamiento, la configuración y el mantenimiento de estos entornos de ejecución. Esto permite que los desarrolladores implementen sus aplicaciones de forma rápida y confiable sin necesidad de tener experiencia en los servicios de procesamiento subyacentes.
La plataforma de aplicaciones en la nube es el conjunto integrado de servicios en la nube que sirve como la columna vertebral de toda la IDP. Reúne procesamiento, almacenamiento, redes, APIs de Cloud, herramientas de CI/CD y observabilidad en un sistema cohesivo. Crear una IDP en una base integral como Google Cloud puede permitir que los equipos aprovechen servicios administrados y potentes para acelerar el desarrollo, mejorar la confiabilidad y garantizar que la plataforma pueda escalar para satisfacer la demanda.
Adoptar una plataforma interna para desarrolladores puede ofrecer ventajas significativas para las organizaciones de ingeniería.
Experiencia mejorada para los desarrolladores
Con la reducción de la carga cognitiva y la provisión de flujos de trabajo de autoservicio simples, las IDP pueden ayudar a mejorar la experiencia de los desarrolladores.
Tiempo más rápido de salida al mercado
La automatización y la estandarización pueden ayudar a acelerar el proceso de creación e implementación de software, lo que les permite a los equipos entregar valor a los clientes con mayor rapidez.
Mayor confiabilidad y coherencia
Las IDP pueden ayudar a aplicar prácticas recomendadas a través de rutas doradas y pueden llevar a implementaciones de aplicaciones más coherentes y confiables.
Seguridad y cumplimiento mejorados
Las políticas de seguridad se pueden integrar directamente en las plantillas de la plataforma y los flujos de trabajo automatizados, lo que garantiza que todos los servicios nuevos cumplan con los requisitos de cumplimiento desde el principio.
Mayor autonomía de los desarrolladores
Centralizar la administración de la plataforma puede liberar a los desarrolladores para que se enfoquen en las funciones y les da la autonomía para administrar el ciclo de vida de sus aplicaciones.
Para ver cómo funciona un IDP en la práctica, veamos un ejemplo común de plataforma interna para desarrolladores con Google Cloud. Imagina que un desarrollador necesita crear un nuevo microservicio que requiere su propia base de datos y canalización de CI/CD.
El desarrollador tendría que crear manualmente un Cloud Source Repository, escribir un módulo de Terraform para aprovisionar una base de datos de Cloud SQL, crear y configurar un archivo de implementación de Google Kubernetes Engine (GKE) (YAML), configurar un nuevo activador en Cloud Build y administrar los permisos de IAM para todo. Esto podría tardar días y requerir la participación de varios equipos.
El proceso es mucho más sencillo.
Solicitud desde el portal: El desarrollador accede al portal para desarrolladores y encuentra una plantilla prediseñada para un “microservicio de Python con una base de datos de Cloud SQL”.
Entradas simples: Completa un formulario corto con el nombre del servicio y el nombre de su equipo.
Comienza la organización: El desarrollador hace clic en "Crear" y el organizador de la plataforma toma el control.
Acciones automatizadas: En segundo plano, el orquestador realiza una serie de tareas automatizadas con APIs de Google Cloud:
Finalización: En cuestión de minutos, el proceso se completa. El desarrollador recibe una notificación con vínculos a su nuevo repositorio, su aplicación en ejecución en el entorno de etapa de pruebas de GKE y las credenciales de la base de datos, todo 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:
Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.