Wat is Service Oriented Architecture
Inleiding
Service Oriented Architecture (SOA) is een veelgenoemd en veelbesproken thema in de huidige manier van zaken doen. Grote leveranciers als HP, BEA, Oracle, IBM, SAP, Oracle, om er een paar te noemen, houden zich voor hun klanten bezig met het inrichten van een SOA. Maar wat is dat eigenlijk, een SOA, wat kun je ermee en uit welke componenten bestaat een SOA op hoofdlijnen? Dit artikel geeft een antwoord op deze vragen.
Wat is een Service Oriented Architecture?
Enkele decennia geleden was het de gebruikelijke manier van automatiseren binnen bedrijven dat diverse business units door de centrale automatiseringsafdeling eigen informatiesystemen lieten bouwen. Deze informatiesystemen deden hun werk onafhankelijk van de informatiesystemen van de andere afdelingen. Uitwisseling van data tussen de diverse informatiesystemen was, zo daar al sprake van was, alleen mogelijk met ingewikkelde interfaces en nieuwe toepassingen werden gewoon toegevoegd aan de bestaande informatiesystemen. Hierdoor ontstond met het verstrijken van de jaren een complex geheel van ICT-toepassingen, dat moeilijk te doorgronden en onderhouden was. Toen het internet zijn intrede deed en elektronisch zakendoen aan belang won, werd het mogelijk én noodzakelijk de diverse informatiesystemen met elkaar te verbinden. Tegelijkertijd werd het mogelijk bepaalde softwarecomponenten te hergebruiken. Dit zorgde voor een grote stap voorwaarts in de ICT dienstverlening.
Het onderling verbinden van informatiesystemen is mogelijk geworden via een browser (bijv. internet explorer, firefox, safari, google chrome). De browser is software die het mogelijk maakt een bedrijfsapplicatie te gebruiken via een website. De browser van een gebruiker (dat wil zeggen een klant of een medewerker) legt hiervoor contact met de webserver. De browser toont de informatie van de webserver (=web pagina's) die deze informatie heeft verkregen van betrokken bedrijfsapplicatie en maakt het tevens mogelijk als gebruiker om instructies (input) te geven aan de bedrijfsapplicatie.
Een Service Oriented Architecture is een software architectuur gericht op het ontwikkelen (zo veel mogelijk uit bestaande applicaties en/of softwarecomponenten), doen functioneren en beheren van diensten (services) voor de ondersteuning van systematisch gedefinieerde bedrijfsprocessen met als doel bedrijfsfuncties te kunnen vervullen tegen afgesproken condities (bijvoorbeeld 90% beschikbaar op maandagen tot vrijdagen tussen 9 en 18 uur, met een reparatietijd van maximaal 20 minuten wanneer het systeem 'down' gaat).
Hieronder kun je lezen uit welke componenten een SOA op hoofdlijnen bestaat, waardoor bovenstaande definitie meer betekenis gaat krijgen en je meer inzicht krijgt in de betekenis van een Service Oriented Architecture.
Componenten Service Oriented Architecture toegelicht
Binnen het bedrijfsnetwerk zijn de navolgende componenten essentieel binnen een SOA.
- Enterprise Service Bus
Binnen een Service Oriented Architecture wisselen alle softwarecomponenten onderling berichten uit. Deze berichten zijn noodzakelijk voor het leveren van een dienst. Wanneer deze berichten geen doorgang vinden, vindt ook geen dienstverlening plaats. Voor het transport van deze berichten, maakt een SOA gebruik van een enterprise service bus (ESB). Zo’n ESB kan kant en klaar op de markt gekocht worden. Een softwarecomponent maakt contact met de ESB en stuurt een bericht in een vaststaand format en voorzien van het opgegeven adres (van een andere softwarecomponent). De ESB zorgt ervoor dat het bericht op het aangegeven adres komt.
- SOA register
Dit register is een elektronische catalogus waarin alle softwarecomponenten zijn beschreven en waarin ook is beschreven wat elk softwarecomponent doet. Het SOA register vervult twee rollen. In de eerste plaats geeft de SOA voor de service broker aan welke softwarecomponenten er draaien en welke softwarecomponenten beschikbaar zijn voor gebruik. In de tweede plaats helpt het SOA register bij het selecteren van softwarecomponenten voor het ontwikkelen van nieuwe, uit diverse softwarecomponenten samen te stellen, applicaties en bedrijfsprocessen (hergebruik). Daarnaast is het SOA register ook de plaats waar softwarecomponenten (web services) gepubliceerd worden voor een breder publiek.
- Workflow engine
De workflow engine is software die de stappen (workflow pattern) omvat die gezet moeten worden voor het leveren van een dienst van de start tot het eind.
- Service broker
De service broker is software die ervoor zorgt dat de aansluitingen tussen alle softwarecomponenten werken. De service broker maakt daarbij gebruik van de informatie uit het SOA register. De meeste op de markt verkrijgbare soorten ESB kunnen ook dienst doen als service broker.
- SOA supervisor
De SOA supervisor is voor veel zaken verantwoordelijk. Belangrijkste taak betreft het waarborgen van service niveaus. De SOA supervisor communiceert daartoe met de infrastructuur diensten. Wanneer er sprake is van performance problemen, geeft de SOA supervisor de details hiervan door aan de infrastructure services. Deze proberen de problemen op te lossen.
- Bedrijfsfuncties
Een bedrijfsapplicatie ondersteunt een (deel van een) bedrijfsproces. Een bedrijfsproces bestaat daarbij veelal uit meerdere processtappen die al dan niet ondersteund kunnen worden met een applicatie. Meerdere bedrijfsprocessen samen vormen een bedrijfsfunctie. Om een idee te geven: een voorbeeld van een bedrijfsfunctie is het verwerken van een order van een klant. Bij het verwerken van deze order zijn diverse bedrijfsprocessen te onderscheiden, bijvoorbeeld het invoeren van een nieuwe order, het wijzigen van een bestaande order, het schrappen van een order, het klantenbeheer. Elk van deze bedrijfsprocessen bestaat weer uit diverse processtappen die ondersteund kunnen worden met een applicatie.
Met Business Process Management (BPM) is het mogelijk een bedrijfsproces stap voor stap te ontwerpen en daar tevens de benodigde applicaties aan te koppelen. Met BPM vormt SOA een krachtig instrument om nieuwe bedrijfsfuncties vorm te geven en te voorzien van de benodigde combinatie van bestaande (en nieuwe) softwarecomponenten (en applicaties).
Afbeelding van een Service Oriented Architecture:
In deze afbeelding zijn duidelijk de diverse onderdelen van een Service Oriented Architecture te onderkennen. Ook is de relatie met de klant aangegeven.