Service Oriented Architecture (SOA) ist ein Systemarchitektur-Konzept, das die Bereitstellung fachlicher Dienste und Funktionalitäten in Form von Services vorsieht. Ein Service ist in diesem Kontext eine Systemressource, die über eine standardisierte Schnittstelle in Anspruch genommen werden kann.
Komplexe Geschäftsprozesse lassen sich durch Aneinanderreihung von Service-Aufrufen (Orchestrierung von Services) realisieren. Die Programmlogik ist nicht in einem einzigen Programm zu finden, sondern verteilt über mehrere unabhängige Dienste.
Die SOA sieht eine Menge voneinander unabhängiger, lose gekoppelter Dienste vor. Ein Dienst wird von einem service provider angeboten. Ein service consumer stellt eine Anfrage (service request) an einen Dienst und bekommt daraufhin eine Antwort (service response) vom Anbieter.
Oft werden für SOAs Web Services auf der Basis von SOAP, WSDL und UDDI eingesetzt, doch kann eine SOA prinzipiell auf jeder dienstbasierten Technologie aufgebaut werden. Da Services in unterschiedlichen Programmiersprachen und auf unterschiedlichen Systemplattformen realisiert werden können, wird eine SOA häufig zur Anwendungsintegration genutzt.
Die dadurch erzielte Modularität führt zu geringen Redundanzen und einer höheren Flexibilität der IT-Systeme, was häufig zu niedrigeren Betriebskosten führt. Diesen Vorteilen stehen allerdings oft erhebliche initiale Entwicklungsaufwände gegenüber: Geschäftslogik in existierenden Unternehmensanwendungen muß in der Regel durch Entwicklung geeigneter Adapter zu Services umgebaut werden.
Beispiel
Online-Brokerage - der Abschluss von Wertpapiergeschäften über Internet - kann in einer SOA auf folgenden Dienste aufsetzen:
- einem Wertpapierdienst, der handelbare Wertpapiere (Aktien, Fonds ...) nennt
- einem Marktdatendienst, der zu einem Wertpapier aktuelle Börsenkurse liefert
- einem Depotdienst, der Zugriff auf das Wertpapierdepot des Anwenders erlaubt
- einem Orderdienst, der Kauf-/Verkaufsaufträge des Anwenders an eine Börse übermittelt
Diese Dienste werden aus einer Webanwendung heraus aufgerufen werden.