ACL
A Anti-Corruption Layer protege o domínio contra sistemas externos, modelos legados e contratos que não deveriam vazar para o core do negócio.
O que é uma ACL?
ACL significa Anti-Corruption Layer. É uma camada ou padrão que impede que os conceitos, modelos e limitações de sistemas externos contaminem nosso domínio interno.
Por que ela é necessária?
Porque os sistemas externos:
- costumam ter modelos diferentes
- às vezes são mal projetados
- podem usar nomes inconsistentes
- podem impor regras técnicas que não queremos propagar
Se esses modelos entram diretamente no domínio, acabamos adaptando nosso sistema a decisões alheias.
Responsabilidades principais
- Encapsular adaptadores externos
- Traduzir modelos
- Isolar dependências de terceiros
- Aplicar retries e circuit breakers
- Lidar com particularidades técnicas externas
Casos típicos
- Integração com Stripe ou um provedor de pagamentos
- Conexão com um ERP legado
- Serviço de e-mail externo
- Provedores de shipping
- Sistemas antigos com modelos incompatíveis
O que exatamente ela protege
Protege:
- a linguagem do domínio
- a forma de modelar entidades
- a consistência conceitual
- as regras internas do negócio
ACL central vs ACL por domínio
Às vezes a ACL é implementada como um serviço ou repositório central. Outras vezes é implementada por domínio ou por integração específica.
Não existe uma única resposta correta. O importante é não criar um “monólito de integrações” sem ownership claro.
Exemplo prático
Suponhamos que o ERP externo use:
- nomes de campos confusos
- formatos de data estranhos
- estados incompatíveis com o domínio
A ACL recebe esses dados, os traduz e entrega ao domínio um modelo compreensível e consistente.
Resumo
A ACL evita que o domínio se deforme para se adaptar a sistemas externos. É uma camada de proteção, tradução e resiliência.