Arquitetura Hexagonal, também conhecida como Ports and Adapters, é um padrão arquitetural proposto por Alistair Cockburn em 2005 que isola a lógica de negócio (núcleo da aplicação) de qualquer detalhe externo — banco de dados, framework web, filas, UI ou APIs de terceiros. A comunicação entre o núcleo e o mundo externo acontece exclusivamente através de ports (interfaces) implementadas por adapters (adaptadores), permitindo trocar tecnologias sem tocar nas regras de negócio.
TL;DR
- Padrão criado por Alistair Cockburn (2005) que separa o core da aplicação dos detalhes de infraestrutura via interfaces (ports) e implementações (adapters).
- Torna o sistema testável, agnóstico a framework/banco e resiliente a mudanças tecnológicas.
- Ideal para sistemas B2B complexos com múltiplas integrações; evitar em CRUDs simples.
Ports and Adapters
Ports são interfaces que definem contratos: o que o core precisa (driven ports, ex.: ‘PagamentoPort’) e o que o core oferece (driving ports, ex.: ‘CriarPedidoUseCase’). Adapters são as implementações concretas: um StripeAdapter implementa a PagamentoPort, um controller REST implementa o driving port. O core não conhece nenhum adapter — apenas as interfaces. Segundo Martin Fowler (2017), essa inversão de dependência é o coração do padrão e o diferencial em relação a arquiteturas em camadas tradicionais, nas quais a lógica de negócio depende do banco.
Como implementar
- Identifique o domínio: entidades, agregados e regras de negócio ficam no core, sem dependência externa.
- Defina os ports: uma interface para cada capacidade requerida (persistência, notificação, pagamento) e cada capacidade oferecida (casos de uso).
- Crie os adapters primários (REST, CLI, GraphQL) que invocam o core através dos driving ports.
- Crie os adapters secundários (Postgres, RabbitMQ, Stripe) que implementam os driven ports.
- Configure a injeção de dependência para conectar ports a adapters em tempo de execução.
Vantagens
- Testabilidade elevada: o core é testado com mocks dos ports, sem subir banco ou servidor.
- Independência de tecnologia: trocar Postgres por MongoDB ou Spring por Quarkus exige apenas um novo adapter.
- Alinhamento com DDD: o modelo de domínio permanece puro e expressivo.
- Longevidade: segundo o ThoughtWorks Technology Radar (2023), a hexagonal continua entre os padrões recomendados para sistemas de longa duração.
Leia o artigo completo: Arquitetura Hexagonal (Ports and Adapters): como implementar e vantagens

