GitScrum / Docs
Todas as Boas Práticas

Práticas de Infrastructure as Code

Implemente infrastructure as code para gerenciar e provisionar infraestrutura de forma confiável usando rastreamento de tarefas de infraestrutura do GitScrum.

6 min de leitura

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

FerramentaUso PrincipalForça
TerraformMulti-cloudAgnóstico de provider
CloudFormationAWS nativoIntegração profunda AWS
ARM TemplatesAzure nativoIntegração Azure
AnsibleConfiguraçãoAgentless, simples
KubernetesOrquestraçãoContainers
PulumiIaC programáticoLinguagens familiares

Soluções Relacionadas