🎯 Entendendo a Arquitetura Hexagonal (Ports & Adapters)
Você já ouviu falar da Arquitetura Hexagonal (também conhecida como Ports and Adapters)? Esse padrão foi proposto por Alistair Cockburn para tornar as aplicações mais flexíveis, desacopladas e fáceis de testar.
🔷 O que é a Arquitetura Hexagonal?
A ideia central é separar o núcleo da aplicação (lógica de negócio) das interações com o mundo externo (como bancos de dados, APIs, interfaces gráficas, etc.). O nome “hexagonal” vem de uma representação visual com seis lados, mas o número é simbólico — o importante é a ideia de “conectar coisas externas por meio de portas (ports) e adaptadores (adapters)”.
🔌 Componentes principais:
Core (Domínio): Onde mora a lógica de negócio pura, sem dependências externas.
Ports (Portas): Interfaces que definem como o core se comunica com o mundo externo.
Adapters (Adaptadores): Implementações concretas das portas. Por exemplo, um repositório que acessa o banco de dados ou um controller HTTP.
🔄 Como funciona na prática?
O core define o que precisa ser feito, mas não como.
Os adaptadores implementam essas ações de forma concreta (acessar banco, responder requisições, etc.).
Isso permite que você troque adaptadores sem impactar o domínio (ex: trocar um banco SQL por NoSQL sem mudar a regra de negócio).
✅ Vantagens:
Testes unitários mais simples (mock de portas)
Facilidade de troca de tecnologias
Menor acoplamento entre as camadas
Melhor organização do código
🛠️ Exemplo prático (simplificado):
Port: UserRepository (interface)
Adapter: UserRepositorySQL (implementação com PostgreSQL)
Core: UserService usa o UserRepository, mas não sabe como ele é implementado
🔁 A arquitetura hexagonal é perfeita para quem quer projetos escaláveis, testáveis e com baixo acoplamento.
