Muito prazer, Backstage.io uma nova forma de criar portais para times de desenvolvimento
Sabe quando você assiste uma boa série, vai a um bom restaurante ou escuta uma boa música e quer recomendar para todos seus amigos?
Esse é o meu objetivo com esse post, quero te apresentar uma ferramenta que acredito ter um potencial enorme de ajudar times de plataforma a melhorar a vida de todos que desenvolvem na sua empresa.
Essa ferramenta é o Backstage.io, que oferece um conjunto de bibliotecas, padrões e funcionalidades que ajudam na criação de portais para times de desenvolvimento.
Um lugar onde todos conseguem criar, gerenciar e explorar todo o ecossistema de tecnologias da empresa em que trabalham.
Vamos refletir um pouco, em muitas empresas já é normal times de desenvolvimento interagirem com várias ferramentas em um dia normal de trabalho, desde o versionamento de código, integração contínua, monitoramento e documentação, várias vezes por dia.
Ok, isso pode parecer normal nos dias de hoje, mas conforme as empresas crescem, esse dia-a-dia pode ficar bem caótico e difícil de gerenciar, deixando a vida de quem desenvolve cada vez mais complicada, tornando tarefas que costumavam ser simples, cada vez mais complexas com mais serviços sendo criados e novos times sendo formados.
É aí que o Backstage entra, possibilitando times de plataforma criarem um portal que agregue e facilita o uso de toda a stack de tecnologia da empresa, de forma que os times possam focar no que são melhores, sem precisar saberem todos os detalhes de como todas as ferramentas disponíveis funcionam.
O Backstage é um projeto criado internamente no Spotify, que se tornou open-source em 2020, foi doado para a CNCF (Cloud Native Computing Foundation), passou para pelo estágio de Sandbox e em março de 2022 passou para Incubating, ao lado de ferramentas como OpenTelemetry e ArgoCD.
O Backstage é construído em NodeJS, React, Typescript e Material-UI, tecnologias que já são muito bem conhecidas no ecossistema de frontend.
Principais funcionalidades
O Backstage prove algumas funcionalidades principais que são chamadas de ”Core Features” que ajudam em alguns desafios:
Dar uma visão de todos serviços da empresa e suas relações
O Catálogo de Serviços (Software Catalog) consegue a partir de arquivos YAML criar uma visão única de todos os serviços da empresa e relacionar com os seus times responsáveis, isso faz com que seja fácil de identificar quais times possuem o contexto de quais serviços.
Catalogar todos os serviços, API’s e bibliotecas possibilita que todos os diferentes times da empresa consigam achar as informações que precisam sobre os próprios serviços e também de outros times, evidencia possíveis serviços sem donos, facilitando a comunicação e evitando a replicação de serviços com o mesmo propósito, ter o catálogo disponível para todos ajuda não só quem já está na empresa por algum tempo na empresa, mas também, quem está chegando a obter contexto mais rápido.
O Catálogo também é facilmente extensível para ter informações que façam sentido para o dia-a-dia dos times, como links para dashboards ou documentações sendo mostrados em páginas especificadas para cada tipo de serviço.
Padronização na criação de novos serviços e recursos
Propagar padrões e boas práticas para todos os times é um baita desafio em qualquer tamanho de engenharia, com o Software Template, conseguimos desenvolver templates de criação de recursos e serviços, que já podem nascer com padrões definidos, a partir de um formulário e poucos cliques, conseguimos executar alguns etapas definidas em arquivos YAML’s, que podem executar criação de repositórios, geração arquivos a partir de templates, executar chamadas de API para ferramentas internas e no final termos um repositório novo e funcional em poucos minutos.
Documentação em Markdown em um único lugar
Um dos conceitos super legais que Backstage também tem é o “docs like code” que incentiva que a documentação esteja ao lado do código do serviço, deixando ela o mais próximo possível de quem desenvolve.
Com o plugin TechDocs cada repositório pode ter seus próprios arquivos markdown sendo centralizados e apresentados diretamente no Backstage, junto com uma navegação e busca global entre todas as documentações.
O TechDocs usa por baixo dos panos o MkDocs que já é bem conhecido por muitas empresas que usam a documentação com markdown, bem parecido com Docusaurus e Jekyll.
Plugins e mais plugins
Além das “Core Features” o Backstage ainda tem muitos outros plugins que podem ser integrados a diferentes partes do Backstage, muitos deles desenvolvidos pela comunidade e por outras empresas que usam o Backstage internamente, conseguimos ver alguns deles no Marketplace de plugins.
Uma comunidade sensacional
Aliás, sobre a comunidade, é um dos pontos mais legais do Backstage.
Com mais de 16 mil estrelas no GitHub, já possui uma lista com mais de 150 adopters incluindo empresas brasileiras.
A comunidade é super receptiva não só nas dúvidas técnicas, mas também nas dúvidas de adoção cultural. O time mantenedor do Backstage é super acessível e sempre estão ajudando no servidor oficial do Discord.
Mesmo se você não for familiarizado com as tecnologias que o Backstage usa como React e Typescript, certamente vai conseguir progredir com a ajuda da comunidade.
O próprio Spotify vem potencializando a comunidade através de diversas iniciativas como o Community Sessions que acontecem periodicamente e através de diversos blog posts que você pode encontrar no repositório específico da comunidade.
O que eu imagino para o futuro
Para mim o Backstage resolve uma dor muito presente em diversos times de plataforma, de uma forma muito bem pensada e consistente, consegue criar uma ponte entre os times de desenvolvimento e a complexidade das ferramentas de infraestrutura, dando ferramental extensível para times de plataforma entregarem funcionalidades de uma forma mais contextualizada e escalável.
A forma como o projeto vem crescendo me dá muita segurança em adotar e recomendar para quem se identifica com os problemas que ele ajuda a resolver.
Ouso dizer que em um futuro não muito distante o Backstage será uma ferramenta essencial em qualquer time de plataforma, assim como o Kubernetes é para a orquestração de containers, acredito que o Backstage será para a criação de portais para times de desenvolvimento conseguirem escalar de forma mais saudável e eficiente, poupando muitos esforços no crescimento da complexidade de qualquer stack de infraestrutura.
Se ainda ficou curioso deixo aqui alguns links que podem ajudar :)
Um video explicativo sobre o Backstage:
Para quem quiser ter uma ideia de como é o Backstage rodando, existe uma versão demo dele no ar:
Também existe um repositório com alguns outros posts:
Alguns exemplos legais de empresas que usam o Backstage:
Backstage no QuintoAndar:
Sunrise Zalando:
Runway American Airlines:
- Parte 01: https://youtu.be/kZFdHmM5-7M
- Parte 02: https://www.youtube.com/watch?v=I2uEhK0T8MY
Backstage no Zé Delivery:
Demo do Backstage usado internamente no Spotify:
Um pouco da jornada do Spotify na criação do Backstage: