Over de Integratie-service-hiërarchie

Een blog over IT-architectuur in de luchtvaart

Welkom bij de Schiphol IT-Architecture blog

Een serie posts over Schiphol IT-architectuur en over hoe wij, Schiphol IT-architecten, meehelpen Schiphol te verduurzamen. Geregeld zal ik hier artikelen, interviews en inzichten plaatsen over onze IT-architectuur en hoe deze doorwerkt in activiteiten van de luchthaven.

Eerst een stuk over mijn eigen specialiteit, de architectuur van het samenwerken van applicaties, ook wel integratie genoemd. Bij Schiphol gebruiken we de archimate als hulpmiddel voor deze architectuurmodellering. En voor het modelleren van integratiearchitectuur ontwikkelden we ook nog eens specifiek beleid. Van dit integratiebeleid laat ik je het centrale thema, dat draait om het concept van services, zien.

In het verleden heb ik een aantal keer geschreven over integratiearchitectuur en hoe je integratiearchitectuur kunt modelleren met behulp van archimate. Deze vorige posts vormen de basis voor het hierboven genoemde integratiebeleid én deze post.

Archimate is niet hetzelfde als Visio

In de loop der jaren ontwierp ik integraties vaak met behulp van MS-Viso of PowerPoint. Hieronder zie je één van de oudste en ook meest typische platen die ik kon terugvinden. Het is een subset van high-level weergaven van orderintegraties:
Figuur 1 - Oude stijl integratiearchitectuurweergave
Deze visualisatie bevat twee integratiestromen die de applicatie "online ordermodule" bedient.

Deze integratievisualisatie wilde ik transformeren naar een archimatemodel. Hiermee toon ik dan aan dat Archimate geen Visio is. Tegelijkertijd kon ik je laten zien hoe wij bij Schiphol integraties modelleren met archimate. Maar terwijl ik aan deze transformatie werkte, werd ik gehinderd door een fout in onze modelleringsmethodiek. Gelukkig vond ik, terwijl ik iets met water deed (zie afbeelding 2), een perfecte oplossing die niet alleen het probleem oploste, maar dat ook nog eens prachtig en elegant deed.

En ik noemde de oplossing: de Integratie-Service-Hiërarchie.
Figuur 2 - Poging tot een archimate-weergave van het vinden van een oplossing met behulp van water
Zelfs de oude manier hierboven om een integratie weer te geven, blijkt afhankelijk van een bepaalde hiërarchie. Als ik de CreateOrder-flow iets anders teken dan krijg je het volgende:
Figuur 3 - Servicehiërarchie in Visio
Nu groepeert de abstracte "orderservice" de integratie tussen OOM en OMS. De Order-Service bestaat op zijn beurt weer uit (is samengesteld uit) drie integratieservices. Hoewel we nu technische informatie over het onderliggende communicatieprotocol missen, kunnen we nog steeds begrijpen waaruit de orderservice bestaat. Het punt dat ik wil maken, dat je bij het gebruik van Archimate anders moet denken. Je moet de neiging weerstaan om alleen aan stromen tussen artefacten te denken en alleen deze te tekenen.
Het lijkt mij beter om eerst na te denken over de aard van de relaties die je moet weergeven.

In dit stuk zal ik:

1. Je de Integratie-Service-Hiërarchie laten zien

2. Uitleggen wat elke service in deze hiërarchie doet

3. Waarom elke service in deze hiërarchie op zijn positie staat

4. Hoe de hiërarchie past in een e2e-integratie

5. Waarvoor je deze hiërarchie kunt gebruiken

Maar voordat we ingaan op de Integratie-Service-Hiërarchie, moeten we eerst kijken naar hoe we integraties in het applicatielandschap (collaboration view) modelleren. Voorheen tekenden we hier bij Schiphol per integratie, alleen de (gegevens)stromen tussen applicaties. Maar we wilden meer informatie over integraties kunnen modelleren dus besloten we om aan elke flow een applicatie-service te koppelen. Dit maakte het mogelijk om nette applicatielandschappen te tekenen enerzijds en daarnaast ook integraties te kunnen groeperen en daarmee te zoeken/vinden en fijnmaziger te modelleren.
Afbeelding 4 - integratieservice "gekoppeld" aan een specifieke gegevensstroom
Het gaat dus om de relatie tussen de flow van het Employee Data-object tussen de twee getoonde applicaties en de "Integrating Employee" integratieservice in bovenstaande afbeelding. Deze koppelings-relatie kan je én een “schone” collaboration-view he

