Ordina Software Factory > Voortraject > Architectuur > Service Oriented Architecture

Welkom
Software Factory
Werken bij
Contact







Service Oriented Architecture

Een Service Oriented Architecture (SOA) is een bepaalde stijl applicatiearchitectuur, net als bijvoorbeeld client-server of n-tier. Het kenmerkende aan deze stijl is het gebruik van services voor koppelingen tussen applicaties. SOA heeft dus veel te maken met Enterprise Application Integration (EAI). Binnen veel middelgrote en grote organisaties is de informatievoorziening uitgegroeid tot tientallen of honderden applicaties, in allerlei programmeertalen, op allerlei platformen, met een nog veel groter aantal koppelingen. Met het toepassen van een SOA zijn directe koppelingen tussen applicaties niet langer toegestaan, maar gaat elke applicatie gestandaardiseerde services aanbieden die op een uniforme manier kunnen worden aangeroepen door andere applicaties. Het toepassen van een SOA levert een informatievoorziening waarin gedefinieerde, onafhankelijke services kunnen worden geïdentificeerd, gecreëerd, geïnstalleerd en aangeroepen.

Onderdelen van een SOA

We zullen de onderdelen van een SOA hier kort toelichten.

Services
De essentie van een SOA zit uiteraard in de term ‘service’. Een service biedt toegang tot een geautomatiseerde dienst: via een service is een achterliggende applicatie aan te roepen. In een SOA vinden alle aanroepen van applicaties plaats via services. Een SOA voegt een extra laag toe aan de informatievoorziening, bovenop alle bestaande applicaties. Deze ‘servicelaag’ kapselt de totale applicatiefunctionaliteit van het bedrijf in, en stelt deze daarna op een gestandaardiseerde manier weer ter beschikking te stellen via services. Of het nu gaat om traditionele legacy-applicaties, moderne webapplicaties, standaardpakketten voor ERP of CRM, kantoorsoftware zoals MS Office, of groupware-oplossingen: al deze applicaties worden ingekapseld, en daarna via services weer ter beschikking gesteld.

Overigens zal er in de praktijk altijd sprake zijn van een geleidelijke inkapseling van een applicatie die in gebruik is. De bestaande applicaties zullen vaak nog heel lang óók op de oude manier gebruikt blijven worden. Een grootschalige migratie is dus niet nodig bij het invoeren van een SOA.

Een service is op zich niet veel meer dan een klein programma, waarmee functionaliteit uit een achterliggende applicatie wordt aangeroepen. Heel belangrijk is dat er tegenwoordig internationale open standaarden beschikbaar zijn voor het definiëren en gebruiken van services, zoals WSDL, SOAP, XML, UDDI, e.a. Alle grote softwareleveranciers hebben zich hierbij aangesloten, en bieden technologie-oplossingen aan. Dat is een groot verschil met het verleden waarin elke leverancier zijn eigen standaard had. Het is dus nu eindelijk mogelijk om op een gestandaardiseerde manier alle software te onsluiten via services.

Webservices vormen in feite een subset van de totale verzameling services, het zijn namelijk díe services die via internettechnologie benaderbaar zijn. De technologie achter webservices is slechts één van de mogelijkheden om services te implementeren, maar is momenteel wel in snel tempo aan het doorbreken, ook voor services die alleen binnen de informatievoorziening van een bedrijf beschikbaar worden gesteld.

Enterprise Service Bus
Om services aan te kunnen roepen is een voorziening nodig die de communicatie tussen service-aanroeper (‘consumer’) en service-aanbieder (‘provider’) verzorgt. De afgelopen jaren zijn talloze technologieën ontstaan die worden gekenmerkt als ‘middleware’: in feite zijn dat allemaal producten die erop gericht zijn om de communicatie tussen softwareprogramma’s te kunnen verzorgen: CTG, RPC, JMS, MQ, enz. Voor SOA is een concept bedacht dat over al deze onderliggende technologieën een extra laag legt, eigenlijk dus analoog aan het inkapselen van applicaties d.m.v. services: de Enterprise Service Bus (ESB). Een ESB is een verzameling infrastructurele voorzieningen die berichten afhandelen, routeren, transformeren, enz. 

