Nébula
GitHub

Engenharia

Architecture

Apresenta visão arquitetural, fronteiras, integrações, módulos e trade-offs do sistema.

architecture.mdMARKDOWNLeitura: 3 minSeções: 45

Architecture define a estrutura técnica do sistema — estilo arquitetural, camadas, módulos, responsabilidades, fluxo de dados, integrações, persistência, comunicação, segurança e diretrizes de evolução. É o documento que evita que a implementação siga por intuição.

Fase: 4 — Design de Sistema
Pré-requisito: Docs/stack.md · Docs/entities.md aprovados
Template: Templates/Full/architecture.md ou Templates/Quick/architecture.md
Artefato oficial: Docs/architecture.md
Próximos artefatos: Docs/contract.yaml · Docs/structure.md · Docs/deploy.md


Quando criar ou revisar

  • Após aprovação de Docs/stack.md e Docs/entities.md
  • Criação de novo módulo estrutural
  • Mudança de responsabilidade entre camadas
  • Introdução de nova integração crítica
  • Mudança importante no padrão de comunicação
  • Quebra da estratégia arquitetural inicial

Full vs Quick

SituaçãoTemplate
Sistema novo com múltiplas camadas, módulos e integraçõesTemplates/Full/architecture.md
Feature simples em arquitetura já definidaTemplates/Quick/architecture.md
Ambiguidade de fronteira ou responsabilidade surgiuMigrar para Full na task em que surgiu

Estilos arquiteturais reconhecidos

modular               — código dividido em módulos coesos com fronteiras definidas
MVC                   — separação em Model, View e Controller
Clean Architecture    — camadas concêntricas com domínio no centro
Hexagonal (Ports & Adapters) — domínio isolado de infraestrutura por adaptadores
Monólito modular      — único processo com módulos internos bem delimitados
Microserviços         — serviços independentes por domínio ou capacidade
Frontend + Backend    — cliente desacoplado do servidor com contrato explícito
BFF (Backend for Frontend) — camada de orquestração entre interface e serviços
Event-driven          — comunicação por eventos com desacoplamento temporal
Híbrido               — combinação de estilos por camada ou domínio

Estrutura — Architecture Full

O template Full tem 19 seções.

1. Identificação

Nome do projeto:
Versão do documento:
Status: [rascunho | revisando | aprovado]
Documentos base: Docs/project.md, Docs/stack.md, Docs/user-stories.md, Docs/entities.md
Data de criação:
Última atualização:

2. Objetivo do Documento

Cobre: estilo arquitetural, camadas e responsabilidades, módulos, dependências internas, integrações externas, fluxo de dados, regras estruturais.
Não cobre: contrato detalhado de API, diretórios finais, migrations, SQL, layout visual, tasks de implementação.

3. Visão Geral da Arquitetura

Resumo arquitetural:          [como o sistema é organizado em poucas linhas]
Estilo arquitetural adotado:  [modular | Clean | hexagonal | BFF | event-driven | híbrido]
Justificativa da escolha:     [por que esse estilo faz sentido para este projeto]
Estratégia de evolução:       [começar simples e modularizar | preparado para escala | etc.]

4. Princípios Arquiteturais

Princípios que guiam todas as decisões estruturais — com descrição aplicada ao projeto:

Separação de responsabilidades — [o que significa aqui]
Baixo acoplamento              — [o que significa aqui]
Alta coesão                    — [o que significa aqui]
Testabilidade                  — [o que significa aqui]
Evolução incremental           — [o que significa aqui]
Contratos explícitos           — [o que significa aqui]
Infraestrutura isolada         — [o que significa aqui]

5. Contexto Arquitetural do Sistema

Tipo de sistema:    [web app | api | admin | worker | plataforma | SaaS | interno]
Partes principais:
  - frontend
  - backend
  - banco de dados
  - fila (quando houver)
  - cache (quando houver)
  - workers (quando houver)
  - integrações externas
  - painel administrativo (quando houver)
Visão macro: [como as partes conversam entre si]

6. Camadas da Arquitetura

