ACL

La Anti-Corruption Layer protege el dominio frente a sistemas externos, modelos legacy y contratos que no deberían filtrarse al core del negocio.

¿Qué es una ACL?

ACL significa Anti-Corruption Layer. Es una capa o patrón que evita que los conceptos, modelos y limitaciones de sistemas externos contaminen nuestro dominio interno.

¿Por qué hace falta?

Porque los sistemas externos:

  • suelen tener modelos distintos
  • a veces están mal diseñados
  • pueden usar nombres inconsistentes
  • pueden imponer reglas técnicas que no queremos propagar

Si esos modelos entran directamente al dominio, terminamos adaptando nuestro sistema a decisiones ajenas.

Responsabilidades principales

  • Encapsular adaptadores externos
  • Traducir modelos
  • Aislar dependencias de terceros
  • Aplicar retries y circuit breakers
  • Manejar particularidades técnicas externas

Casos típicos

  • Integración con Stripe o un proveedor de pagos
  • Conexión con un ERP legacy
  • Servicio de email externo
  • Proveedores de shipping
  • Sistemas antiguos con modelos incompatibles

Qué protege exactamente

Protege:

  • el lenguaje del dominio
  • la forma de modelar entidades
  • la consistencia conceptual
  • las reglas internas del negocio

ACL central vs ACL por dominio

A veces la ACL se implementa como un servicio o repositorio central. Otras veces se implementa por dominio o por integración específica.

No hay una sola respuesta correcta. Lo importante es no crear un “monolito de integraciones” sin ownership claro.

Ejemplo práctico

Supongamos que el ERP externo usa:

  • nombres de campos confusos
  • formatos de fecha extraños
  • estados incompatibles con el dominio

La ACL recibe esos datos, los traduce y entrega al dominio un modelo comprensible y consistente.

Resumen

La ACL evita que el dominio se deforme para adaptarse a sistemas externos. Es una capa de protección, traducción y resiliencia.