Kerntaken van een Enterprise Service Bus
De ultieme ESB verbergt alle heterogeniteit in platformen, machines, middleware, netwerken, programmeertalen, enz. en maakt een virtuele informatievoorziening mogelijk waarin alle resources via services ter beschikking staan. Dit maakt het mogelijk een willekeurige service aan te roepen via de ESB, zonder dat je weet op welke machine de service is geïmplementeerd, met welke programmeertaal hij is gemaakt, et cetera. Kortom, de ESB vormt het centrale zenuwstelsel van een informatievoorziening die op een SOA is gebaseerd. Verschillende leveranciers zijn hard bezig dit soort integratieplatformen concreet te realiseren (IBM Websphere, BEA Weblogic, Tibco Business Works, Cordys, SAP Netweaver, Microsoft Biztalk e.a.)

Orchestrator of choreograaf
Als services en een ESB worden gebruikt, dan kan ook de besturing van een bedrijfsproces op een makkelijke en flexibele manier geregeld worden. Immers, procesbesturing is dan feitelijk het aanroepen van de juiste services in de juiste volgorde. Dit soort besturing van de werkstroom stond altijd bekend als Work Flow Management (WFM), maar in combinatie met services worden veelal de termen ‘choreography’ of ‘orchestration’ gebruikt (waarbij de services worden gezien als de noten waarmee het muziekstuk wordt samengesteld). Een SOA biedt dus grootse mogelijkheden voor Business Process Management (BPM): een bedrijf kan flexibel gebruik maken van de ICT-infrastructuur, zodat de controle over de bedrijfsprocessen als het ware wordt gelegd in de handen van de mensen waar het thuishoort: de eindgebruikers. Kortom, SOA gaat samen met BPM: de bedrijfsprocessen worden (her)ontworpen in een modelleertool, dat het ontwerp kan omzetten in een formele procestaal (BMPL of BPEL4WS). Deze taal wordt vervolgens uitgevoerd door een choreograaf of orchestrator, die de services aanroept in de ontworpen volgorde. Tenslotte kan nog opgemerkt worden dat bij het definiëren van de services vooral de bedrijfsprocessen leidend zijn.

Portaal
De meeste eindgebruikers van applicaties worden in de huidige situatie geconfronteerd met een groot aantal, uiterlijk verschillende gebruikersinterfaces. Er is veelal geen sprake van één gebruikersinterface die een eindgebruiker in zijn totale procesuitvoering ondersteunt. De afgelopen tijd zijn mede als oplossing hiervoor de zogenaamde ‘portals beschikbaar gekomen: een ‘portal’ of portaal biedt een eindgebruiker uniforme toegang naar de achterliggende applicaties en verbergt deze in meer of mindere mate. Het gaat daarbij niet alleen om applicaties die de primaire processen ondersteunen, maar ook om groupware-applicaties, office-applicaties, document management systemen, content management systemen, datawarehouses, internet, enz. Het concept van een portaal sluit perfect aan op een SOA, hoewel het geen ‘verplicht’ onderdeel ervan vormt. Een portaal kan een eindgebruiker toegang geven tot alle applicatiefunctionaliteit die via services te benaderen is. Het portaal kan geheel op maat worden gemaakt voor de wensen van individuele eindgebruikers, of voor groepen eindgebruikers. In het portaal kan informatie op een geïntegreerde manier worden getoond. Per situatie kan worden bepaald hoe de gebruikersinterface er het best uit zou kunnen zien. Kortom, met een portaal wordt de flexibiliteit van een informatievoorziening die op SOA is gebaseerd perfect benut. Overigens zal het vaak zo zijn dat een portaal náást de bestaande gebruikersinterfaces wordt gezet, het komt erbij. Dit maakt het mogelijk om bewust te kiezen of er wel of niet gemigreerd moet gaan worden. Dit is analoog aan de eerdere stelling dat een bestaande applicatie die van services wordt voorzien vaak ook nog lange tijd op de oude manier gebruikt zal worden; de services komen erbij.

Composite applications
Door de hiervoor genoemde onderdelen van een SOA te combineren, ontstaan feitelijk applicaties die op-maat voor eindgebruikers worden samengesteld. Daarbij wordt er ‘onder water’ gebruikt gemaakt van de functionaliteit van verschillende applicaties. Dit soort samengestelde applicaties wordt wel aangeduid als ‘composite applications’.

Composite applications

In het verleden was daarbij alleen sprake van een simpele vorm van het combineren van tekstuele content, maar door de inzet van SOA is het mogelijk om in principe alle beschikbare data en functionaliteit uit allerlei applicaties te combineren en op een geïntegreerde manier aan te bieden aan eindgebruikers.