As 4 camadas da arquitetura com o que cada uma inclui e o que não deve conter:

6.1 Camada de Interface

Responsabilidade: [descreva]
Inclui:
  - páginas
  - componentes
  - formulários
  - navegação
  - interação com usuário
Não deve conter:
  - regra de negócio complexa
  - acesso direto à infraestrutura
  - lógica de persistência

6.2 Camada de Aplicação

Responsabilidade: [descreva]
Inclui:
  - casos de uso
  - orquestração
  - validação de entrada
  - coordenação entre domínio e infraestrutura
Não deve conter:
  - detalhes de banco
  - dependência forte de framework
  - regras visuais

6.3 Camada de Domínio

Responsabilidade: [descreva]
Inclui:
  - entidades
  - regras centrais do negócio
  - invariantes
  - serviços de domínio (quando necessário)
Não deve conter:
  - detalhes de transporte
  - detalhes de persistência
  - dependência de framework ou interface

6.4 Camada de Infraestrutura

Responsabilidade: [descreva]
Inclui:
  - banco de dados e ORM
  - serviços externos
  - cache
  - fila
  - storage
  - providers
Não deve conter:
  - regra central de negócio espalhada
  - decisões funcionais de interface

7. Módulos do Sistema

Estrutura por módulo (cada um alinhado a um domínio das entidades):

### Módulo N — [nome]
 
Objetivo:                [descreva]
Responsabilidades:
  - [responsabilidade 1]
  - [responsabilidade 2]
Entidades relacionadas:  [ENT-001, ENT-002]
Casos de uso principais:
  - [caso 1]
  - [caso 2]
Dependências internas:   [módulo A, módulo B]
Dependências externas:   [integração X]
Observações:             [preencher]

8. Fluxo Técnico de Dados

O caminho padrão de um dado através das camadas:

Fluxo principal:
1. Interface recebe ação do usuário
2. Camada de aplicação valida entrada e orquestra o caso de uso
3. Camada de domínio aplica regras de negócio
4. Infraestrutura persiste ou consulta dados
5. Integrações externas são acionadas, se necessário
6. Resultado retorna estruturado à interface
 
Pontos críticos do fluxo:
  - [ponto 1: onde mais falhas ocorrem]
  - [ponto 2: onde consistência é crítica]
  - [ponto 3: onde latência impacta UX]

9. Integrações Externas e Dependências Técnicas

Integrações previstas:
  - [integração 1: função]
  - [integração 2: função]
 
Regras de isolamento:
  - integrações ficam na camada de infraestrutura
  - domínio não conhece detalhes de integração externa
  - falha de integração deve ser tratada — nunca propagada sem handling
 
Riscos arquiteturais:
  - [risco 1: o que pode falhar e como mitigar]

10. Persistência e Consistência

Estratégia de persistência:  [descreva]
Fonte principal de verdade:  [qual banco é a source of truth]
Necessidades de consistência:
  - consistência imediata:   [onde é necessário]
  - consistência eventual:   [onde é tolerada]
  - auditoria:               [quais operações precisam de log]
  - idempotência:            [quais operações devem ser idempotentes]
  - concorrência:            [onde locks ou filas são necessários]
Cuidados relevantes:
  - [cuidado 1]
  - [cuidado 2]

11. Comunicação Entre Partes do Sistema

Padrão principal:     [REST | eventos | fila | RPC | GraphQL | interno]
Síncrona:             [como frontend fala com backend, como módulos se chamam]
Assíncrona:           [quais operações usam fila ou eventos]
Eventos/mensagens previstos:
  - [evento 1]
  - [evento 2]
Regras de comunicação:
  - [regra 1: ex.: toda resposta tem envelope padrão]
  - [regra 2: ex.: erros de integração têm retry com backoff]

12. Estratégia de Escalabilidade e Evolução

Escalabilidade esperada: [baixa | média | alta | progressiva]
Partes com maior chance de crescimento:
  - [parte 1]
Partes que devem permanecer simples:
  - [parte 1]
