Muito prazer, Backstage.io uma nova forma de criar portais para times de desenvolvimento

Gabriel Dantas
6 min readJun 7, 2022

--

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.

Exemplo de como as entidades do catalogo são exibidas no Backstage

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.

Exemplo de como são os templates usados

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.

Exemplo de arquivos markdown sendo exibidos no backstage

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.

https://star-history.com/#backstage/backstage&Date

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:

Backstage no Zé Delivery:

Demo do Backstage usado internamente no Spotify:

Um pouco da jornada do Spotify na criação do Backstage:

--

--

Gabriel Dantas

Making developers’ lives better using yaml — Site Reliability Engineer @QuintoAndar — https://www.gdantas.com.br/