De relatie tussen de "Integrating Employee" integratieservice in bovenstaande afbeelding en de specifieke stroom van het Employee Data-object tussen de twee getoonde applicaties maakt het dus mogelijk om collaboration views te koppelen

En het is deze "Integrating Employee"-applicatieservice die ook bovenaan de Integratie-Service-Hiërarchie staat.
  • ‘De uitdaging trok me over de streep.’
    Trotse 24/7-verhalen van je nieuwe collega’s ‘De uitdaging trok me over de streep.’
  •   ‘Als ik uit het raam kijk, zie ik letterlijk het resultaat van ons werk.’
    Trotse 24/7-verhalen van je nieuwe collega’s ‘Als ik uit het raam kijk, zie ik letterlijk het resultaat van ons werk.’
  • ‘Schiphol stimuleert het uitproberen van goede ideeën Daardoor sta je hier nooit stil.’
    Trotse 24/7-verhalen van je nieuwe collega’s ‘Schiphol stimuleert het uitproberen van goede ideeën Daardoor sta je hier nooit stil.’

De Integratie-Service-Hiërarchie

Omdat het archimate-metamodel geen services toestaat die services servicen, hebt je een andere view op services nodig om services te laten samenwerken. Het gebruik van de hiërarchie van services lost dit probleem perfect op.

Laat me je de Integratie-Service-Hiërarchie uitleggen.
1. De specifieke integratieservice
Bovenaan in de hiërarchie staat de specifieke integratieservice(1). Deze is specifiek voor de integratie tussen twee applicaties of hun respectievelijke applicatiefuncties. Voor elke specifieke integratie bestaat er maar één aparte specifieke integratieservice. De specifieke integratieservice moet je zien als een abstracte service die de specifieke consuming service(2) en de herbruikbare integratieservice (5) samenvoegt.
2. De specifieke consuming service (2)

De specifieke consuming service(2) is ook een abstracte service die de applicatiespecifieke consuming service(3) en een optionele compenserende applicatiespecifieke consuming service(4) samenvoegt.

3. De applicatiespecifieke consuming service (3)
Deze service vergeten we vaak te modelleren (zie Afbeelding 1), maar de service doet iets heel belangrijks voor de integratie: het transformeert namelijk het geleverde data object in een data object waarmee de consuming applicatie kan werken. Als je het eigenaarschap van dit gedeeld data object wilt volgen, moet je weten wat andere(consumerende) applicaties ermee doen.
4. De compenserende applicatiespecifieke consuming service (4)
Deze service compenseert voor alle integratielogica die de consuming applicatie niet kan uitvoeren. Het zou niet moeten bestaan; Applicaties die zelf niet overweg kunnen met standaard integratiepatronen en -protocollen, moeten we niet aanschaffen of gebruiken. Maar we lijken maar niet van legacy-applicaties af te komen.
5. de herbruikbare integratieservice (5)
In het centrum van de hiërarchie, waar het thuishoort, staat de integratieservice waar alle integratie-mensen van dromen: de herbruikbare integratieservice(5).

Idealiter staat de herbruikbare integratieservice(5) in een integratieservice-etalage waar je alle herbruikbare integratieservices kan zoeken, vinden, selecteren, combineren, configureren en testen.

