Entkopplung in der Softwarearchitektur verschiebt Komplexität

  • von Derek Comartin
  • Veröffentlicht bei Derek Comartin (CodeOpinion)
  • Aufgenommen am
  • Architecture
Entkopplung in der Softwarearchitektur verschiebt Komplexität - Derek Comartin (CodeOpinion)
Bild: Derek Comartin (CodeOpinion)

Was passiert, wenn jemand auf den Button „Bestellung aufgeben“ klickt?

Für den Endnutzer ist es ganz einfach: ein Klick auf einen Button. In einem großen System hingegen kann hinter diesem Button eine ganze Menge passieren. Wir müssen die Bestellung speichern, die Zahlung erfassen, die Kreditkarte des Kunden belasten, Waren reservieren, eine Bestätigungs-E-Mail versenden und gegebenenfalls Treuepunkte gutschreiben. Hinzu kommen möglicherweise Analysen, Empfehlungen oder andere Prozesse, die auf die Bestellung reagieren.

Weil so viele Dinge gleichzeitig passieren, kann auch vieles schiefgehen.

Oft wird uns gesagt, Entkopplung sei großartig. Man solle Abstraktionen verwenden, Dependency Injection einsetzen, direkte Aufrufe durch Nachrichten und Warteschlangen ersetzen und Publish-Subscribe- und ereignisgesteuerte Architekturen nutzen.

All diese Dinge können nützlich sein, aber sie sind keine Ziele. Und vor allem sind sie nicht kostenlos.

Jeder Schritt, den Sie von einem Methodenaufruf im Speicher wegführen, bringt neue Komplexität und zusätzliche Kosten mit sich. Sie gewinnen möglicherweise Vorteile in Bezug auf unabhängige Bereitstellung, Erweiterbarkeit, Skalierbarkeit oder andere Verfügbarkeitseigenschaften. Sie führen jedoch etwas Neues ein, das Sie nun verstehen, betreiben und debuggen müssen.