Una plataforma interna para desarrolladores (IDP) es un conjunto centralizado de herramientas, servicios y flujos de trabajo internos que una organización crea para facilitar a los desarrolladores la creación, despliegue y operación de software sin necesidad de gestionar toda la infraestructura subyacente por sí mismos.
En lugar de que cada equipo de desarrollo se dé cuenta de su propia manera de configurar servidores, redes, protocolos de seguridad y despliegues de software, los equipos pueden usar “rutas de oro” listas para usar que ya siguen las reglas y las mejores prácticas de la empresa. Los desarrolladores simplemente siguen las rutas (para “activar un nuevo microservicio” o “aprovisionar un entorno de vista previa”, por ejemplo) y la plataforma maneja el resto a través de la automatización en segundo plano.
El IDP es una forma de reunir procesos dispares para que todos los equipos de desarrollo dentro de una organización sigan aproximadamente las mismas reglas. Además, se encarga de las decisiones relacionadas con la infraestructura subyacente, por lo que los desarrolladores no necesitan tener un gran conocimiento técnico en materia de infraestructura para publicar código.
Los IDP generalmente son diseñados y mantenidos por un equipo dedicado de DevOps, operaciones o ingeniería de plataforma, pero sus usuarios principales son desarrolladores de aplicaciones. La plataforma combina varias cadenas de herramientas y tecnologías, como la orquestación de contenedores, la infraestructura como código (IaC), la integración continua y la entrega continua (CI/CD) y las herramientas de observabilidad en un ecosistema cohesionado.
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Un IDP aporta orden y coherencia a las capacidades de ingeniería, entrega y desarrollo de software de una organización, que de otro modo estarían fragmentadas. Permite a las organizaciones gestionar la complejidad de sus entornos y prácticas de desarrollo de software, simplificándolos y optimizándolos para obtener muchos beneficios.
La capacidad de un ingeniero para entrar y mantener un “estado de flujo”, la condición de un enfoque profundo en un trabajo de programación significativo, vale mucho para la organización que pretende innovar en software. En este estado, la atención es indivisa y el progreso se siente continuo. Los ingenieros pueden desglosar problemas más complejos porque disponen de tiempo ininterrumpido para atenderlos.
Sin embargo, el estado de flujo es frágil. A veces, los desarrolladores tienen que cambiar los contextos de un tipo de problema a otro y este cambio mental puede descarrilar su progreso en el primer problema, obligándolos a comenzar desde cero cuando finalmente regresan al primer problema. Por ejemplo, imagine que un codificador intenta solucionar un problema identificado en un informe de error: por qué una empresa de servicios públicos de reserva de hotel no muestra horas y fechas en la zona horaria correcta del usuario. Es un problema complicado que involucra cómo JavaScript maneja el tiempo a un nivel fundamental. No es un simple problema de formato. Están rastreando cómo se mueven las marcas de tiempo a través del backend y el frontend y hacia la interfaz de usuario (IU). Están pensando en la configuración del navegador local y en cómo se comportan los objetos de fecha en diferentes condiciones. Es mucha información para tener en mente, pero están cerca de un avance.
Luego tienen que salir de su editor y abrir una herramienta de CI/CD, buscar el pipeline correcto para el servicio, tratar de recordar cómo este proyecto en particular maneja los despliegues, modificar una configuración, esperar a que se ejecute el pipeline, abrir una herramienta de monitoreo separada para verificar el comportamiento...
Tuvieron que dejar de lado el razonamiento sobre el problema y adoptar un enfoque diferente, y centrarse en la infraestructura, las herramientas y los procesos. Y cuando vuelven a encontrar el error, la sutil comprensión que desarrollaron sobre el problema se esfumó. Ahora tienen que empezar de cero. Esto representa una pérdida de tiempo para la organización y una fuente de frustración para el ingeniero. Un IDP reduce este desperdicio al ocuparse de aspectos secundarios, lo que se traduce en un menor tiempo de comercialización, una mayor productividad de los desarrolladores y una mejor experiencia para ellos.
A medida que las organizaciones crecen, sus entornos de desarrollo se vuelven cada vez más complejos. Algunos equipos pueden adoptar una herramienta determinada, mientras que otros pueden optar por una herramienta diferente de la competencia para realizar una tarea similar. Los equipos pueden desarrollar flujos de trabajo dispares y tomar decisiones sobre infraestructura, despliegue o seguridad que, individualmente, resultan útiles para su caso de uso, pero que en conjunto provocan conflictos o ineficiencias. En entornos incongruentes, abundan los cuellos de botella. Estas incongruencias se acumulan con el tiempo, lo que dificulta la escalabilidad de los sistemas. En cambio, el IDP transforma un conjunto de prácticas fragmentadas e incongruentes en flujos de trabajo de desarrollo y procesos de entrega de software coherentes y repetibles.
Las consideraciones como convenciones de nomenclatura, prácticas de seguridad, pipelines de CI/CD: un IDP reduce la variabilidad al proporcionar plantillas y establecer flujos de trabajo coherentes a través de andamios reutilizables. De esta manera, los desarrolladores no tienen que empezar desde cero, sino que pueden elegir una plantilla que aprovisiona automáticamente un repositorio, configura los procesos de compilación y despliegue e integra funciones de monitoreo y seguridad.
Un IDP integra la funcionalidad de seguridad y cumplimiento directamente en sus flujos de trabajo. Por ejemplo, puede garantizar que todos los servicios incluyan mecanismos de autenticación adecuados y se adhieran a las configuraciones de red aprobadas. De esta manera, el desarrollador no tiene que perder tiempo pensando si un enfoque en particular cumplirá con los requisitos. Se siguen los protocolos adecuados porque los controles se aplican de manera sistemática: están integrados en la propia plataforma.
Cuando todos los equipos siguen los mismos patrones, es más fácil para los desarrolladores comprender y contribuir a bases de código desconocidas. Las convenciones compartidas reducen la carga cognitiva necesaria para cambiar entre proyectos, y los nuevos desarrolladores pueden incorporarse más rápidamente.
Sin un marco coherente, el crecimiento de la organización puede generar caos, ya que cada nuevo servicio introduce más variabilidad y complejidad. Un IDP proporciona una base estable de nivel empresarial que permite escalar y ayuda a optimizar la asignación de recursos. Las mejores prácticas se pueden propagar automáticamente a través de los sistemas, e incluso los pequeños equipos de ingeniería de plataformas pueden influir en las prácticas de desarrollo de una gran organización.
El IDP no es solo una herramienta, sino un conjunto de funciones que se complementan entre sí para satisfacer las necesidades específicas de los desarrolladores y ofrecerles una experiencia más fluida. Las implementaciones difieren, pero estos son los componentes más comunes.
Portal de desarrolladores: a menudo se le llama portal interno para desarrolladores, y es la interfaz principal con la que interactúan los desarrolladores. A menudo creado con herramientas de código abierto como Backstage, proporciona un panel central, catálogo de servicios, documentación, plantillas, complementos y flujos de trabajo. Es el panel de control de autoservicio para desarrolladores de la plataforma.
Catálogo de servicios: el catálogo de servicios es un inventario estructurado de todos los servicios, sistemas y recursos. Define la propiedad, las dependencias y proporciona otros metadatos para que todos sepan quién posee qué y cómo interactúan los servicios entre sí.
Andamios y plantillas: estos son proyectos técnicos para crear nuevos servicios que permiten a los usuarios crear rápidamente repositorios GitHub, configurar pipelines de CI/CD, aplicar configuraciones estándar, integrar registros y monitoreo y más. Los pipelines están preconfigurados y son reutilizables con las mejores prácticas integradas, por lo que los desarrolladores no tienen que diseñarlos desde cero.
Aprovisionamiento de infraestructura: esta capa se encarga de la creación y gestión de entornos, recursos y cargas de trabajo de aplicaciones en arquitecturas híbridas o multinube de diversos proveedores de nube, a menudo utilizando los principios de GitOps para la automatización.
Gestión de entornos: en muchas organizaciones, los entornos de desarrollo, de pruebas y de producción se van desajustando con el tiempo debido a diferencias de configuración, dependencias incompatibles y datos incoherentes. Un IDP aborda esto fomentando la paridad del entorno, eliminando la ambigüedad y haciendo que los entornos sean más predecibles.
Observabilidad: la visibilidad está integrada en el comportamiento del sistema de forma predeterminada, lo que proporciona insights en tiempo real, incluidos registros, métricas y rastreos.
Gestión de secretos y configuración: las claves API , las credenciales y las variables de entorno se gestionan de forma segura, lo que ayuda a garantizar que los secretos nunca se incluyan de forma fija en el código y que el acceso esté controlado y sea auditable.
Gobernanza: las políticas de seguridad y cumplimiento se aplican automáticamente, y los controles de gobernanza, como las tablas de puntuación y el control de acceso basado en roles (RBAC), definen quién puede desplegar, quién puede acceder a qué y cómo se aprueban los flujos de trabajo.
Documentación: en lugar de estar dispersa, la documentación se encuentra junto a los servicios y se puede encontrar a través del portal.
Si bien un asistente de programación con agentes no ensamblará un IDP de nivel de producción por sí solo, puede planificar, generar e iterar activamente en múltiples pasos, acelerando todo el proceso, desde el arranque de la plataforma hasta la creación de rutas de oro e integración de herramientas. La arquitectura aún requiere juicio humano, ya que se trata tanto de estructura organizacional y de equipo como de tecnología.
Una vez creado, un asistente de programación agéntica puede operar dentro de un IDP, ayudando a transformarlo de un portal estático a un entorno más dinámico y orientado a tareas. Por ejemplo, IBM Bob puede integrar con componentes de la plataforma y asistir en tareas como:
Mucho más que un chatbot, actúa como una interfaz inteligente para la plataforma. En lugar de navegar manualmente por formularios y flujos de trabajo, un desarrollador puede solicitar acciones como “Crear un nuevo servicio”, y el asistente puede ayudar a orquestar los pasos necesarios, adhiriéndose a estándares, medidas de seguridad y rutas doradas. En entornos bien definidos, puede usar metadatos y contexto del catálogo de servicios para guiar sus acciones, sin dejar de incorporar la revisión humana donde sea necesario.
watsonx.ai permite a los equipos de desarrollo de aplicaciones integrar perfectamente la IA en sus flujos de trabajo. Desde la creación de modelos hasta su despliegue, este completo kit de herramientas da soporte a todo el ciclo de vida de la IA.
Utilice una plataforma para el desarrollo de aplicaciones de mainframe, pruebas, demostración y entrenamiento en hardware x86.
Descubra la plataforma de desarrollo de aplicaciones móviles de IBM para diseñar, crear prototipos y comercializar aplicaciones de manera rápida y sencilla.