Como organizar sistemas em níveis hierárquicos com responsabilidades isoladas
Layer N (Aplicação) ↓ request Layer N-1 (Negócio) ↓ request Layer 2 (Dados) ↓ request Layer 1 (Infraestrutura) ↑ response
Separar responsabilidades em camadas independentes que só comunicam com vizinhas
Sem organização em camadas, sistemas tornam-se monolitos acoplados onde qualquer mudança afeta tudo, dificultando manutenção, testes e evolução do software.
🌱 Precisamos de fronteiras claras — é aí que a Arquitetura em Camadas resolve tudo!
// Sem camadas: tudo misturado!
function processarPedido(dados) {
const html = renderizarUI(dados);
const total = dados.qtd
* buscarPrecoNoBanco(dados.id);
// SQL direto na lógica de negócio!
const sql = 'INSERT INTO pedidos'
+ ' VALUES (' + total + ')';
executarSQL(sql);
enviarEmail(dados.email, html);
}
Organizamos o sistema em níveis hierárquicos onde cada camada tem responsabilidade única e se comunica apenas com a camada imediatamente adjacente.
🏆 Com camadas bem definidas o sistema cresce com ordem e qualquer parte pode evoluir independentemente!
Um restaurante organiza trabalho em papéis especializados que comunicam apenas com o nível adjacente — igual às camadas de software
💡 Garçom não vai à dispensa, cozinheiro não fala com cliente — cada um comunica só com o nível adjacente!
# 3 camadas bem separadas — Python
# CAMADA 1: Infraestrutura
class RepositorioPedidos:
def salvar(self, pedido):
db.execute('INSERT INTO pedidos...', pedido)
# CAMADA 2: Lógica de Negócio
class ServicoPedidos:
def __init__(self, repo):
self.repo = repo
def criar_pedido(self, dados):
pedido = Pedido(dados)
pedido.calcular_total() # regra aqui!
return self.repo.salvar(pedido)
# CAMADA 3: Apresentação
class Controlador:
def __init__(self, servico):
self.servico = servico
def post_pedido(self, request):
return self.servico.criar_pedido(request.dados)
🔑 Cada camada só conhece a imediatamente abaixo — nunca pula camadas!
repo = RepositorioPedidos() servico = ServicoPedidos(repo) ctrl = Controlador(servico)
Entender ambos os lados ajuda a escolher a ferramenta certa para o contexto certo!
💡 Use quando clareza e manutenção superam o custo de latência!
Organizar componentes em níveis hierárquicos com responsabilidades isoladas
Cada camada serve à superior e consome a inferior via interfaces bem definidas
Manutenção, teste e evolução independente de cada nível do sistema
Sempre que o sistema precisar de organização clara e crescimento controlado
Camadas comunicam apenas com vizinhas imediatas
Variações: downcall, one-way call, upcall (callback)
Base do TCP/IP, OSI, MVC e arquiteturas 3-tier
Middleware é a camada de separação nos SDs
Arquitetura em Camadas é o fundamento de quase todo sistema moderno. Dominar esse conceito é dominar a base da engenharia de software distribuída!