Was ist Serviceorientierte Architektur (SOA)?
Die serviceorientierte Architektur (englisch service-oriented architecture, kurz SOA) ist ein IT-Architekturmuster, das darauf abzielt, bestimmte Dienste zentral für alle Abteilungen eines Unternehmens bereitzustellen und flexibel kombinierbar zu machen. Dieses Konzept, das sich stark an den Geschäftsprozessen eines Unternehmens orientiert, bietet zahlreiche Vorteile in Bezug auf Flexibilität, Kosteneffizienz und Wiederverwendbarkeit von IT-Ressourcen.
Was ist SOA?
SOA ist ein Paradigma zur Strukturierung und Nutzung verteilter IT-Dienste, die von unterschiedlichen Besitzern verantwortet werden. Im Zentrum stehen dabei Dienste, die als standardisierte, wiederverwendbare Module fungieren und so flexibel kombinierbar sind. Gartner, ein Marktforschungsunternehmen, prägte den Begriff 1996. Die Idee selbst ist jedoch älter und fand schon in den frühen 90er Jahren mit der CORBA-Spezifikation Anwendung.
Struktur und Elemente von SOA
Die Hauptkomponenten einer SOA umfassen:
Services: Autarke, plattformunabhängige Module mit wohldefinierten Schnittstellen, die über ein Netzwerk verfügbar sind.
Service-Registry: Ein zentrales Verzeichnis, das wichtige Metadaten zu den angebotenen Diensten enthält.
Service-Repository: Ein Verzeichnis von Dienstdaten für Entwickler und Business-Analysten.
Enterprise Service Bus (ESB): Eine Middleware, die die physische Kopplung zwischen Dienstnutzer und Dienstanbieter ermöglicht.
Mediatoren: Virtuelle Abbilder der Dienste, die Unabhängigkeit und Load-Balancing sicherstellen.
Der Servicegedanke – Die Basis jeder SOA
Im Mittelpunkt jeder SOA steht der zu leistende Service. Es geht darum, wiederverwendbare, standardisierte Prozesse für alle Nutzer bereitzustellen. Diese Services sind als gekapselte Module strukturiert, wodurch Abhängigkeiten reduziert und die Agilität erhöht werden. Jeder Service stellt eine spezifische Funktionalität bereit, die unabhängig von anderen Services genutzt werden kann.
Die Einteilung in Abstraktionsebenen
SOA unterscheidet zwischen hohen und niedrigen Abstraktionsebenen:
Hohe Abstraktionsebene: Prozesse, die näher am Kunden sind, wie „Erstelle eine Marketingkampagne“ oder „Vergib einen Kredit“.
Niedrige Abstraktionsebene: Technische Prozesse, wie „Erstelle ein Server-Backup“ oder „Überprüfe den Zahlungseingang“.
Prozesse auf niedrigen Abstraktionsebenen eignen sich besonders gut für eine zentrale Bereitstellung, da sie von mehreren Abteilungen genutzt werden können. Sie sind in sich abgeschlossen und lassen sich nicht weiter zerlegen.
Praxisbeispiel: Metallbau
Ein Automobilhersteller bestellt 5000 Einspritzleitungen bei einem Metallbauer. Die SOA ermöglicht es dem Metallbauer, diesen komplexen Service aus bestehenden IT-Servicebausteinen zusammenzusetzen. Dazu gehören:
Erfassung des neuen Auftrags
Verfügbarkeitsprüfung: Ist die Ware auf Lager?
Bonitätsprüfung: Falls es sich um einen Neukunden handelt.
Kommissionierung: Falls die Bestellung aus verschiedenen Bauteilen oder Typen besteht.
Versand der Ware
Rechnungsstellung an den Kunden
Kontrolle des Zahlungseingangs
Diese Service-Bausteine sind nicht an einen bestimmten Kunden oder ein spezielles Produkt gebunden. Wenn bei der nächsten Bestellung eines Energieunternehmens 18 Präzisionsstahlrohre geordert werden, wird der Metallbauer viele derselben Servicebausteine wiederverwenden. Auf diese Weise können komplexe Dienste flexibel durch die Zusammenstellung von gekapselten Modulen orchestriert werden.
Vorteile einer serviceorientierten Architektur
Zeitersparnis: Durch die Wiederverwendbarkeit bestehender Servicekomponenten können Geschäftsprozesse schneller umgesetzt werden, da die Module nicht jedes Mal neu entwickelt werden müssen.
Kostenersparnis: Einmal eingerichtete Dienste verursachen keine zusätzlichen Kosten bei der weiteren Nutzung, was die Gesamtbetriebskosten reduziert und die IT-Infrastruktur effizienter macht.
Verbesserte Wissensverteilung: Zentral verfügbare Dienste fördern ein besseres Verständnis der Geschäftsprozesse und vermeiden Silodenken. Mitarbeiter können über Abteilungsgrenzen hinweg auf dieselben Informationen zugreifen und dadurch besser zusammenarbeiten.
Innovationsförderung: Die flexible Struktur unterstützt Produkt- und Serviceinnovationen, da neue Entwicklungen auf vorhandenen Diensten aufbauen können. Das ermöglicht eine schnellere Markteinführung neuer Produkte und Dienstleistungen.
Erleichterte Fehlerbehebung: Der modulare Aufbau erleichtert die Lokalisierung und Behebung von Fehlern. Bei einem Fehler in einem Modul kann dieses isoliert und repariert werden, ohne den gesamten Prozess zu beeinträchtigen.
Technische Realisierung und Kommunikation
Serviceorientierte Kommunikation (SOC)
SOA-basierte Anwendungen nutzen serviceorientierte Schnittstellen für die Kommunikation. Diese Schnittstellen ermöglichen den Informationsaustausch über verschiedene Muster wie Publish-Subscribe, Request-Response und Fire-Forget. Diese Kommunikationsmuster können sowohl synchron als auch asynchron sein, was eine hohe Flexibilität bei der Interaktion zwischen den Diensten bietet.
BPEL und IDE
Geschäftsprozesse lassen sich einfach via WS-BPEL (Web Service Business Process Execution Language) orchestrieren. WS-BPEL ermöglicht die grafische Darstellung und Konfiguration von Geschäftsprozessen, die direkt ausführbar sind. Eine integrierte Entwicklungsumgebung (IDE) unterstützt die Entwickler bei der Erstellung, Testung und Veröffentlichung neuer Dienste. Dies erleichtert die Zusammenarbeit zwischen Entwicklern und Business-Analysten.
Enterprise Service Bus (ESB)
Der Enterprise Service Bus (ESB) ist eine zentrale Middleware-Komponente in einer SOA. Er übernimmt die physische Kopplung zwischen Dienstnutzer und Dienstanbieter. Der ESB ermöglicht die Transformation von Datenmodellen, das Routing von Nachrichten und die Verwaltung der Kommunikation zwischen den Diensten. Er fungiert als Vermittler, der die verschiedenen Kommunikationsprotokolle und Datenformate harmonisiert.
Mediatoren
Mediatoren erzeugen virtuelle Abbilder der Dienste und stellen diese den Konsumenten zur Verfügung. Sie kümmern sich um das Load-Balancing, indem sie Anfragen je nach Auslastung an verschiedene Instanzen eines Services weiterleiten. Dies stellt sicher, dass die Dienste immer verfügbar und performant sind.
Service-Registry und Repository
Die Service-Registry ist ein zentrales Verzeichnis, das alle wichtigen Metadaten zu den angebotenen Diensten enthält. Sie fungiert ähnlich einem Katalog in einer Bibliothek und hilft den Client-Anwendungen, die verfügbaren Dienste zu finden und zu nutzen. Das Service-Repository enthält detaillierte Informationen zu den Diensten, wie Serviceverträge, Versionen und Zugriffskontrollen. Es richtet sich vor allem an Entwickler und Business-Analysten.
Implementierung und Governance
Die Implementierung einer SOA basiert auf der Integration einzelner IT-Komponenten und der Abbildung von Geschäftsprozessen. Dabei kommen verschiedene Protokolle wie SOAP, REST oder XML-RPC zum Einsatz. SOA-Governance umfasst die Regeln und Verantwortlichkeiten zur Überwachung und Kontrolle der Architektur. Sie stellt sicher, dass die definierten Standards und Best Practices eingehalten werden.
SOA in verschiedenen Branchen
Automobilindustrie
In der Automobilindustrie ermöglicht SOA die Integration signalbasierter und serviceorientierter Anwendungen, wie bei softwaredefinierten Fahrzeugen (SDVs). Standards wie AUTOSAR nutzen die SOA-Methodik für Adaptive-Plattformen. Mit Tools wie System Composer und Simulink können Entwickler verschiedene SOA-Modelle erstellen, simulieren und produktionsreifen Code generieren.
Luft- und Raumfahrtindustrie
In der Luft- und Raumfahrtindustrie wird SOA im Rahmen von Standards wie FACE (Future Airborne Capability Environment) genutzt. Simulink und das DDS Blockset unterstützen die Modellierung und Simulation von FACE-Anwendungen. Dies ermöglicht die Erstellung hochzuverlässiger, interoperabler Systeme für komplexe Luft- und Raumfahrtanwendungen.
Gesundheitswesen
Im Gesundheitswesen erleichtert SOA die Integration verschiedener Systeme und Datenquellen. Zum Beispiel können Patientenakten, Laborergebnisse und Abrechnungsinformationen über standardisierte Dienste zentral verwaltet und abgerufen werden. Dies verbessert die Effizienz der Patientenversorgung und ermöglicht eine nahtlose Kommunikation zwischen verschiedenen Gesundheitsdienstleistern.
Finanzdienstleistungen
In der Finanzbranche unterstützt SOA die Integration von Kernbankensystemen, Zahlungsplattformen und Kundenschnittstellen. Durch die Nutzung standardisierter Dienste können Banken schnell auf Marktveränderungen reagieren und neue Produkte und Dienstleistungen anbieten. Zudem verbessert SOA die Sicherheit und Compliance durch zentralisierte und kontrollierte Prozesse.
SOA vs. Microservices
Unterschiede in der Kopplung und dem Anwendungsbereich: SOA ist ein unternehmensweites Integrationsarchitekturparadigma, während die Microservices-Architektur sich auf die Zerlegung einzelner Anwendungen in kleine, unabhängig verwaltbare Komponenten konzentriert. Microservices bieten Vorteile in Bezug auf Agilität, Skalierbarkeit und Ausfallsicherheit, die auch auf die Integration angewendet werden können.
Agilität und Produktivität: Microservices ermöglichen es Entwicklern, neue Technologien in einen Teil der Anwendung einzubinden, ohne den Rest der Anwendung zu beeinträchtigen. Jede Komponente kann unabhängig von den anderen geändert, getestet und implementiert werden, was die Iterationszyklen beschleunigt.
Skalierbarkeit: Microservices können die Skalierbarkeit der Cloud maximal ausnutzen. Jede Komponente kann unabhängig von den anderen skaliert werden, um schnellstmöglich auf Workload-Anforderungen zu reagieren und die Rechenressourcen möglichst effizient zu nutzen.
Ausfallsicherheit: Der Ausfall eines Microservices hat dank der Entkopplung keine Auswirkungen auf die anderen. Jeder Microservice kann seine eigenen Verfügbarkeitsanforderungen erfüllen, ohne die anderen Komponenten oder die gesamte Anwendung an die größten gemeinsamen Verfügbarkeitsanforderungen zu binden.
Risiken und Herausforderungen bei der Einführung von SOA
Hoher Initialaufwand: Die Entwicklung und Implementierung einer SOA erfordert einen höheren Initialaufwand im Vergleich zu monolithischen Strukturen. Design, Implementation und Wartung einer SOA erfordern ein hohes Maß an Methodenunterstützung und Fachwissen.
Komplexität der Integration: Die Integration bestehender Systeme und die Orchestrierung neuer Dienste kann komplex sein. Es ist notwendig, bestehende IT-Komponenten stark zu integrieren, um die gewünschten Vorteile der SOA zu realisieren.
Abhängigkeit vom Management: Die Einführung einer SOA hängt maßgeblich von der Unterstützung und Mitarbeit der Belegschaft und des Managements ab. Ohne die nötige Unterstützung kann die Implementierung scheitern.
Komplexität und Know-how: SOA erzeugt komplexere Abläufe im Code, was das Schreiben von Protokolldateien (Logging) und die Fehlersuche (Debugging) erschwert. Die beteiligten Entwickler benötigen ein hohes Maß an Know-how, wodurch die Abhängigkeit von einzelnen Experten steigt.
SOA Beispiele aus der Praxis
Delaware Electric
Delaware Electric implementierte SOA, um Systeme zu integrieren, die zuvor nicht miteinander kommunizierten. Dies führte zu Effizienzsteigerungen und half dem Unternehmen, während eines fünfjährigen, staatlich verordneten Einfrierens der Strompreise zahlungsfähig zu bleiben.
Cisco
Cisco führte SOA ein, um sicherzustellen, dass die Produktbestellung über alle Produkte und Kanäle hinweg konsistent ist. Die Bestellprozesse wurden als Services dargestellt, die von verschiedenen Abteilungen und Geschäftspartnern genutzt werden können.
Independence Blue Cross (IBC)
IBC in Philadelphia implementierte SOA, um sicherzustellen, dass verschiedene Beteiligte, die mit Patientendaten zu tun haben, auf dieselbe Datenquelle zugreifen. Dies verbesserte die Konsistenz und Qualität der Daten und erleichterte die Zusammenarbeit zwischen verschiedenen Abteilungen und externen Partnern.
Fazit
Die serviceorientierte Architektur (SOA) bietet eine flexible und effiziente Möglichkeit, IT-Dienste zu strukturieren und zu nutzen. Durch die Wiederverwendbarkeit und zentrale Bereitstellung von Diensten können Unternehmen ihre Geschäftsprozesse optimieren, Kosten senken und Innovationspotenziale besser ausschöpfen. Mit der richtigen Implementierung und Governance kann SOA ein wesentlicher Bestandteil moderner IT-Strategien sein.
Die Kombination von SOA mit modernen Konzepten wie Microservices, Cloud-Computing und agilen Entwicklungspraktiken eröffnet zusätzliche Möglichkeiten für eine noch größere Flexibilität und Effizienz in der IT-Landschaft. SOA bleibt ein mächtiges Werkzeug zur Verbesserung der Unternehmensintegration und -agilität, insbesondere in komplexen und verteilten Systemen.