Prevendo Custo de Arquitetura Terraform
Estes dias estava navegando pelo Twitter, e acabei vendo uma recomendação de um Dev para uma ferramenta que prometia prever o custo de uma infra levantada com Terraform. Achei muito incrível principalmente para projetos Open Source que muitas das vezes trabalha com pouco capital ou com ajuda da comunidade, saber o que custara cada parte da infra de previsão muito importante.
Segue a ferramenta discutida neste artigo: InfraCost
Eu sou o The Mark e hoje vamos nos aprofundar um pouco mais nesta ferramenta DevOps.
Terraform?
O intuito do Terraform é trazer a montagem de sua infra para o código (infraestrutura como código), assim facilitaria na hora de instanciar projetos novos, sem precisar de ficar criando a mesma em Dashboard. Assim com o terraform é possível criar uma estrutura inteira na AWS, Google Cloud, Azure entre outros, usando apenas o código. E esta aqui o problema, como você só vê o código, muitas as vezes é complexo usar calculadoras para chegar aos custos destes serviços.
O InfraCost
A grande motivação do InfraCost é facilitar a manutenção dos custos de uma infra, ele consegue prever o custo ha partir das informações inseridas no terraform.
CLI do InfraCost
A CLI do InfraCost é muito simples e completa ao mesmo tempo, para instalar ele é só seguir a documentação: Guia de Iniciação.
Quando já tiver a CLI instalada e autenticada, para começar prever o custo de sua infra é só executar o comando:
infracost breakdown --path .
- Neste caso estou prevendo que você tenha navegado até a raiz da sua infra!
Assim esta ferramenta consegue calcular sem configurações extras recursos com custos mensais.
Custo por Uso
Quando falamos de recursos que o custo é baseado no uso, ai normalmente é mais complexo de se chegar a um valor gasto, porem para isso o Terraform tem suporte a um arquivo yml com a previsão de uso deste recurso, e com estas informações ele conseguira calcular e prever o custo final.
Neste exemplo inclui um novo S3 Bucket na infra do TabNews, e previ para ele um Storage mensal de 1000GB, um total de 10.000 PUB, COPY, POST, e 100.000 GET e SELECT mensais para o mesmo.
# See https://infracost.io/usage-file/ for docs
version: 0.1
resource_usage:
aws_s3_bucket.test:
standard: # Usages of S3 Standard:
storage_gb: 1000 # Total storage in GB.
monthly_tier_1_requests: 10000 # Monthly PUT, COPY, POST, LIST requests (Tier 1).
monthly_tier_2_requests: 100000 # Monthly GET, SELECT, and all other requests (Tier 2).
Assim o InfraCost foi capas de prever um custo extra por este Bucket quando eu passo como parâmetro o caminho deste arquivo .yml de custo.
Caso precise de um exemplo de quais parâmetros são possível, basta dar uma olhadinha no exemplo completo de uso infracost-usage-example.yml
GitHub Actions
Alem disso o InfraCost tem support aos GitHub Actions, desta forma ao ser criado um PR, ele fará um comentário com o custo da infra atual, e o futuro, como no exemplo que peguei no site deles abaixo!
Extensão VSCode
Alem de tudo isso, a ferramenta também tem uma versão para o VSCode, a mesma mostra em tempo real o custo da infra como no gif abaixo!
Conclusão
O InfraCost é super poderoso e tem outras funcionalidades que acabei não falando por aqui, porem sua utilidade ao criarmos uma infra é surreal, podendo ter a previsão de custo a qualquer momento.
Espero que tenham gostado, comentem caso tenha qualquer duvida e estou bolando um PR para caso acham interessante, incluirmos o mesmo no projeto do Tabnews para podermos ter sempre o custo da nossa infra em cada PR quando o mesmo tiver alguma alteração!
Saiba mais
Documentação InfraCost: https://www.infracost.io/docs/ Alguns casos de uso do InfraCost: https://www.infracost.io/use-cases/
The Mark, parabéns por esta publicação, especialmente por ser a sua primeira! Isto é um conteúdo com total valor concreto, principalmente para o TabNews. Como comentei na issue lá no projeto, foi um caos para eu usar as calculadoras e entender o impacto disso nos custos, e essa ferramenta teria ajudaro muito!
Tenho certeza que irá ajudar várias outras pessoas e estou compartilhando essa publicação num post do meu YouTube 🤝
Pessoal, espero que tenha ficado bom este artigo, foi o primeiro que tive coragem de publicar na internet, qualquer duvida é só me chamar! Meu github é: https://github.com/TheMarkWill