Serviceorientierte Architektur mit NServiceBus, Teil 1
13.03.2023, 00:00 Uhr
Das Befehls-Orchester
In einer serviceorientierten Architektur sollen die beteiligten Dienste autonom sein. Damit dies gelingen kann, gilt es Befehle auf mehrere Teilnehmer zu verteilen.
Die Implementierung eines Softwaresystems in Form von Microservices verspricht die Vorteile der unabhängigen Skalierbarkeit, Test- und Wartbarkeit sowie höhere Fehlertoleranz durch lose Kopplung. Die Implementierung eines Systems, das diese Vorteile auch wirklich liefert, ist leider gar nicht so einfach. Will man die Vorteile der Architektur nicht verspielen, ist die Eigenschaft der Autonomie der am System beteiligten Dienste eine der wichtigsten. Ist ein Dienst nicht autonom, ist er also abhängig von anderen Diensten, gehen die lose Kopplung und damit die Fehlertoleranz verloren. Test- und Wartbarkeit sinken, weil beim Test andere Komponenten berücksichtigt werden müssen. Letztendlich leidet auch die Skalierbarkeit, denn was nützt es, wenn der Dienst skaliert, aber die abhängigen Dienste der Bottleneck sind?
Ob es gelingt, ein System zu bauen, bei dem die beteiligten Dienste autonom sind, hängt maßgeblich vom Schnitt und vom Umfang der beteiligten Dienste ab. Somit ist dies eine der ersten Fragen, die man sich bei dem Entwurf des Systems stellen muss. Die Ideen, die den Ausführungen in diesem Artikel zugrunde liegen, stammen aus Udi Dahans Lehrgang „Advanced Distributed Systems Design“ [1] (ADSD, siehe Kasten Advanced Distributed Systems Design).
Jetzt 1 Monat kostenlos testen!
Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
- + Digitales Kundenkonto,
- + Zugriff auf das digitale Heft,
- + Zugang zum digitalen Heftarchiv,
- + Auf Wunsch: Weekly Newsletter,
- + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar