Zum Hauptinhalt springen

Anti-Corruption Layer (ACL)

Einleitung

Eine Anti-Corruption Layer (ACL) schützt das eigene Domänenmodell vor Fremdmodellen, Legacy-Strukturen oder Vendor-Semantik.

Sie übersetzt:

  • Daten
  • Befehle
  • Queries
  • Events

kontrolliert und explizit, damit technische Integration nicht zur fachlichen Kontamination führt.

Eine ACL ist kein Komfort-Pattern.
Sie ist ein Schutzmechanismus.


Einordnung

ACL ist ein strategisches Context-Mapping-Pattern in DDD.

Ziel:

  • semantische Entkopplung
  • Schutz der Ubiquitous Language
  • langfristige Evolvierbarkeit

Sie gehört zur Domänen- und Integrations-Ebene, nicht zur Infrastruktur.


Grundprinzip

Kernaussage:

  • Fremdmodell bleibt außerhalb
  • Übersetzung erfolgt kontrolliert
  • Eigenes Modell bleibt sauber

Charakteristika

1️⃣ Explizite Übersetzungsschicht

Die ACL:

  • mappt externe Modelle auf interne
  • konvertiert Events
  • transformiert Statuswerte
  • isoliert fremde Fehlercodes

2️⃣ Schutz der Ubiquitous Language

Begriffe aus dem Fremdsystem:

  • werden nicht übernommen
  • werden nicht „durchgereicht“
  • werden nicht in Core-Domäne verankert

Die ACL ist sprachlicher Filter.


3️⃣ Ownership beim integrierenden Team

Wichtig:

Die ACL gehört dem Downstream.

Nicht dem Upstream. Nicht der Plattform. Nicht „allen“.


4️⃣ Implementierungsformen

Typisch als:

  • Adapter / Translator
  • Facade
  • API-Gateway-Adapter
  • Event-Mapper
  • DTO-Assembler
  • Message-Handler

Bei asynchroner Integration häufig kombiniert mit:

  • Outbox
  • CDC
  • Idempotenz

Vorteile

  • Schutz vor Legacy-Kontamination
  • Austauschbarkeit externer Systeme
  • Kontrollierte Migration
  • Langfristige Modellstabilität

Risiken / typische Fallstricke

1️⃣ Komplexe Mapping-Logik

Wenn Modelle stark divergieren, wird Mapping fehleranfällig.


2️⃣ Zweites Legacy-System

Eine schlecht gepflegte ACL wird selbst zur Wartungshölle.


3️⃣ Performance-Overhead

Zusätzliche Transformation erhöht Latenz und Komplexität.


4️⃣ Verwechslung mit DTO-Mapping

Eine ACL ist mehr als:

„wir mappen JSON-Felder um“.

Sie schützt Semantik, nicht nur Struktur.


Wann sinnvoll?

  • Externes Modell passt fachlich nicht
  • Vendor- oder Legacy-Druck existiert
  • Langfristige Entkopplung gewünscht ist
  • Migration schrittweise erfolgen soll

Wann unnötig?

  • Modelle sind nahezu deckungsgleich
  • Integration ist kurzfristig und temporär
  • vollständige Autonomie nicht erforderlich

Vergleich zu anderen Context-Mapping-Patterns

PatternModellübernahmeÜbersetzungAutonomie
ConformistJaNeinNiedrig
Shared KernelTeilweiseNeinMittel
Customer–SupplierNeinNeinMittel
Anti-Corruption LayerNeinJaHoch

Strategische Perspektive

ACL ist:

  • teurer als Conformist
  • sauberer als Shared Kernel
  • nachhaltiger als implizite Kopplung

Sie ist ein Invest in:

  • Modellqualität
  • Evolvierbarkeit
  • Unabhängigkeit

Fazit

Eine Anti-Corruption Layer schützt die Identität eines Bounded Contexts.

Sie lohnt sich, wenn:

  • langfristige Autonomie wichtig ist
  • externe Modelle instabil oder fremd sind
  • Migration geplant ist

Sie ist kein „Nice-to-have“. Sie ist eine bewusste Architekturentscheidung.