Projeto realizado para a disciplina de Arquitetura de Software @ UFCG. Nesse repositório está o código Terraform de uma infraestrutura que escala horizontalmente na AWS, as instruções de como executar, e uma visão de parte da arquitetura utilizada.
- Necessário ter uma conta válida na AWS, com chaves de acesso.
- Instalar a CLI do Terraform:
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install -y terraform
- Ter o
make
instalado:
sudo apt install -y make
- Inicializar os módulos:
make init
- Copie e configure suas credenciais de acesso à AWS:
cp .profile.sample .profile
- Uma aplicação CPU-Bound será provisionada na infraestrutura, em que a AWS tentará manter o uso médio da CPU das instâncias do Autoscaling Group em 35%, o autoscaler irá aumentar ou diminuir, dinamicamente, o número de instâncias.
make apply
Caso não tenha o endereço do Load Balancer em mãos, executar
terraform output
Para estressar a infra da aplicação, pegue o endereço do Load Balancer que foi mostrado no make apply
e faça:
./stress.sh <load balancer address> <goroutines number>
O segundo paramêtro vai indicar quantas goroutines serão criadas, sendo o estresse de CPU diretamente proporcional a esse número.
- Exemplo:
./stress.sh alb-1484426253.us-east-1.elb.amazonaws.com 10000
Esses arquivos são responsáveis por manter o estado da infraestrutura. Se eles forem apagados, o terraform não vai conseguir aplicar de forma correta as mudanças, tendo que apagar "na mão" tudo que foi criado previamente.
Ao final dos experimentos executar:
make destroy
O comando vai destruir tudo que foi feito, evitando que a AWS cobre algum valor se você esquecer rodando.
Se a infra ficar rodando por muito tempo, vai ser cobrado um valor. A AWS cobra por uso do recurso, então como estamos usando uma t2.micro
, o valor vai ser simbólico (acredito que no máximo uns R$5,00 ~ R$10,00).