Estratégia de evolução arquitetural: [descreva]
Sinais que indicariam refatoração futura:
  - [sinal 1: ex.: latência de módulo ultrapassando SLA]
  - [sinal 2: ex.: módulo com mais de N responsabilidades]

13. Segurança e Isolamento

Pontos sensíveis da arquitetura:
  - autenticação
  - autorização e RBAC
  - dados sensíveis (criptografia, mascaramento)
  - integrações externas (tokens, secrets)
  - arquivos (upload, acesso)
  - logs (sem dados PII)
  - ações destrutivas (confirmação, auditoria)
 
Regras arquiteturais de segurança:
  - [regra 1]
  - [regra 2]
 
Áreas que exigem atenção extra:
  - [área 1]

14. Observabilidade e Operação

Necessidades operacionais:
  - logs estruturados
  - health checks
  - métricas de performance
  - alertas por SLA
  - rastreabilidade de requisição
 
Pontos que devem ser observáveis:
  - [ponto 1]
 
Falhas que precisam ser rastreáveis:
  - [falha 1]

15. Restrições e Trade-offs Arquiteturais

Restrições assumidas:
  - [restrição 1: ex.: monólito por prazo — poderá ser modularizado na fase 2]
 
Trade-offs aceitos conscientemente:
  - [trade-off 1: ganho X vs custo Y]
 
Alternativas consideradas e não adotadas:
  - [alternativa 1 + motivo de rejeição]

16. Relação com Outros Documentos

Docs/entities.md   → como o domínio influencia módulos e regras internas
Docs/contract.yaml → como a arquitetura expõe ou consome contratos
Docs/structure.md  → como a arquitetura se reflete em diretórios e camadas
Docs/deploy.md     → como a arquitetura impacta ambientes e pipeline
Docs/plan.md       → quais partes arquiteturais orientam a ordem de implementação

17. Diretrizes de Implementação

Obrigatório:
  - [diretriz 1: ex.: toda lógica de negócio na camada de domínio]
  - [diretriz 2: ex.: toda integração isolada na infraestrutura]
  - [diretriz 3: ex.: nenhum módulo acessa banco de outro módulo diretamente]
 
A evitar:
  - [erro 1: ex.: regra de negócio espalhada em handlers de rota]
  - [erro 2: ex.: chamada direta de infraestrutura na camada de interface]
 
Exige atualização deste documento:
  - novo módulo estrutural
  - mudança de responsabilidade entre camadas
  - nova integração crítica
  - mudança de padrão de comunicação

18. Síntese Operacional para Dev e AI

Estilo arquitetural:                [resumo]
Módulos principais:                 [lista]
Regras estruturais que não quebram: [lista]
Pontos críticos da arquitetura:     [lista]
O que ainda está indefinido:        [ponto 1]

19. Aprovação

Status: [pendente | aprovado | revisando]
Aprovado por:
Data de aprovação:
Observações finais:

Exemplo preenchido — visão geral + módulo

## Visão Geral (exemplo)
 
Resumo: Sistema mobile + API REST com autenticação JWT.
Frontend mobile (React Native) consome API backend (NestJS).
Backend modular por domínio — cada domínio tem controller, service e repository.
Banco PostgreSQL via Prisma. Storage S3 para arquivos. Push via Firebase.
 
Estilo: Monólito modular com separação em camadas.
Justificativa: Time pequeno, prazo restrito, modularização interna
permite escalar para microserviços se necessário.
 
---
 
## Módulo: Atendimentos
 
Objetivo: Gerenciar o ciclo de vida dos chamados de campo.
Responsabilidades:
  - Criar, atualizar e encerrar chamados
  - Registrar atendimento com foto e assinatura
  - Notificar gestor no encerramento
Entidades: Chamado (ENT-002), Atendimento (ENT-003)
Casos de uso:
  - Técnico registra atendimento
  - Gestor valida ou rejeita atendimento
Dependências internas: Módulo Auth (autenticação), Módulo Notificações
Dependências externas: S3 (upload de foto), Firebase (push de notificação)

