Desarrolladores de software en el trabajo

¿Qué es una plataforma interna para desarrolladores (IDP)?

Definición de plataforma interna para desarrolladores

Una plataforma interna para desarrolladores (IDP) es un conjunto centralizado de herramientas, servicios y flujos de trabajo que una organización crea para facilitar a los desarrolladores la creación, implementación y gestión de software, sin necesidad de que se encarguen de gestionar toda la infraestructura subyacente. 

En lugar de que cada equipo de desarrollo descubra su propia forma de configurar servidores, redes, protocolos de seguridad e implementaciones de software, los equipos pueden utilizar "rutas de oro" ya preparadas que ya siguen las reglas y buenas prácticas de la empresa. Los desarrolladores simplemente siguen las rutas (para "poner en marcha un nuevo microservicio" o "aprovisionar un entorno de vista previa", por ejemplo) y la plataforma se encarga del resto a través de la automatización en segundo plano.

El IDP es una forma de armonizar procesos dispares para que todos los equipos de desarrollo de una organización sigan, en líneas generales, las mismas normas. Y se ocupa de las decisiones infraestructurales subyacentes, de modo que los desarrolladores no necesitan profundos conocimientos en infraestructura para enviar código.

Los IDP suelen estar diseñados y mantenidos por un equipo dedicado a DevOps, operaciones o ingeniería de plataformas, pero sus principales usuarios son los desarrolladores de aplicaciones. La plataforma combina varias cadenas de herramientas y tecnologías diferentes, como orquestación de contenedores, infraestructura como código (IaC), integración continua/entrega continua (CI/CD) y herramientas de observabilidad, en un ecosistema cohesivo.

Beneficios de un IDP

Una plataforma de desarrollo integrado (IDP) aporta orden y coherencia a las capacidades de ingeniería de software, entrega y desarrollo 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ándolas y optimizándolas para obtener numerosos beneficios.

Cambio de contexto minimizado

La capacidad de un ingeniero para entrar y mantener un "estado de flujo", la condición de un enfoque profundo en el trabajo de codificación significativo, vale mucho para la organización que pretende innovar en software. En este estado, la atención es indivisiva 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 de contexto de un tipo de problema a otro y este cambio mental puede descarrilar su progreso en el primer problema, obligándoles a empezar de cero cuando finalmente vuelven al primer problema. Por ejemplo, imagine a un programador que intenta solucionar un problema identificado en un informe de error: por qué una utilidad de reserva de hotel no muestra horas y fechas en la zona horaria correcta del usuario. Es un problema complicado que implica cómo JavaScript maneja el tiempo a un nivel fundamental. No se trata de una simple cuestión de formato. Están rastreando cómo las marcas de tiempo se mueven por el backend y la interfaz y llegan a la IU. Están pensando en la configuración local del navegador y en cómo se comportan los objetos de fecha bajo diferentes condiciones. Es mucha información que hay que retener, pero están a punto de dar con la clave.

Luego tienen que salir de su editor y abrir una herramienta CI/CD, buscar el pipeline correcto para el servicio, tratar de recordar cómo este proyecto en particular maneja las implementaciones, modificar una configuración, esperar a que se ejecute el pipeline, abrir una herramienta de monitorización separada para verificar el comportamiento...

Tuvieron que dejar de centrarse en el análisis del problema y pasar a ocuparse de la infraestructura, las herramientas y los procesos. Y, cuando vuelven al problema, la comprensión sutil que habían adquirido se ha esfumado. Ahora tienen que empezar de cero. Esto representa una pérdida de tiempo para la organización y frustración para el ingeniero. Una IDP reduce este despilfarro al ocuparse de los problemas terciarios, lo que se traduce en una comercialización más rápida, una mayor productividad de los desarrolladores y una mejor experiencia de los desarrolladores.

Flujos de trabajo estandarizados

A medida que las organizaciones crecen, sus entornos de desarrollo se vuelven cada vez más complejos. Algunos equipos pueden adoptar una determinada herramienta, mientras que otros pueden elegir una herramienta competidora diferente para realizar una tarea similar. Los equipos pueden desarrollar flujos de trabajo dispares y tomar decisiones sobre infraestructura, implementación o seguridad que son útiles individualmente para su caso de uso pero que causan conflictos o ineficiencias en conjunto. Con entornos inconsistentes, abundan los cuellos de botella. Estas incoherencias se acumulan con el tiempo, haciendo que los sistemas sean más difíciles de escalar. Por el contrario, la IDP transforma un conjunto fragmentado e inconsistente de prácticas en flujos de trabajo de desarrolladores y procesos de entrega de software cohesivos y repetibles.

Consideraciones como convenciones de nomenclatura, prácticas de seguridad, canalizaciones de CI/CD: una IDP reduce la variabilidad al proporcionar plantillas y establecer flujos de trabajo coherentes a través de andamios reutilizables. De este modo, los desarrolladores no necesitan empezar desde cero, sino que pueden seleccionar una plantilla que aprovisione automáticamente un repositorio, configure los conductos de compilación e implementación e integre la monitorización y la seguridad.

Seguridad y cumplimiento reforzados

