Was ist SOA (Service-Oriented Architecture)?
Überblick
SOA (Service-Oriented Architecture) ist ein Design, bei dem Softwarekomponenten wiederverwendet werden können. Dies wird mithilfe von Service-Benutzeroberflächen ermöglicht, die im Netzwerk eine gemeinsame Kommunikationssprache verwenden.
Services sind eigenständige Softwarefunktionseinheiten oder Funktionssets, die für die Ausführung spezifischer Aufgaben vorgesehen sind, wie der Abruf bestimmter Informationen oder die Durchführung eines Vorgangs. Ein Service enthält die Code- und Datenintegrationen, die für die Ausführung einer einzelnen vollständigen Geschäftsfunktion benötigt werden. Er wird über Remote-Zugriff aufgerufen und kann individuell bearbeitet oder aktualisiert werden.
Mit anderen Worten, eine SOA integriert Softwarekomponenten, die getrennt bereitgestellt und verwaltet werden, und ermöglicht ihnen, über verschiedene Systeme hinweg als Software-Anwendungen zu kommunizieren und zu funktionieren.
Wie funktioniert SOA?
Bevor die SOA Ende der 1990er in Mode kam, war es noch sehr kompliziert, Anwendungen mit Services in einem anderen System zu verbinden. Bei der Punkt-zu-Punkt-Integration mussten Verbindungen, Routing, Übersetzung von Datenmodellen etc. von den Entwicklern für jedes Projekt neu erstellt werden. Diese Modelle waren als „monolithisch“ bekannt, weil der Code der gesamten App in eine einzelne Bereitstellung integriert wurde. Wenn ein Aspekt der Anwendung nicht funktionierte, musste das gesamte Konstrukt zeitweilig offline genommen, repariert und als neue Version wieder bereitgestellt werden.
Mit der SOA müssen Entwickler die gesamte Integration nicht mehr komplett wiederholen. Grund ist, dass sie damit Services mithilfe standardmäßiger Netzwerkprotokolle (wie SOAP, JSON, ActiveMQ oder Apache Thrift) bereitstellen und so Anfragen senden oder auf Daten zugreifen können. Stattdessen werden als ESBs (Enterprise Service Buses) bekannte Patterns eingesetzt, die die Integration zwischen zentralisierten Komponenten und Backend-Systemen übernehmen und sie als Service-Benutzeroberflächen verfügbar machen. Dadurch können Entwickler vorhandene Funktionen wiederverwenden, anstatt sie neu zu erstellen.
In einer SOA kommunizieren Services über ein System der „losen Kopplung“. Dabei werden Komponenten (oder „Elemente“) in einem System oder Netzwerk verknüpft, damit sie Daten weiterleiten oder geschäftliche Prozesse koordinieren können, wobei die Abhängigkeiten zwischen ihnen reduziert werden. Auf diese Weise entsteht faktisch eine neue App.
Vorteile gegenüber dem monolithischen Ansatz
Schnellere Markteinführung und größere Flexibilität: Die Wiederverwendbarkeit von Services erleichtert und beschleunigt die Entwicklung von Anwendungen. Im Gegensatz zum monolithischen Ansatz müssen Entwickler hier nicht jedes Mal wieder ganz von vorne beginnen.
Einsatz von Legacy-Infrastrukturen auf neuen Märkten: Eine SOA macht es den Entwicklern leichter, Funktionen von einer Plattform oder Umgebung zu skalieren und auf andere Plattformen bzw. Umgebungen auszuweiten.
Geringere Kosten durch mehr Agilität und eine effizientere Entwicklung
Einfache Wartung: Da alle Services voneinander unabhängig sind, können sie ohne Beeinträchtigung anderer Services modifiziert und aktualisiert werden.
Skalierbarkeit: Da Services in einer SOA auf mehreren Services, Plattformen und Programmiersprachen ausgeführt werden können, wird die Skalierbarkeit deutlich gesteigert. Dazu nutzt eine SOA ein standardisiertes Kommunikationsprotokoll, mit dem Interaktionen zwischen Clients und Services reduziert werden können. Auf diese Weise lassen sich Apps unter weniger Druck und mit mehr Benutzerfreundlichkeit skalieren.
Höhere Zuverlässigkeit: Da das Debugging kleiner Services einfacher ist als das von umfangreichem Code, lassen sich in einer SOA zuverlässigere Apps erstellen.
Umfassende Verfügbarkeit: SOA-Einrichtungen stehen allen Personen zur Verfügung.
SOA-Rollen
Die Bausteine einer serviceorientierten Architektur bestehen aus drei Rollen.
Service-Anbieter
Ein Service-Anbieter entwickelt Webservices und liefert sie an eine Service-Registry. Der Service-Anbieter ist für die Nutzungsbedingungen des Service verantwortlich.
Service-Broker oder Service-Registry
Ein Service-Broker oder eine Service-Registry ist verantwortlich dafür, Servicenehmern Informationen über den Service zu liefern. Ein Broker kann privat oder öffentlich sein.
Servicenehmer oder Servicenutzer
Servicenehmer können einen Service in einem Service-Broker oder einer Service-Registry suchen und dann eine Verbindung mit dem Service-Anbieter herstellen, um den Service zu empfangen.