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.