PITCH: Layerform — Ambientes de desenvolvimento open-source usando Terraform
Oi TabNews!
Somos Lucas e Lucas (sim Lucas²), os autores do Layerform e viemos explicar como funciona o projeto e pedir pra você deixar sua ⭐ lá no GitHub :)
O Layerform é uma ferramenta de código aberto para configurar ambientes de desenvolvimento usando arquivos Terraform. Permitimos que cada engenheiro crie seu próprio ambiente de "staging" e reutilize partes da infraestrutura.
Sempre que o dev executa o comando "layerform spawn", usamos arquivos Terraform para criar seu próprio ambiente de "staging", que se parece exatamente com produção.
Muitas equipes possuem apenas um (ou muito poucos) ambientes de "staging", nos quais os desenvolvedores têm que esperar na fila para usar. Isso é especialmente problemático quando um sistema é grande, pois os engenheiros não podem executá-lo em suas máquinas e não conseguem testar facilmente suas alterações em um ambiente semelhante à produção.
Muitas vezes, eles acabam com um canal confuso no Slack no qual os engenheiros esperam sua vez de usar o ambiente de "staging". Às vezes, nem mesmo possuem esse canal desajeitado e acabam mesclando código com defeito ou enviando bugs para a produção. Lucas e eu decidimos resolver isso porque já sofremos com ambientes de "staging" compartilhados.
O Layerform oferece a cada desenvolvedor seu próprio ambiente semelhante à produção. Isso elimina o gargalo, aumentando o seu número de deployments. Além disso, reduz a quantidade de bugs e retrabalho, porque os desenvolvedores têm um ambiente semelhante à produção para desenvolver e testar. Eles só precisam executar layerform spawn
pra criar seu próprio ambiente de "staging".
Nós wrappamos o Terraform licenciado sob a MPL e permitimos que os engenheiros encapsulem cada parte de sua infraestrutura em camadas. Eles podem então criar várias instâncias de uma camada específica para criar um ambiente de desenvolvimento.
A vantagem de usar camadas em vez de módulos brutos do Terraform é que elas são muito mais fáceis de escrever e reutilizar, o que significa que vários ambientes de desenvolvimento podem ser executados na mesma infraestrutura, tornando mais barato que cada dev tenha seu próprio staging.
Os ambientes do Layerform são rápidos e econômicos de serem iniciados, porque compartilham partes principais da infraestrutura. Além disso, o Layerform pode taggear automaticamente os componentes em cada camada, facilitando para as equipes de FinOps gerenciar custos e realizar cobranças.
Por exemplo: com o Layerform, múltiplos deves podem ter ambientes de staging em cima de um mesmo cluster Kubernetes compartilhado e uma instância Kafka. Dessa forma, os ambientes de desenvolvimento são mais rápidos de serem iniciados e mais baratos de serem mantidos. Cada camada rodando também recebe uma tag, o que significa que as equipes de FinOps sabem quanto custam os ambientes de cada equipe.
Pra ser transparente: a maneira como pretendemos ganhar dinheiro é fornecendo um serviço gerenciado com recursos de governança, gerenciamento e controle de custos, incluindo o desligamento automático de ambientes em caso de inatividade ou após o horário comercial. O próprio CLI do Layerform permanecerá gratuito e aberto (GPL).
Você pode baixar o CLI do Layerform agora mesmo e usá-lo gratuitamente. Atualmente, todos os estados, permissões e definições de camadas permanecem em sua nuvem, sob seu controle.
Após toda a questão da mudança de licença do Terraform, acho que também vale a pena mencionar que estaremos construindo em cima do fork da comunidade e consideraremos adicionar suporte ao Pulumi também.
Adoraríamos receber seu feedback sobre nossa solução para eliminar o "gargalo de staging". O que você acha?