Estrutura — Architecture Quick

## Resumo arquitetural
[como o sistema é organizado em poucas linhas]
 
## Estilo arquitetural
[modular | clean | mvc | monólito modular | híbrido]
 
## Princípios
- separação de responsabilidades
- baixo acoplamento
- testabilidade
 
## Camadas
Interface:      [responsabilidade]
Aplicação:      [responsabilidade]
Domínio:        [responsabilidade]
Infraestrutura: [responsabilidade]
 
## Módulos principais
### [nome]
Objetivo: [preencher]
Responsabilidades: [item 1]
 
## Fluxo técnico principal
1. [passo 1]
2. [passo 2]
3. [passo 3]
 
## Integrações externas
- [integração: função]
 
## Persistência
[estratégia principal]
 
## Comunicação
Síncrona:   [preencher]
Assíncrona: [preencher]
 
## Restrições e trade-offs
- [trade-off]
 
## Direção para os próximos documentos
Docs/contract.yaml: [orientação]
Docs/structure.md:  [orientação]
Docs/deploy.md:     [orientação]
 
## Síntese para Dev e AI
Arquitetura: [resumo]
Regras obrigatórias: [regra]
Pontos críticos: [ponto]
O que está indefinido: [ponto]

Prompt para gerar com agente

Atue como SystemAgent.
Objetivo: criar Docs/architecture.md com base em Docs/stack.md e Docs/entities.md
 
Carregue contexto base:
- GUIDE.md
- Skills/implementation.md
- Templates/Full/architecture.md
- Docs/stack.md
- Docs/entities.md
- Docs/project.md
 
Preencha as 19 seções do template Full.
Seção 3: defina estilo arquitetural com justificativa baseada no stack e contexto.
Seção 6: descreva cada camada com o que inclui e o que não deve conter.
Seção 7: crie um módulo por domínio identificado em entities.md seção 4.
Seção 8: descreva o fluxo técnico passo a passo.
Seção 15: registre trade-offs assumidos e alternativas descartadas.
Seção 17: diretrizes obrigatórias de implementação.
Marque [indefinido] onde a decisão ainda depende de prototipagem ou discovery.

Definição de pronto

O architecture está pronto quando:

  1. Estilo arquitetural definido com justificativa aplicada ao projeto
  2. As 4 camadas documentadas com responsabilidades, o que inclui e o que não pode conter
  3. Cada domínio das entities tem pelo menos um módulo correspondente
  4. Fluxo técnico descrito passo a passo com pontos críticos
  5. Seção 9 mapeia integrações com função e regras de isolamento
  6. Seção 15 registra trade-offs e alternativas descartadas
  7. Seção 17 tem diretrizes obrigatórias de implementação
  8. Aprovação registrada na seção 19
Atenção

Architecture com termos vagos ("o sistema terá camadas bem definidas") não é arquitetura — é intenção. Cada camada precisa de responsabilidade concreta, lista do que inclui e lista do que não deve conter. Módulo sem fronteira explícita vira código que ninguém sabe onde colocar.


Erros comuns

ErroCorreção
Termos vagos ("camadas bem definidas")Cada camada tem responsabilidade concreta, inclui e não-inclui
Módulo sem fronteira explícitaCada módulo tem responsabilidades, entidades e dependências listadas
Integrações externas não documentadasSeção 9 mapeia toda integração com função e regra de isolamento
Trade-offs não registradosSeção 15 é obrigatória — decisões sem registro são retomadas no futuro
Arquitetura misturada com taskArchitecture define fronteiras; como implementar cada parte fica em tasks
Seção 16 em brancocontract.yaml, structure.md e deploy.md perdem a orientação técnica

Documentos que nascem de Architecture

Docs/architecture.md (aprovado)

Docs/contract.yaml  — endpoints e schemas derivados dos módulos e camadas
Docs/structure.md   — organização de diretórios refletindo camadas e módulos
Docs/deploy.md      — pipeline e ambientes alinhados à arquitetura
Docs/tasks.md       — tasks de implementação por módulo, na ordem correta