Conhecendo o Backstage [Parte I]
Algumas pessoas já me procuraram no LinkedIn, Discord e até no Twitter para tirar dúvidas sobre o Backstage, o processo para sua implementação e o que esta ferramenta pode proporcionar para as empresas aqui no Brasil.
Assim sendo, achei justo — e válido, compartilhar um pouco da experiência que adquiri em mais de um ano estudando e trabalhando com esta ferramenta.
Estarei realizando uma série de posts apresentando a ferramenta e a implementação das core features do Backstage em uma instância local.
Nesta “Parte I” vou apresentar um resumo (bem direto) da ferramenta, objetivos e características principais.
Backstage, o que é?
Antes de iniciar este artigo, acredito que seja válido apresentar (resumidamente) o que é o Backstage e seus objetivos.
Antes de mais nada, é super importante você saber que este é um projeto Open Source de iniciativa do Spotify, e ele — Backstage — nasceu de uma dificuldade enfrentada pela gigante do “streamming de músicas”: a empresa havia crescido demais.
“Ué?! E onde está o problema nisso?”, você provavelmente se perguntou. A resposta é relativamente “simples”: a empresa cresceu em proporções tão grandes que começou a “perder o controle” sobre arquiteturas de código, padrões de projetos, linguagens utilizadas, etc. Ao ponto que um novo desenvolvedor entrava na companhia e não tinha um “norte”.
Diante deste cenário, o Spotify criou uma plataforma que tinha como objetivo inicial catalogar os projetos e separá-los por contexto (API, Recurso…). Essa ferramenta surtiu resultados positivos e a “casa começou a ser organizada” por lá.
Porém, o Spotify (e, principalmente os desenvolvedores responsáveis pelo Backstage) sabiam que esse cenário era, infelizmente, comum em outras companhias. E com o espírito de colaboração mútua, disponibilizaram o projeto para que outras empresas no mesmo cenário começassem a “organizar suas casas” também.
E vale destacar que, atualmente, o Backstage é disparada a ferramenta mais utilizada quando o foco das empresas é a experiência do desenvolvedor (Developer Experience).
Principais características e objetivos
O Backstage possui core features, ou principais características destacadas em plugins específicos que remetem a objetivos claros e concisos, sendo eles:
- Catálogo de Software;
- Documentação Técnica (de desenvolvedor para desenvolvedor)
- Templates de Projetos (nada mais que “modelos” para novos projetos)
Catálogo de Software
A ideia deste plugin é basicamente centralizar todos os projetos, bibliotecas e APIs desenvolvidas na companhia. Além disso, este plugin proporciona que seja criada uma “árvore” de interdependências dos projetos, como também os times/equipes “dono” do mesmo.
Documentação Técnica
Este plugin é denominado “TechDocs” e proporciona que sejam renderizadas as documentações técnicas na própria interface do Backstage. O objetivo central deste plugin é oferecer documentações de desenvolvedores para desenvolvedores. Ou seja, neste caso o foco não é uma “Documentação de Produto” mas apenas a técnica.
Templates de Projetos
Já pensou em criar um projeto em determinada linguagem, mas você acaba pensando duas vezes quando lembra do trabalho que é estrutura um novo? É para resolver este (e tantos outros) problemas que este plugin existe. Com algumas pequenas configurações, você pode determinar qual projeto será usado como base/modelo para novos projetos.
Além disso, você pode utilizar deste plugin para garantir inclusive que a infraestrutura de novos projetos sigam os padrões validados pela sua empresa.
Como iniciar um projeto baseado no Backstage?
Requisitos
Antes de iniciarmos, de fato, o desenvolvimento de um novo aplicativo Backstage é necessário validar se o seu ambiente atende os requisitos (definidos pela própria equipe responsável):
- Sistema Operacional baseado em Unix, como Linux ou MacOS*;
- Usuário root;
curl
ouwget
;- Versão LTS do Node.js;
- Gerenciador de pacotes
yarn
; - Docker;
- Git.
*Usuários Windows, precisam ter o WSL.
Passo a Passo
A equipe responsável pela manutenção do Backstage disponibiliza para a comunidade um CLI exclusivo para uso na criação de novos aplicativos. Assim sendo, basta rodar em seu terminal o comando npx @backstage/create-app
, informar um nome para seu aplicativo (no próprio terminal) e, por fim, aguardar que toda a “mágica” seja realizada.
Se tudo ocorrer bem, você deverá visualizar o seguinte cenário em seu terminal:
Basta então acessar o diretório em que o projeto foi criado e rodar o comando yarn dev
. Uma instância será gerada e você poderá acessar o seu aplicativo Backstage em http://localhost:3000 em seu navegador favorito, e terá algo muito parecido com isso:
IMPORTANTE: Esta primeira versão possui o mínimo de dados necessários para que a plataforma exiba as informações. Todos estes dados são “mockados”.
Pontos Importantes
app-config.yaml
é o arquivo central de configurações para seu aplicativo Backstage;- Backstage adota uma arquitetura de “Monorepo”, em que você utiliza apenas um repositório que pode conter vários projetos ao invés de distribuir esses projetos em vários repositórios;
- É possível desenvolver plugins personalizados para o Backstage;
- É possível você (e qualquer desenvolvedor) contribuir com o Backstage, lembre-se: este é um projeto Open Source.
Essa é uma série de post’s, então não deixe de ler as outras “partes”:
- Parte I (este post)
- Parte II — Utilizando banco de dados
- Parte III — Integração com o GitHub