Pular para o conteúdo

apps/architecture/layered-n-tier

039 · Arquiteturas de Alto Nível (Macro-Architecture) · ≈ 5 min de estudo

Arquitetura em Camadas (N-Tier)

O código se divide em camadas horizontais — apresentação, negócio e dados — e cada uma chama só a imediatamente abaixo. A camada de dados roda sobre um tier próprio, o PostgreSQL. Use em sistemas de regra moderada, onde a separação por responsabilidade técnica basta e o time conhece o formato.

passos
6
arquivos
5
teste
1
tecnologias
5
Infraestrutura realTypeScriptBunElysiaPostgreSQLDocker
Baixar cartão

Cenário

Core bancário de uma agência digital: o operador consulta saldo, transfere entre contas (limite de R$ 50.000,00 por transferência, saldo suficiente) e acompanha a posição consolidada por agência. Nenhuma camada pula a de baixo: o controller nunca faz query e o repositório nunca decide regra.

Planta

Fluxo
4/4
Camada de apresentacaoCamada de negocioCamada de dadosCliente HTTPcontroller_accountrotas, validacao deformato, R$ formatadoservice_transferlimite, saldo, contasrepository_accountSQL, FOR UPDATE, transacaoTier de dadosPostgreSQL
4

4 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Apresentação, negócio e dados empilhados.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    A apresentação recebe o HTTP, valida o formato do corpo e chama só o ServiceTransfer

  2. 02

    O negócio aplica as regras (valor inteiro positivo, limite, contas distintas e existentes, saldo) e define o que roda numa transação

  3. 03

    O dado executa a transaçãoTrava as duas contas com FOR UPDATE em ordem de id, grava saldos e a transferência

  4. 04

    Recusa vira ErrorTransferRefused; a apresentação traduz em 422 (ou 404 para conta inexistente)

  5. 05

    A posição por agência é agregada no PostgreSQL (GROUP BY); a apresentação formata os valores em reais

  6. 06

    layer_dependency.test.ts falha se algum arquivo importar uma camada que não seja a imediatamente abaixo

Trade-offs

O que se ganha, o que se paga

4 vantagenscada ganho tem um preço4 custos

Vantagens

  • Separação clara e familiar — baixa curva de aprendizado

  • Trocar o banco mexe só na camada de dados

  • Cada camada testável na sua fronteira

  • Direção única das dependências, verificável por teste

Custos

  • Leitura simples atravessa todas as camadas

  • Negócio depende da camada de dados, não de uma abstração

  • Tende a modelo anêmico quando a regra cresce

  • Funcionalidade vertical espalha mudança por todas as camadas

apps/architecture/layered-n-tier

5 arquivos

src/presentation/

  • controller_account.tsApresentação — rotas Elysia e formatação

src/business/

  • service_transfer.tsNegócio — regras e fronteira da transação

src/data/

  • repository_account.tsDados — SQL, lock e transação

src/

  • app_layered.tsMonta as camadas de cima para baixo
  • layer_dependency.test.tstesteGarante a direção das dependências

Executar · com Docker

  1. ./docker.sh up# sobe PostgreSQL
  2. cp .env.example .env# variáveis de ambiente
  3. bun install# dependências
  4. bun run demo# roda o cenário
  5. bun run test# integração contra o serviço real
Requisitos
BunDocker
Sobe junto
PostgreSQL

Por que se relacionam

Teste rápido

Qual é o próximo passo depois de Layered / N-Tier Architecture?

Próximo projeto · Arquiteturas de Alto Nível (Macro-Architecture)Arquitetura Hexagonal (Ports & Adapters)
Esc

↑ ↓ navegarEnter abrir191 resultados