Prevendo Custo de Arquitetura Terraform

The Mark
4 min readJul 18, 2023

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 infralevantada 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/
Artigo original postado no TabNews: https://www.tabnews.com.br/themarkwill/prevendo-custo-de-arquitetura-terraform

--

--

The Mark

A lógica é apenas o princípio da sabedoria, e não o seu fim! 🖖🖖