Was ist eine dienstorientierte Architektur (Service-Oriented Architecture, SOA)?

Die dienstorientierte Architektur (SOA) ist ein architektonischer Ansatz für die Entwicklung von Anwendungen auf der Grundlage einer Sammlung unabhängiger Dienste. Ein Dienst kann eine beliebige Geschäftsfunktion sein, die eine Aktion ausführt und ein bestimmtes Ergebnis liefert, z. B. die Bearbeitung einer Kundenbestellung oder die Erstellung eines Bestandsberichts. Dienste können miteinander verbunden werden, um zusammengesetzte Anwendungen zu erstellen, die den Endbenutzern eine größere Funktionalität bieten.

Zu den Vorteilen des SOA-Ansatzes gehört die einfachere Wartung und Aktualisierung von Dienstkomponenten. Da jede Komponente komprimiert und in sich geschlossen ist, ist es einfacher, Code zu korrigieren oder Elemente zu ersetzen, ohne dass sich dies auf alle anderen Elemente auswirkt. Probleme ergeben sich jedoch, wenn wir festlegen, wie wir die Kommunikation zwischen den Diensten am besten ermöglichen. SOA wird in der Regel mit dem Enterprise Service Bus (ESB) als zentralem Mittel für die Kommunikation zwischen den Diensten in Verbindung gebracht. ESBs reagieren oft nicht gut auf Änderungen, führen in der Regel zu mehr Komplexität und machen es schwieriger zu verstehen, wo ein Dienst beginnt und endet.

SOA im Vergleich zu Microservices

Wenn Sie denken, dass SOA der aktuellen Definition von Microservices sehr ähnlich ist, dann sind Sie nicht allein. Microservices sind ebenfalls kleine, in sich geschlossene Dienste, die unabhängig voneinander funktionieren und gleichzeitig zusammenarbeiten sollen. Es gibt jedoch wichtige Unterschiede zwischen SOA und Microservices. Hier sind einige, die zu beachten sind:

  • Microservices sind sehr fein abgestufte Dienste, die aus funktionalen Gründen auf einer bestimmten Granularitätsebene getrennt sind. Das bedeutet, dass in einer Microservices-Architektur ein Dienst, einschließlich der Datenbank- und Anwendungsserver sowie des Produkt-Supports, durchgängig von ein und demselben Team verwaltet wird. SOA hingegen trennt Dienste auf logische Weise. Der Unterschied besteht darin, dass logisch gruppierte Dienste von Funktionen gemeinsam genutzt werden. Das hört sich gut an ... bis der Dienst ausfällt und alle Funktionen, die auf ihn angewiesen sind, davon betroffen sind. Microservices-Architekturen sind darauf ausgelegt, diese Auswirkungen zu eliminieren, indem sie Geschäftsdienste vollständig in ihre einzigartigen Funktionen einbinden, zusammen mit allem, was notwendig ist, um diese Funktionen auszuführen und geschäftlichen Mehrwert zu liefern – selbst wenn dies bedeutet, dass dabei etwas dupliziert wird.
  • Microservices sind, da sie vollständig funktionsgebunden sind, auch nicht an dieselben Kommunikations-Frameworks, Protokolle und Spezifikationen gebunden, die SOA letztlich einschränken. Stattdessen liegt der Schwerpunkt bei Microservices darauf, die Intelligenz in jedem Endpunktsatz beizubehalten und sie über eine einfache Struktur zu verbinden. Dies wird oft am besten durch die Implementierung eines einzigen API-Gateways erreicht, das die interne Systemarchitektur beherbergt und Anforderungen mit einfachen Webprotokollen, wie z. B. REST, an jeden unabhängigen Microservice weiterleitet. Darüber hinaus nutzt jeder Microservice oft APIs von anderen Diensten, aber das Gateway verhindert, dass mobile Anwendungen jemals das Backend erreichen. Dieses Maß an Flexibilität ist etwas, das SOA, die durch Webdienst-Spezifikationen belastet ist und sich auf ESB zur Verbindung von Anwendungen verlässt, niemals erreichen kann.

Während viele Leute denken, dass Microservices letztendlich SOA sind, gibt es tatsächlich eine Reihe von ausschlaggebenden Unterschieden, die die beiden unterscheiden – und die Microservices in vielerlei Hinsicht zur effektiveren Architektur für komplexe Anwendungen machen. Weitere Informationen über SOA und Microservices erhalten Sie, wenn Sie das kostenlose E-Book, Microservices aufbauen: Fein abgestufte Systeme entwerfen herunterladen.

Wie kann NGINX helfen?

NGINX Plus und NGINX sind die besten Lastausgleichs-Lösungen ihrer Klasse, die von stark frequentierten Websites wie Dropbox, Netflix und Zynga eingesetzt werden. Mehr als 350 Millionen Websites weltweit vertrauen auf NGINX Plus und NGINX Open Source, um ihre Inhalte schnell, zuverlässig und sicher bereitzustellen.

Als softwarebasierter Application Delivery Controller (ADC) ist NGINX Plus darauf ausgelegt, Microservices-Architekturen weitaus effektiver und kostengünstiger zu unterstützen als Hardware-Lösungen mit vergleichbaren Funktionen.

  • NGINX Plus bietet eine vollständige Lösung für die Anwendungsbereitstellung und den Lastausgleich, die die Leistung und Zuverlässigkeit jedes Microservice erhöht
  • NGINX Plus ist flexibel und skalierbar genug, um als API-Gateway und als Endpunkt für jeden Dienst in Ihren Stack zu passen
  • NGINX Plus fungiert als leistungsstarker HTTP-Server, um Microservice-Aktionen mit maximaler Geschwindigkeit und Effizienz durchzuführen