Templates (backstage) para melhor experiência

Bruno Santos
4 min readNov 28, 2023

--

Quando um desenvolvedor vai começar alguma atividade ou projeto, ele deseja uma experiência de muito aprendizado, mas que seja leve, sem muitos contratempos. Na jornada, além de entender o escopo da atividade, ele precisa lidar com código, mas por onde começar?

E se existir um portal cujo objetivo é catalogar os serviços e suas interdependencias, manter documentações, e até mesmo disponibilizar templates que prometem entregar códigos semi-prontos para começar sua jornada?

Pensando em melhorar a experiência dos desenvolvedores e consequentemente aumentar a produtividade, é que as companhias estão cada vez mais criando esses portais. Uma plataforma que vem ganhando muita força no mercado é o Backstage, de código aberto e criado por profissionais da Spotify.

Objetivo do post

Sem entrar nos mínimos detalhes, a ideia é explicar um pouco sobre a criação de templates usando o Backstage, e mostrar como essa feature traz ganhos expressivos e ajuda a suavizar a jornada dos desenvolvedores.

Templates para quê?

Imagine que chega para você uma atividade onde será necessário provisionar alguns recursos no `cloud provider` da sua companhia, seja uma `aws lambda` (`azure functions`), `aws cloudfront` (`azure front door`) entre outros.

Daí surgem algumas dúvidas:

  1. Em qual conta (ou assinatura) vou provisionar?;
  2. Se eu precisar provisionar minha lambda numa VPC (vnet), qual seria?
  3. Se eu quiser provisionar minha lambda usando imagem docker, onde crio?
  4. Sempre que eu precisar realizar `build` e `deploy` da minha lambda, como faço?
  5. Como e onde crio o `pipeline` ?

Templates é uma feature do Backstage que pode ajudar a sanar todas essas dúvidas, e não apenas isso, mas aumentar sua produtividade entregando códigos prontos de maneira que você não precise se preocupar com os mínimos detalhes.

Para exemplificar vamos criar um template onde seu objetivo é entregar um código terraform para provisionar uma lambda na AWS sem escrever absolutamente nada.

Funcionamento

Resumidamente, para criação do template escrevemos código .yaml que ao ser renderizado pelo Backstage, mostrará um formulário solicitando as informações necessárias para a construção do código terraform para criação da lambda. Após isso adicionamos as ações que serão executadas pelo Backstage e entre elas está a ação fetch:template, que avaliará o código modelo e substituirá pelas informações solicitadas no formulário. Abaixo um código .yaml de um template que pede algumas informações para a construção do código:

As informações solicitadas estão no membro `parameters` (linha 11) do .yaml, no caso do template acima, será mostrado no Backstage algo assim:

Já as ações estão no membro `steps` (linha 68), e conforme mencionei, entre as ações está aquela que faz a “mágica”, `fetch:template`. Outra ação importante é a `publish:github:pull-request` (linha 83), que terá a responsabilidade de criar o `Pull-Request` do código no repo de sua escolha.

À seguir, está o codigo terraform modelo que usando a ação `fetch:template`, será renderizado e criado o código terraform real que poderá ser usado no provisionamento da lambda:

Veja no código que existem marcações como `${{ values.name }}`, `${{ values.descriptions }}` entre outras, elas serão substituídas pelas informações inseridas durante preenchimento do template no Backstage, criando assim o código real.

O céu é o limite

O código modelo acima é bem básico, apenas para mostrar a ideia do template, mas há muitas possibilidades para construção do código, conseguimos usar condições `(if…else)`, `loops` (`for`), validações e etc, também conseguimos aplicar inúmeras ações, como realizar o `append` de informações em arquivos existentes e etc. Como o Backstage é uma plataforma de código aberto, também podemos usar ações criadas por parceiros ou até mesmo desenvolver dentro de casa.

Veja no mesmo código o exemplo do uso de condicional na marcação {%- if values.vpc %}, o código que está no bloco só será considerado se a condição for verdadeira, nesse caso, o código só será renderizado e colocado no código real se for selecionada a opção `Virtual Private Cloud` no formulário do template.

Conclusão

A construção de templates é uma entrega de valor e tanto, ajuda muito na criação de componentes de software, diminuindo consideravelmente a carga cognitiva e potencializando a performance dos desenvolvedores. O objetivo do post é aguçar sua curiosidade e o encorajar a construir templates usando Backstage, espero ter colaborado.

Fontes

--

--

Bruno Santos
Bruno Santos

Written by Bruno Santos

Pai, marido, filho, irmão, tio, cristão, profissional de TI, corintiano, chef e fã de comida japonesa

No responses yet