📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Módulo 13: DevOps e Cloud. Recomendado revisar antes de começar.

☁️ Infraestrutura como Código (IaC) com Terraform & AWS

v1.0 — Engenharia de Software & Práticas Profissionais

Trilha de Especialização Pedagógica


🎯 Objetivo & Escopo do Projeto

Provisionamento automatizado de infraestrutura na nuvem AWS via Terraform: VPC, Subnets públicas/privadas, Cluster ECS Fargate e Banco RDS PostgreSQL gerenciado.


🛠️ Código de Exemplo da Implementação

provider "aws" {
  region = "us-east-1"
}

resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true
  tags = {
    Name = "Portal-Production-VPC"
  }
}


🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd infra_terraform_05_iac_aws

2. Execute a aplicação ou testes

terraform init && terraform plan
# ou docker-compose up -d

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd catalogo_projetos/infra_terraform_05_iac_aws


🏛️ Arquitetura Visual & Engenharia de Infraestrutura

O diagrama abaixo ilustra a topologia de componentes, balanceamento, esteiras de automação e observabilidade na subpasta infra-terraform/:

Arquitetura de Infraestrutura

flowchart TD
    subgraph Config["Configuração & IaC"]
        C1["Manifestos Declarativos"] --> C2["Variáveis & Segredos"]
    end
    subgraph Orquestracao["Orquestração & Redes"]
        O1["Load Balancer / Ingress"] --> O2["Pods / Contêineres de Serviço"]
    end
    subgraph Observabilidade["Observabilidade & Segurança"]
        M1["Telemetria Prometheus / k6"] --> M2["Scanners SAST & Dashboards"]
    end
    subgraph Qualidade["Homologação & Qualidade"]
        Q1["Automação CI/CD"] --> Q2["Checkpoints CP-01..05 PASS"]
    end

    Config --> Orquestracao
    Orquestracao --> Observabilidade
    Observabilidade --> Qualidade

    style Config fill:#e3f2fd,stroke:#1976d2,stroke-width:1.5px
    style Orquestracao fill:#fffde7,stroke:#fbc02d,stroke-width:1.5px
    style Observabilidade fill:#e8f5e9,stroke:#388e3c,stroke-width:1.5px
    style Qualidade fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px

🎯 Engenharia de Requisitos & Modelagem Formal

👤 User Stories (Histórias de Usuário)

ID Persona História de Usuário Critério de Aceite Prioridade
US-01 Arquiteto Cloud Desejo provisionar VPC com subnets públicas e privadas via Terraform Topologia de rede segura com Internet Gateway e tabelas de rotas declaradas Alta
US-02 Engenheiro DevOps Desejo Security Groups com regras de entrada e saída de menor privilégio Liberação estrita de portas 80/443 públicas e portas de banco internas Alta
US-03 Administrador de Infra Desejo provisionar instâncias EC2 e Application Load Balancer (ALB) Distribuição de tráfego entre instâncias distribuídas em zonas de disponibilidade (AZs) Alta
US-04 Especialista em Confiabilidade Desejo gerenciar estado remoto no S3 com locking via DynamoDB Prevenção de execuções concorrentes com terraform apply simultâneo Média
US-05 Auditor de Segurança Desejo validação com terraform fmt, validate e checagem de conformidade Linters de IaC e testes automatizados de sintaxe sem custos de nuvem Média

⚙️ Requisitos Funcionais (RF)

ID Descrição do Requisito Criticidade
RF-01 Módulos Terraform para provisionamento de VPC, Subnets e Gateways Alta
RF-02 Recursos aws_security_group com regras granulares de tráfego Alta
RF-03 Provisionamento de instâncias com user_data automatizado e ALB Alta
RF-04 Configuração de variáveis (variables.tf), outputs e backend de estado Média
RF-05 Scripts de validação estática e plano de execução (terraform plan) Média

🛡️ Requisitos Não-Funcionais (RNF)

ID Especificação Arquitetural Criticidade
RNF-01 Idempotência completa: execuções repetidas não alteram estado convergente Alta
RNF-02 Zero credenciais hardcoded, usando variáveis de ambiente AWS padrão Alta
RNF-03 Compatibilidade com Terraform 1.5+ e AWS Provider v5+ Alta
RNF-04 Organização modular dos arquivos .tf na pasta infra-terraform/ Alta
RNF-05 Documentação clara de passos de inicialização e destruição de recursos Média

🔗 Matriz de Rastreabilidade (RTM)

User Story Requisito Funcional Requisito Não-Funcional Módulo / Artefato de Código Status de Homologação
US-01 RF-01 RNF-01, RNF-04 infra-terraform/main.tf Testado
US-02 RF-02 RNF-02, RNF-04 infra-terraform/main.tf Testado
US-03 RF-03 RNF-01, RNF-03 infra-terraform/main.tf Testado
US-04 RF-04 RNF-01, RNF-02 infra-terraform/backend.tf Testado
US-05 RF-05 RNF-03, RNF-05 infra-terraform/test_plan.sh Testado

🏁 Checkpoints de Qualidade & Homologação

Checkpoint Escopo da Validação Artefato Verificado Status
CP-01 Configuração Declarativa do Ambiente infra-terraform/ PASS ✅
CP-02 Provisionamento & Orquestração Deployments / Services PASS ✅
CP-03 Redes, Proxies & Segurança de Borda Ingress / Security Groups PASS ✅
CP-04 Observabilidade, Métricas & SAST Metrics / Scanners PASS ✅
CP-05 Homologação com Suíte de Testes Test Suite / CI Gate PASS ✅