De herbruikbare integratieservice is een abstracte service die is samengesteld uit de providing Integration Service(6) en, optioneel, de exposing Integration Service(9) .
De Providing Integration Service (6)
De providing Integration Service(6) zorgt als abstracte service, voor de samenstelling van de applicatiespecifieke providing service(7) en een optionele compenserende applicatiespecifieke providing service(8).
7. De applicatiespecifieke providing service (7)
Deze “echte” integratieservice levert de specifieke interne-applicatie-functionaliteit aan de buitenwereld. Uiteindelijk gaat het om de data of functionaliteit die deze integratieservice levert.
8. De compenserende applicatiespecifieke providing service (8)
Deze service compenseert voor alle integratielogica die de providing applicatie niet kan uitvoeren. Het zou niet moeten bestaan; Applicaties die zelf niet overweg kunnen met standaard integratiepatronen en -protocollen, moeten we niet aanschaffen of gebruiken. Maar we lijken maar niet van legacy-applicaties af te komen (zie ook compenserende applicatiespecifieke consuming service (4)).
De Exposing Integration Service (9)
Deze service en de onderliggende applicatie zorgt voor de daadwerkelijke zoekbare, vindbare, combineerbare, configureerbare, zichtbare, selecteerbare, testbare capabilities voor loosly-coupled integratie. Daarnaast zorgt deze service ook nog een voor de operationele kant van beveiligde, policied en betaal-functie capabilities.

Natuurlijk kunt je, met de hiërarchie van integratieservice, er altijd voor kiezen dat je geen loosly-coupled integraties wil. Deze service en de herbruikbare integration service(5) komen dan gewoon te vervallen. Dit maakt de exposing integration service(9) dus optioneel.

Wil jij ook aan de IT-Architectuur van Schiphol werken?

Meld je aan voor
de Schiphol job alert!
Blijf op de hoogte van de nieuwste vacatures in je interessegebied.

De Integratie-Service-Hiërarchiepiramide

De hiërarchie van integratie kan worden gezien als een soort piramide. Bovenaan, verlicht het oog van de piramide de specifieke integratieservice(1). Ook bij problemen met een bepaalde integratie staat deze specifieke integratieservice in de schijnwerpers.

Direct onder het oog staan de integratieservices die de samenwerking orkestreren.

En aan de basis van de servicespiramide staan de integratieservices die het echte werk doen. Alleen aan deze koppelen we één of meer realiserende functies.
Afbeelding 5 - De Integratie-Service-Hiërarchiepiramide

Hoe de Integratie-Service-Hiërarchie gebruiken

In mijn volgende post rond ik eindelijk de transformatie van Visio naar archimate af. Dan laat ik ook alle voordelen van een compleet integratieoplossingsontwerp in archimate zien. Maar om je een alvast een blik te gunnen op het eindresultaat; de Integratie-Service-Hiërarchie moet passen tussen de integrerende applicaties, de bij de integratie betrokken applicatiefuncties en de bijbehorende Data-Objecten.

Gebruik alleen de benodigde services van de Integratie-Service-Hiërarchie hoeven. Dus sommige (4 en/of 8) kan je weglaten en sommige (2&3 en/of 6&7) kan je combineren tot één:
Figuur 6 – Typisch standaardontwerp van integratieoplossing
Zoals je in het bovenstaande voorbeeld kunt zien, bevat deze Integratie-Service-Hiërarchie niet alle services (1 tot en met 9), maar alleen de services vereist voor deze specifieke architectuur. Modeleer alleen services die informatie bieden voor verdere implementatie en operationeel gebruik of architectuurwijziging.

Bijvoorbeeld, met de Exposing Integration Service (9) laat je zien dat het om een loosly-couped integratie gaat. De realiserende functie eronder toont het integratiepatroon (db, bestand, bericht, gebeurtenis, api) en de assigned applicatie toont welk specifiek integratieplatform we hiervoor gebruiken.

Voor operationeel gebruik; Bij een probleem is met een bepaalde integratie, biedt deze weergave een startpunt tijdens incidenttoewijzing. Je kunt duidelijk zien dat op dit toepassingsniveau drie (en niet één!) partijen verantwoordelijk zijn voor het operationele welzijn van een integratie. Je kunt dus beginnen met contact opnemen met de verantwoordelijke partijen voor service 6, 8 en 2 en informeren (niet toewijzen) over het probleem.

Voor architectuurwijziging, wanneer je bijvoorbeeld de providerapplicatie vervangt, geeft deze weergave de specifieke providing integratieservice(6) die behouden moet blijven. Was je consistent bij het beheren van de leverende integraties, dan kan je gemakkelijk een tabel maken met te migreren integraties en hun specificaties.
Heb je nog vragen?
Ismaël Salem
Heb je nog vragen?
Ismaël Salem Recruitment business partner IT & Data