De la felicidad al caos
Hace tiempo que quedó atrás ese pequeño monolito que cumplía con todos los requisitos de la empresa. Según fue creciendo la organización, surgió la necesidad de crear nuevos servicios y usar nuevas herramientas y, poco a poco, lo que había sido un simple monolito conectado a una única base de datos, se convirtió en una arquitectura compleja de servicios y herramientas conectadas entre sí. Los onboarding comenzaron a ser cada vez más difíciles y las nuevas incorporaciones pasaban semanas hasta empezar a ver un primer atisbo de productividad. Esta situación se volvió cada vez más frustrante y el incipiente equipo de Platform Engineering recibía cada vez más peticiones de ayuda de desarrolladores igualmente frustrados. Es entonces cuando Ada, líder del equipo de Platform, reúne a sus compañeros para intentar encontrar una solución.
De vuelta a la felicidad
Después de la reunión y tras hablar con los equipos de desarrollo para entender las necesidades y analizar el caos existente, el equipo llega a la conclusión de crear un Internal Developer Portal (IDP) que ayude a los desarrolladores con los siguientes requisitos:
-
Centralizar la información y documentación de los servicios en un único lugar.
-
Unificar herramientas internas y hacerlas accesibles desde el portal.
-
Reducir la fricción de crear nuevos servicios mediante procesos automatizados siguiendo las guías de buenas prácticas de la empresa.
Todo esto con un objetivo, que el desarrollador se centre en lo que de verdad importa, el negocio. Para ello es necesario, por un lado, reducir la carga cognitiva de los desarrolladores y, por otro lado, aumentar su autonomía.
«Business. Always business.»
– The Greek (The Wire)
Si te suena la historia anterior, puede que en tu empresa ya hayáis tenido la discusión de crear un Internal Developer Portal. En este post vamos a ver cómo podemos usar Backstage para desarrollarlo y las principales funcionalidades que incorpora.
¿Qué es Backstage?
Según la documentación oficial, Backstage es una herramienta abierta para desarrollar Developer Portals. Está desarrollada por Spotify y actualmente es un Incubating Project de la CNCF. Está formado por un backend con Node.js y un frontend con React escritos en TypeScript. Entre las principales funcionalidades, encontramos:
-
Software Catalog: Es el catálogo de componentes de la empresa. El lugar donde definir los metadatos de nuestros recursos y establecer el ownership de los mismos. Se pueden registrar servicios, APIs, bases de datos o cualquier otro tipo que necesitemos.
-
Software Templates: Son las plantillas que nos permitirán automatizar la creación de componentes. Por ejemplo, podemos tener una plantilla para crear una nueva aplicación a partir de una serie de parámetros y publicarla en GitHub. Se definen en ficheros YAML formados de parámetros y pasos que ejecutarán las acciones para crear el componente. Los parámetros se obtienen a partir del formulario definido usando react-jsonschema-form. Cada paso ejecuta una acción que puede ser predefinida (como por ejemplo la acción
fetch:template
para renderizar un fichero usando Nunjucks) o podemos desarrollar y registrar nuestras propias acciones (por ejemplo, enviar una notificación por Slack). -
TechDocs: Es la solución para documentación técnica basada en Markdown y MkDocs. Nos permite centralizar la documentación de todos nuestros proyectos en un único punto. Al estar construido sobre MkDocs, podemos aprovecharnos de la extensa comunidad de plugins para añadir más funcionalidad (como por ejemplo renderizar diagramas como código).
-
Search: Permite la búsqueda a través del catálogo y la documentación. Soporta varios motores de búsqueda como OpenSearch, ElasticSearch o PostgreSQL.
-
Plugins: Una de las principales ventajas de Backstage es la extensibilidad que ofrece. Por medio de los plugins podremos incorporar funcionalidad de la comunidad en nuestro portal o desarrollar nuestros propios plugins. Un ejemplo de plugins son la integración del estado de SonarQube en el catálogo o el Tech Radar que nos permite mostrar las tecnologías que se usan en la empresa y su estado.
Puedes explorar algunas de estas funcionalidades en la página de demo.backstage.io. En los próximos posts profundizaremos en cada una de ellas. Por el momento, si quieres empezar creando tu propio portal, puedes ejecutar el siguiente comando (recuerda instalar Node.js si no lo tienes instalado):
npx @backstage/create-app@latest