Internal Developer Platform Developer Hub de Red Hat | Openshift Commons Buenos Aires 2024
|Red Hat Developer Hub, el arte de lo posible Desde creación de Máquinas Virtuales hasta aplicación
Desafíos en el desarrollo ágil
- En el entorno actual, los equipos de desarrollo se enfrentan a numerosos desafíos relacionados con tecnologías y productos. Estos incluyen la convivencia de sistemas modernos y legacy, que generan complejidades al abordar la integración y la adopción de nuevas herramientas.
- Uno de los puntos críticos es el proceso de incorporación de nuevos miembros al equipo, el cual puede ser extremadamente tedioso. Este proceso involucra la solicitud de múltiples accesos a sistemas, lo que puede tardar entre dos a tres semanas en completarse, afectando la productividad del nuevo empleado desde el día uno.
- La falta de información centralizada y actualizada sobre la documentación del sistema representa otra problemática. La documentación puede estar dividida entre diversas plataformas y no ser fácilmente accesible, lo que lleva a los desarrolladores a perder tiempo buscando información vital para su trabajo.
- La «parálisis por análisis» es un fenómeno común, donde los desarrolladores se ven abrumados por el número de herramientas y soluciones disponibles, lo que en vez de facilitar el trabajo, retrasa la ejecución de tareas debido a la necesidad de analizar todas las opciones posibles.
«El onboarding es tedioso ya que implica solicitar múltiples accesos, lo que genera una pérdida de tiempo considerable en la productividad del nuevo miembro.»
Carga cognitiva y fragmentación del conocimiento
- Los desarrolladores no solo deben enfocarse en la programación, sino también en resolver problemas técnicos y buscar información, lo que incrementa su carga cognitiva. Esto se traduce en un enfoque dividido entre el desarrollo y la resolución de problemas en lugar de una dedicación plena al código.
- La desestandarización en la elección de stacks tecnológicos por parte de diferentes equipos también plantea retos significativos. Aunque la autonomía en la elección de herramientas puede ser beneficiosa, puede resultar en una falta de unificación en los procesos y en la colaboración entre equipos, lo que genera fragmentación del conocimiento.
- Asimismo, la salida de un miembro del equipo sin procesos estandarizados puede llevar a la pérdida de información crítica, ya que el conocimiento se encuentra disperso en sistemas y documentos que no se actualizan.
«La fragmentación del conocimiento es un problema común cuando los procesos no están estandarizados y los equipos no comparten información.»
Internal Developer Platform: Una solución
- Para abordar los retos mencionados, surge el concepto de la «Internal Developer Platform». Esta plataforma permite a los desarrolladores acceder a toda la información relevante desde un solo panel, facilitando la gestión de sus aplicaciones y sistemas.
- Beneficios clave de estas plataformas incluyen su modularidad y extensibilidad, permitiendo un fácil acceso a la documentación, el estado de las aplicaciones y los pipelines sin la necesidad de realizar múltiples queries o solicitudes de apoyo.
- Este tipo de plataforma busca reducir la carga cognitiva y de tiempo de los desarrolladores al centralizar información valiosa y facilitar procesos como el onboarding, además de proveer un catálogo de los sistemas dentro de la organización.
«La Internal Developer Platform permite a los desarrolladores gestionar la información en un único lugar, minimizando la búsqueda y maximizando la productividad.»
Introducción a Red Hat Developer Hub y Backstage
- Red Hat Developer Hub es una plataforma que facilita a los desarrolladores el acceso y la gestión de recursos necesarios para sus proyectos, incluyendo la creación de repositorios y la solicitud de accesos. Este enfoque busca ofrecer un servicio de autoservicio para que los desarrolladores no dependan constantemente de otros para obtener información o recursos.
- Esta plataforma está basada en Open Source Backstage, un proyecto donado por Spotify hace cuatro años que ha ganado popularidad en la comunidad por su utilidad en la creación de plataformas de desarrollo interno.
- Backstage ha estado consistentemente entre los cinco principales proyectos con más contribuciones, lo que sugiere una fuerte adopción y satisfacción en la comunidad de desarrolladores.
«Red Hat Developer Hub entrega un único panel de acceso donde todos pueden entrar, independientemente del equipo en el que estén.»
Beneficios de la Plataforma
- La plataforma de Red Hat facilita el proceso de onboarding, proporcionando experiencias estandarizadas y acceso a documentación esencial. Permite a los nuevos desarrolladores empezar a trabajar en nuevas soluciones rápidamente sin tener que atravesar obstáculos administrativos.
- Se resalta la importancia de los roles y perfiles dentro de la plataforma, lo que permite una mejor gestión de accesos y cumple con las normativas de seguridad de manera efectiva. Esto contribuye a un entorno de trabajo más seguro y organizado.
- Además, la capacidad de autoservicio y la integración de plugins permiten que los desarrolladores introduzcan nuevas funcionalidades de manera dinámica y en tiempo real. Esto acelera la implementación de cambios y mejora la productividad a nivel organizacional.
«El objetivo final es mejorar la productividad del desarrollador y reducir el tiempo que pasan buscando información.»
Automatización con Plantillas de Software
- Los software templates son herramientas clave en la plataforma que permiten automatizar muchos procesos. Esto es crucial para aquellos interesados en la automatización, ya que ofrece una integración fluida con Ansible, facilitando la ejecución de trabajos desde la interfaz de Developer Hub.
- Al unificar los entornos y proporcionar acceso centralizado a diversas herramientas, Developer Hub no solo optimiza la gestión, sino que también simplifica el proceso de selección y acceso a sistemas y servicios disponibles.
- Por ejemplo, cuando un desarrollador solicita la creación de una máquina virtual, puede hacerlo a través de un software template que simplifica y acelera el proceso sin tener que interactuar manualmente con cada componente operativo.
«Se busca disminuir la carga cognitiva del desarrollador, permitiéndole enfocarse en la automatización en lugar de lidiar con múltiples plataformas.»
Creación de una Máquina Virtual en GitLab
- Se inicia el proceso de creación de una máquina virtual utilizando GitLab como repositorio Git. No obstante, este proceso puede llevarse a cabo en cualquier otro sistema de repositorio, como GitHub o Bitbucket.
- Se especifica el ID del clúster donde la máquina virtual será creada, así como el namespace del usuario responsable. En este caso, el propietario de la aplicación se asigna a «user 2».
- La aplicación que se está registrando en el catálogo se llama «app Legacy 2», ya que existe una anterior denominada «app Legacy». Se procede a crear la aplicación y, si todo se ejecuta correctamente, se reciben dos URLs: una para el repositorio de código fuente y otra para la definición de la máquina virtual.
«Si todo sale bien, se ejecutarán una serie de acciones para provisionar la máquina virtual y registrar el componente en el catálogo.»
Integración y Sincronización con ArgoCD
- Una vez que la máquina virtual ha sido creada, se puede acceder a información sobre el estado de sincronización con ArgoCD. Esto facilita la gestión de operaciones en el clúster.
- Se destaca que la integración con diferentes herramientas, como GitLab, permite visualizar los problemas y pull requests sin necesidad de conocer a fondo su funcionamiento. Esto simplifica la interacción con los sistemas integrados.
«La gracia de esto es que puedo acceder a mucha información de los sistemas que están integrados sin tener que estresarme por entender cómo funcionan.»
Registro del API en el Catálogo
- Como desarrollador, se tiene el objetivo de registrar un API que permite generar imágenes de una mascota llamada Teddy utilizando un modelo preentrenado.
- Se resalta la importancia del catálogo, ya que ofrece información sobre el propietario del API y su funcionalidad, permitiendo que los demás desarrolladores sepan cómo consumirlo y a quién contactar en caso de problemas.
«La parte del catálogo se vuelve crítica porque aquí podemos ver quién es el dueño y cómo consumir el API.»
Generación de Aplicaciones a Partir de API
- Se propone generar una aplicación que consuma el API que ha sido registrado. Utilizando templates, se crea un esqueleto para una aplicación de tipo Python que va a interactuar con OpenShift AI.
- Este proceso incluye la solicitud de información como el endpoint y el namespace donde se desplegará la aplicación, además de la gestión de las actualizaciones en caso de estar trabajando en diferentes clústeres.
«La parte de los templates adquiere mucho valor porque permite que apliquen sus propios lineamientos al proceso.»
Integración Continua y Visualización de Procesos
- Se discute la capacidad de visualizar el flujo de la integración continua a través de herramientas como Detecton. Esto permite a los desarrolladores verificar si los pipelines se ejecutaron correctamente, fallaron o si hay algún problema en el proceso.
- Los datos de Argos CD proporcionan información sobre las actualizaciones de los valores iniciales, lo cual facilita el monitoreo del estado de los despliegues.
- Además, existe la posibilidad de observar la topología del sistema, donde se pueden revisar los recursos activos y su estado de funcionamiento. La consola de OpenShift es similar, pero aquí se accede mediante credenciales de Git o de Elda, lo que limita las acciones a solo visualizar datos sin realizar modificaciones.
«Esto nos da mucho valor desde el punto de vista de desarrollo.»
Mapeo de Componentes y APIs
- Se explica cómo realizar un mapeo dentro de una organización para entender las dependencias y relaciones entre componentes. Esto incluye la visualización de cómo se consumen las APIs y la documentación de esta información, especialmente al agregar nuevos componentes al sistema.
- Los detalles del pipeline también muestran que se logró crear un repositorio de código en GitHub, lo que otorga a los desarrolladores la posibilidad de utilizar herramientas como git clone o dep spaces para comenzar a trabajar en el desarrollo y la edición de la aplicación.
«Imaginen dentro de su organización poder hacer este tipo de mapeos, poder filtrar y buscar información respecto a cómo se está consumiendo.»
Interacción con Modelos de Inteligencia Artificial
- La interacción con modelos de Inteligencia Artificial es un tema central, ya que se explora cómo se puede acceder a estas aplicaciones desplegadas mediante OpenShift o APIs de terceros.
- Después de realizar pruebas, se confirma que la aplicación de Teddy está operativa, lo que demuestra la capacidad de despliegue y consumo de servicios de inferencia de AI en tiempo real.
«Esto es normalmente lo que ustedes van a estar haciendo: consumir desde su aplicación el acceso a un modelo de AI que está desplegado.»