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!

Exemplo do uso da CLI

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.

Exemplo de uso de arquivo de uso

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! Exemplo GitHub Actions e InfraCost

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! GIF Uso do infra cost no VSCode

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