6 min leitura • Guide 848 of 877
Práticas de Infrastructure as Code
Práticas de infrastructure as code permitem que times gerenciem infraestrutura através de código. GitScrum ajuda rastrear mudanças de infraestrutura, deployments e tarefas de manutenção através de ambientes de desenvolvimento.
Workflow de Implementação IaC
Planejar Mudanças ──► Escrever Código ──► Testar Mudanças ──► Deploy Infra ──► Monitorar & Manter
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
Análise de Terraform/ Testes Pipeline Observabilidade
Requisitos CloudFormation Automatizados CI/CD & Alertas
Benefícios do IaC
Por Que Infrastructure as Code
BENEFÍCIOS DE IaC:
┌─────────────────────────────────────────────────────────────┐
│ │
│ CONSISTÊNCIA: │
│ ═════════════ │
│ • Ambientes idênticos (dev, staging, prod) │
│ • Elimina "funciona na minha máquina" │
│ • Drift de configuração prevenido │
│ • Estado desejado sempre definido │
│ │
│ CONTROLE DE VERSÃO: │
│ ═══════════════════ │
│ • Mudanças de infraestrutura rastreadas │
│ • Histórico de quem mudou o quê │
│ • Rollback fácil para estados anteriores │
│ • Code review para mudanças de infra │
│ │
│ AUTOMAÇÃO: │
│ ════════════ │
│ • Provisionamento automatizado │
│ • Pipelines CI/CD para infraestrutura │
│ • Reduz intervenção manual │
│ • Processos repetíveis │
│ │
│ VELOCIDADE: │
│ ═══════════ │
│ • Ambientes criados em minutos │
│ • Scaling mais rápido │
│ • Disaster recovery mais rápido │
│ • Menos tempo em trabalho manual │
│ │
│ DOCUMENTAÇÃO: │
│ ══════════════ │
│ • Código É documentação │
│ • Sempre atualizado │
│ • Auto-descritivo │
│ • Revisável e auditável │
└─────────────────────────────────────────────────────────────┘
Padrões de Código de Infraestrutura
Configuração Declarativa
CONFIGURAÇÃO DECLARATIVA VS IMPERATIVA:
┌─────────────────────────────────────────────────────────────┐
│ │
│ IMPERATIVO (Como fazer): │
│ ═════════════════════════ │
│ 1. Crie uma VM │
│ 2. Instale nginx │
│ 3. Configure firewall │
│ 4. Abra porta 80 │
│ │
│ Problema: Sequência importa, erros são comuns │
│ │
│ DECLARATIVO (O que quero): │
│ ═══════════════════════════ │
│ resource "aws_instance" "web" { │
│ ami = "ami-12345678" │
│ instance_type = "t2.micro" │
│ │
│ user_data = <<-EOF │
│ #!/bin/bash │
│ apt-get install -y nginx │
│ EOF │
│ } │
│ │
│ resource "aws_security_group" "web" { │
│ ingress { │
│ from_port = 80 │
│ to_port = 80 │
│ protocol = "tcp" │
│ } │
│ } │
│ │
│ Benefício: Define estado desejado, ferramenta resolve como │
└─────────────────────────────────────────────────────────────┘
Design Modular
ESTRUTURA DE MÓDULOS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ infrastructure/ │
│ ├── modules/ │
│ │ ├── networking/ │
│ │ │ ├── main.tf │
│ │ │ ├── variables.tf │
│ │ │ └── outputs.tf │
│ │ ├── compute/ │
│ │ │ ├── main.tf │
│ │ │ ├── variables.tf │
│ │ │ └── outputs.tf │
│ │ ├── database/ │
│ │ │ ├── main.tf │
│ │ │ ├── variables.tf │
│ │ │ └── outputs.tf │
│ │ └── monitoring/ │
│ │ ├── main.tf │
│ │ ├── variables.tf │
│ │ └── outputs.tf │
│ └── environments/ │
│ ├── dev/ │
│ │ ├── main.tf # Usa módulos │
│ │ └── terraform.tfvars │
│ ├── staging/ │
│ │ ├── main.tf │
│ │ └── terraform.tfvars │
│ └── prod/ │
│ ├── main.tf │
│ └── terraform.tfvars │
│ │
│ BENEFÍCIOS: │
│ • Reutilização entre ambientes │
│ • Consistência garantida │
│ • Fácil manutenção │
│ • Testing isolado │
└─────────────────────────────────────────────────────────────┘
Gerenciamento do Ciclo de Vida
CICLO DE VIDA DA INFRAESTRUTURA:
┌─────────────────────────────────────────────────────────────┐
│ │
│ Development ──► Testing ──► Staging ──► Production ──► Decom│
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│ Ambiente Testes Validação Sistemas Limpeza│
│ Dev Local Automatiz Pré-prod Live Recursos│
│ Monitoring e Custos│
│ │
│ ═══════════════════════════════════════════════════════════ │
│ │
│ RASTREAMENTO NO GITSCRUM: │
│ │
│ EPIC: Infraestrutura Q1 2024 │
│ ├── STORY: Migração para Kubernetes │
│ │ ├── TASK: Criar cluster EKS │
│ │ ├── TASK: Configurar networking │
│ │ ├── TASK: Setup monitoring │
│ │ └── TASK: Migrar workloads │
│ ├── STORY: Implementar DR │
│ │ ├── TASK: Setup região secundária │
│ │ ├── TASK: Configurar replicação BD │
│ │ └── TASK: Testar failover │
│ └── STORY: Otimização de Custos │
│ ├── TASK: Right-sizing instâncias │
│ ├── TASK: Implementar auto-scaling │
│ └── TASK: Cleanup recursos orfãos │
│ │
│ BENEFÍCIOS: │
│ • Visibilidade do trabalho de infra │
│ • Priorização junto com dev work │
│ • Rastreamento de progresso │
│ • Accountability clara │
└─────────────────────────────────────────────────────────────┘
Ferramentas Comuns
| Ferramenta | Uso Principal | Força |
|---|---|---|
| Terraform | Multi-cloud | Agnóstico de provider |
| CloudFormation | AWS nativo | Integração profunda AWS |
| ARM Templates | Azure nativo | Integração Azure |
| Ansible | Configuração | Agentless, simples |
| Kubernetes | Orquestração | Containers |
| Pulumi | IaC programático | Linguagens familiares |