Una IDP integra la funcionalidad de seguridad y cumplimiento directamente en sus flujos de trabajo. Por ejemplo, puede garantizar que todos los servicios incluyan los mecanismos de autenticación adecuados y se adhieran a las configuraciones de red aprobadas. De este modo, el desarrollador no tiene que perder tiempo pensando si un enfoque concreto cumplirá los requisitos. Se siguen los protocolos adecuados porque los controles se aplican de forma coherente, están integrados en la propia plataforma.

Mejora de la colaboración

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 pasar de un proyecto a otro, y los nuevos desarrolladores pueden incorporarse más rápidamente.

Escalabilidad

Sin un marco coherente, el crecimiento organizacional puede provocar el caos, ya que cada nuevo servicio introduce más variedad y complejidad. Una IDP proporciona una base estable de nivel empresarial que permite escalar y ayuda a optimizar la asignación de recursos. Las buenas 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.

Desarrollo de aplicaciones

Suba a bordo: desarrollo de aplicaciones empresariales en la nube

En este vídeo, el Dr. Peter Haumer explica cómo se desarrollan las aplicaciones empresariales modernas en la nube híbrida mediante la demostración de diferentes componentes y prácticas, como IBM Z Open Editor, IBM Wazi y Zowe. 

Componentes del IDP

La IDP no es una única herramienta, sino un sistema de capacidades que funcionan conjuntamente para abordar las necesidades específicas de los desarrolladores y crear una experiencia más fluida para ellos. Las implementaciones difieren, pero estos son los componentes más comunes.

Portal del desarrollador: a menudo denominado portal interno del desarrollador, 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 de control central, un 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 todo el mundo sepa a quién pertenece qué y cómo interactúan los servicios entre sí.

Andamiaje y plantillas: estos son planos predefinidos para crear nuevos servicios que permiten a los usuarios crear rápidamente repositorios de GitHub, configurar pipelines de CI/CD, aplicar configuraciones estándar, integrar información de registro y monitorización y más. Los pipelines están preconfigurados y reutilizables con buenas prácticas integradas, así 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 servicios en la nube, a menudo utilizando los principios de GitOps para la automatización.

Gestión de entornos: en muchas organizaciones, los entornos de desarrollo, staging y producción se distancian con el tiempo debido a diferencias de configuración, dependencias desajustadas y datos incoherentes. Una IDP aborda esto fomentando la paridad del entorno, eliminando la ambigüedad y haciendo que los entornos sean más predecibles.

Observabilidad: la visibilidad se integra en el comportamiento del sistema de forma predeterminada, proporcionando perspectivas 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 codifiquen de forma rígida y que el acceso sea controlado y auditable.

Gobierno: las políticas de seguridad y cumplimiento se aplican automáticamente, y los controles de gobierno como los cuadros de mando y el control de acceso basado en roles (RBAC) definen quién puede implementar, quién puede acceder a qué y cómo se aprueban los flujos de trabajo.

Documentación: en lugar de documentación dispersa, reside junto a los servicios y se puede descubrir a través del portal.

IA y el IDP

Aunque un asistente de codificación agéntica 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 bootstrapping hasta la creación de rutas doradas y la integración de herramientas. La arquitectura aún requiere el juicio humano, ya que se basa tanto en la estructura organizativa y de equipo como en la tecnología.

Una vez creado, un asistente de codificación agéntica puede operar dentro de un IDP, ayudando a transformarlo de un portal estático en un entorno más dinámico y orientado a tareas. Por ejemplo, IBM Bob puede integrarse con componentes de la plataforma y asistir en tareas como:

  • Lectura de plantillas y estándares de servicio
  • Interacción con configuraciones y flujos de trabajo de CI/CD
  • Generación y modificación de código entre repositorios
  • Ayudar a activar compilaciones, pruebas e implementaciones (con las aprobaciones adecuadas)
  • Interpretación de registros y datos de observabilidad a través de herramientas conectadas

Es 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, cumpliendo con los estándares, las barreras y las rutas doradas. En entornos bien definidos, puede utilizar los metadatos del catálogo de servicios y el contexto para guiar sus acciones, sin dejar de incorporar las reseñas humanas cuando sea necesario.

Autor

Cole Stryker

Staff Editor, AI Models

IBM Think

Soluciones relacionadas
IBM Enterprise Application Service for Java

Un servicio totalmente gestionado y de inquilino único para desarrollar y entregar aplicaciones Java.

Explore las aplicaciones Java
Soluciones DevOps

Utilice el software y las herramientas de DevOps para crear, implementar y gestionar aplicaciones nativas de la nube en varios dispositivos y entornos.

Explore las soluciones DevOps
Servicios de desarrollo de aplicaciones Enterprise

El desarrollo de aplicaciones en la nube significa crear una vez, iterar rápidamente e implementar en cualquier lugar.

Servicios de desarrollo de aplicaciones
Dé el siguiente paso

Los servicios de consultoría de desarrollo de aplicaciones en la nube de IBM Cloud ofrecen orientación experta y soluciones innovadoras para agilizar su estrategia de nube. Colabore con los expertos en nube y desarrollo de IBM para modernizar, escalar y acelerar sus aplicaciones, y obtenga resultados transformadores para su empresa.

  1. Explore los servicios de desarrollo de aplicaciones
  2. Comience a crear con IBM Cloud de forma gratuita