← Voltar ao blog

Arquitetura evolutiva em times ágeis

arquitetura agile design

A pergunta mais comum em times ágeis: “devemos planejar a arquitetura antes de começar a codificar?” A resposta: sim, mas não como você pensa.

O problema do “Big Design Upfront”

Semanas de arquitetura antes do primeiro sprint resulta em:

  • Design para problemas que não existem
  • Complexidade desnecessária
  • Tempo desperdiçado quando requisitos mudam
  • Frustração do time que quer entregar valor

O problema do “Sem Design”

No outro extremo, times que codificam sem pensar em arquitetura resultam em:

  • Spaghetti code
  • Impossibilidade de escalar
  • Refatoração constante
  • Dívida técnica impagável

O meio-termo: Arquitetura Evolutiva

Sprint 0: Foundation leve

1-2 dias para definir:

  • Stack tecnológico — linguagem, framework, banco de dados
  • Estrutura de repositórios — monolith ou microserviços?
  • Convenções — padrão de código, branching, deploy
  • Arquitetura de alto nível — diagrama de 1 página

Não faça: Design detalhado de APIs, modelagem completa de banco, definição de todos os padrões.

Evolua com o produto

Sprint 1-3: Monolito simples
Sprint 4-8: Separação de módulos
Sprint 9+: Microserviços se necessário

Cada decisão de arquitetura é tomada quando há problema real, não antecipado.

Decisões de arquitetura no Planning

Quando estimar uma tarefa que envolve decisão técnica:

  1. Discuta as opções — “Podemos fazer com Redis ou com cache em memória”
  2. Vote na abordagem — o time decide, não só o tech lead
  3. Estime a escolha — “Redis: 8 pontos. Cache local: 3 pontos.”
  4. Documente a decisão — ADR (Architecture Decision Record) de 5 linhas

Architectural Decision Records (ADRs)

Formato simples:

  • Título: Usar Redis para cache de sessão
  • Status: Aceito
  • Contexto: Precisamos de cache compartilhado entre 3 servidores
  • Decisão: Redis em vez de cache em memória
  • Consequências: Infra adicional necessária, mas cache consistente

Mantenha ADRs no repositório, em /docs/decisions/.

Impacto nas estimativas

Decisões de arquitetura mudam estimativas:

“Migração de MySQL para PostgreSQL: 13 pontos. Mas nos dá full-text search nativo que economiza ~20 pontos no futuro.”

Compare custo agora vs. custo futuro.

Sinais de que a arquitetura precisa evoluir

  • Build demorando mais de 15 min
  • Feature nova demora 2× mais que antiga similar
  • Deploy de um módulo exige redeploy de tudo
  • Bug em módulo A quebra módulo B inesperadamente
  • Novos membros levam 4+ semanas para fazer primeiro deploy

Conclusão

Arquitetura ágil não é “sem arquitetura” — é “arquitetura quando necessário.” Comece simples, evolua quando doer, documente decisões. Over-engineering é tão ruim quanto arquitetura inexistente.