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.