Transactiepatronen
Titel | Transactiepatronen |
Status | In ontwikkeling ROSA-Architectuurscan BEsluitvorming in beheer |
Versie | 1.0.0 |
Datum | 27 Mei 2024 |
Auteur | Architectenraad Edu-V |
Acties |
|
In het Afsprakenstelsel Edu-V worden afspraken gemaakt over de uitwisseling van gegevens tussen Leveranciers ten behoeve van digitale leer- en onderwijsmiddelen. Voor de praktijksituaties zijn de concrete gegevensuitwisselingen nader uitgewerkt. Om het Ecosysteem laagdrempelig te houden werken we in de architectuur met een beperkt aantal transactiepatronen voor machine-to-machine (M2M) gegevensuitwisseling.
Deze pagina bestaat uit de volgende inhoud:
Transactiepatronen
Om het Ecosysteem laagdrempelig te houden werken we in de architectuur met een beperkt aantal patronen voor machine-to-machine (M2M) gegevensuitwisseling.
In een patroon worden afspraken gemaakt over:
Richting: eenzijdige of tweezijdige communicatie.
Initiatief: push vanuit de Verzender of pull vanuit de Afnemer.
Communicatie: synchroon of asynchroon versturen en ontvangen.
Verwerking: synchroon of asynchroon verwerken.
Binnen het de architectuur van Edukoppling voor M2M gegevensuitwisselingen binnen het onderwijs zijn diverse bedrijfstransactiepatronen* uitgewerkt:
Naam | Patroon | Toelichting | Uitwerking |
---|---|---|---|
Bevraging | Request-Response | Een bevraging is een vraag vanuit een Afnemer waar direct een antwoord op wordt verwacht vanuit de Bron. | Richting: Eenzijdig |
Melding-bevestiging | Melding-bevestiging | Bij de Melding-bevestiging verstuurt de Verzender een melding waar een Ontvanger vervolgens mee aan de slag gaat. | Richting: Eenzijdig |
Asynchrone uitwisseling | Melding-bevestiging Terugmelding-bevestiging | Een asynchrone uitwisseling is twee keer het patroon melding-bevestiging in verschillende richtingen. Eerst wordt een melding gestuurd en de ontvangst bevestigd. Op een later tijdstip, als de melding is verwerkt wordt een terugmelding gestuurd en wordt de ontvangst daarvan bevestigd. | Richting: Tweezijdig Melding Terugmelding |
Abonneren op wijzigingen middels notificaties → → → | Request-Response (abonneerservice) Melding-bevestiging (notificatieservice) Request-Response | Bij een abonnement op wijzigingen middels notificaties is het mogelijk om als ontvanger op de hoogte te worden gesteld bij een wijziging. | Richting: Tweezijdig Abonneerservice Notificatieservice Resource-service
|
* Het bedrijfstransactiepatroon Polling is een anti-patroon en wordt afgeraden. Het bedrijfstransactiepatroon Grote berichten is niet van toepassing op het Edu-V afsprakenstelsel.
Coördinatie
De transactiepatronen van Edukoppeling zijn gericht op een bilaterale uitwisseling van gegevens tussen twee Leveranciers. In een proces kan er ook sprake zijn van een opeenvolging van bilaterale gegevensuitwisselingen in een multilaterale setting. We onderkennen twee vormen van coördinatie:
Naam | Patroon | Toelichting |
---|---|---|
Notificeren van abonnees | Abonneren op wijzigingen middels notificaties | De Bron coördineert het versturen van notificaties naar alle geabonneerde Afnemers. De Bron verwacht geen terugmelding van de Afnemer. De Afnemer is verantwoordelijk voor het correct verwerken van de notificatie en het bijwerken van de gegevens. |
Georkestreerde uitwisseling | Meerdere opeenvolgende Asynchrone uitwisselingen | De Verzender coördineert meerdere opeenvolgende asynchrone uitwisselingen tussen meerdere Ontvangers. De Verzender verwacht wel een terugmelding van de Ontvanger. Op basis van deze terugmelding kan de Verzender een volgende asynchrone uitwisseling starten. Op deze manier kan een Verzender er zorg voor dragen dat alle betrokken Ontvangers in de multilaterale setting beschikken over dezelfde statusinformatie ten aanzien van het gegeven. |
De coördinatievorm Notificeren van abonneren is reeds beschreven in het transactiepatroon Abonneren op wijzigingen middels notificaties. De georkestreerde uitwisseling is een aanvulling op de transactiepatronen en als zodanig separaat uitgewerkt in het afwegingskader.
Transactierollen
In een gegevensuitwisseling worden gegevens uitgewisseld van Leverancier A naar Leverancier B. Het is van belang om hierbij heldere definities te hanteren voor de transactierollen die de leverancier in de gegevensuitwisseling uitoefenen. De transactierollen zijn toegelicht in onderstaand overzicht:
Transactiepatroon | Transactierol | Omschrijving |
---|---|---|
Bevraging | Bron | De bron wordt bevraagd door een afnemer en verstrekt gegevens. |
Afnemer | De afnemer bevraagt een bron en ontvangt gegevens. | |
Abonneren op wijzigingen middels notificaties | Bron | De bron verstuurt een notificatie naar alle afnemers die geabonneerd zij op wijzigingen. De bron wordt vervolgens door een afnemer bevraagt en verstrekt de gewijzigde gegevens. |
Afnemer | De afnemer abonneert zich bij een bron op notificaties. De afnemer ontvangt een notificatie van de bron dat er gegevens gewijzigd zijn. De afnemer bevraagt de bron en ontvangt de gewijzigde gegevens. | |
Melding–bevestiging | Verzender | De verzender verstuurt gegevens naar een ontvanger. |
Ontvanger | De ontvanger ontvang gegevens van een verzender. | |
Asynchrone of Georkestreerde uitwisseling | Verzender | De verzender verstuurt gegeven naar een ontvanger en is zelf ontvanger van de terugmelding. |
Ontvanger | De ontvanger ontvangt gegevens van een verzender en is zelf verzender van de terugmelding. |
Afwegingskader transactiepatronen
De keuze van een transactiepatroon is afhankelijk van het proces waarin de gegevensuitwisseling plaats vindt. Hierbij is het van belang om te kijken naar de karakteristieken die gelden voor en omtrent de gegevensuitwisseling in het proces:
Communicatie: betreft het een bilaterale of multilaterale setting.
Voorspelbaarheid: betreft het een al dan niet planbare gegevensuitwisseling die incidenteel of structureel plaatsvindt.
Complexiteit: vindt de gegevensuitwisseling in een eenvoudige of complexe setting plaats. Complexiteit kan verhoogd worden door behoefte aan persistentie, actualiteit, traceerbaarheid, volgordelijkheid, alternatieve paden en ongedaan maken (roll back)
Volume: leidt de gegevensuitwisseling tot een hoog volume en kan er sprake zijn van een piekbelasting
In aanvulling op deze karakteristieken van het proces, kent een transactiepatroon ook eigenschappen die impact hebben op:
Binding en afhankelijkheid: in hoeverre zijn systemen afhankelijk van elkaar en kunnen ze autonoom opereren.
Betrouwbaarheid: hoe zeker kunnen referentiecomponenten zijn dat de gegevens correct zijn ontvangen en verwerkt.
Schaalbaarheid en elasticiteit: in hoeverre zijn referentiecomponenten in staat om bevragingen, verzending, ontvangst en verwerking op of af te schalen.
Complexiteit: hoe complex is het voor leveranciers om het transactiepatroon te implementeren, onderhouden, door te ontwikkelen en te testen.
Voor ieder van de transactiepatronen is een afwegingskader ontwikkeld dat door de werkgroepen gebruikt kan worden om een keuze te maken.
Transactiepatroon: Bevraging
In dit patroon vraagt een afnemer de actuele gegevens van een entiteit uit een gegevensbron op bij de bron. De aanvraag wordt synchroon door de bron verwerkt en in de response worden de opgevraagde gegevens aan de afnemer verstuurd. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Bilateraal 1-op-1 |
|
Voorspelbaarheid | Incidenteel |
|
Complexiteit | Laag |
|
Volume | Laag met in pieken hoog volume |
|
Het voordeel van dit patroon is de lage complexiteit en de hoge betrouwbaarheid. Het nadeel van dit patroon ligt hem in de hoge afhankelijkheid en de middel schaalbaarheid.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Hoog | Door synchrone verwerking is de koppeling en afhankelijkheid tussen bron en afnemer hoog. Indien bron niet online is dan kan de afnemer de gegevensuitwisseling niet voltooien. |
Betrouwbaarheid | Hoog | Door synchrone verwerking is de betrouwbaarheid van de gegevensuitwisseling hoog. Afnemer kan direct reageren op een foutmelding van de bron. |
Schaalbaarheid en elasticiteit | Middel | Performance is afhankelijk van de schaalbaarheid en elasticiteit van voornamelijk de bron. |
Complexiteit | Laag | De onderhoudbaarheid en doorontwikkeling is hoog omdat het een bilaterale uitwisseling tussen twee partijen betreft. De testbaarheid is hoog door synchrone verwerking. |
Voorbeelden Opvragen
Dit patroon kan bijvoorbeeld toegepast worden in de volgende voorbeelden:
Transactiepatroon: Melding-bevestiging
In dit patroon stuurt een verzender een entiteit naar een ontvanger middels een melding. De ontvanger reageert met een bevestiging van ontvangst en verwerkt de inhoud asynchroon. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Bilateraal 1-op-1 |
|
Voorspelbaarheid | Structureel |
|
Complexiteit | Laag |
|
Volume | Laag met in pieken hoog volume |
|
Het voordeel van dit patroon is de hoge schaalbaarheid en elasticiteit en de lage binding tussen verzender en ontvanger en de lage complexiteit. Het nadeel van dit patroon ligt hem in de betrouwbaarheid.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Laag | Door asynchrone verwerking is de verzender minder afhankelijk van de ontvanger. Door asynchrone verwerking kan een ontvanger die offline was op een later moment de melding ophalen en alsnog verwerken. |
Betrouwbaarheid | Middel | Door asynchrone verwerking en niet versturen van bevestigingsbericht is verzender niet op de hoogte van correcte verwerking door ontvanger. |
Schaalbaarheid en elasticiteit | Hoog | Door asynchrone verwerking kunnen zowel verzender als ontvanger op eigen schaalgrootte opereren. Verzender kan ook meldingen parallel versturen. |
Complexiteit | Laag | De onderhoudbaarheid en doorontwikkeling is hoog omdat het een bilaterale uitwisseling tussen twee partijen betreft. De testbaarheid is middel door asynchrone verwerking. |
Voorbeelden Melding-bevestiging
Dit patroon kan bijvoorbeeld toegepast worden in de volgende voorbeelden:
Transactiepatroon: Asynchrone uitwisseling
In dit patroon stuurt een verzender een entiteit naar een ontvanger middels een melding. De ontvanger reageert met een bevestiging van ontvangst en verwerkt de inhoud asynchroon. Vervolgens stuurt de ontvanger een terugmelding naar de verzender. De ontvanger reageert met een bevestiging van ontvangst. Verzender is in dit geval op de hoogte van de verwerking door ontvanger. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Bilateraal 1-op-1 |
|
Voorspelbaarheid | Structureel |
|
Complexiteit | Middel |
|
Volume | Laag met in pieken hoog volume |
|
Het voordeel van dit patroon is de hoge schaalbaarheid en elasticiteit en de lage binding tussen verzender en ontvanger. Het nadeel van dit patroon ligt hem in de betrouwbaarheid en complexiteit.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Laag | Door asynchrone verwerking is de verzender minder afhankelijk van de ontvanger. Door asynchrone verwerking kan een ontvanger die offline was op een later moment de melding ophalen en alsnog verwerken. |
Betrouwbaarheid | Middel | Door asynchrone verwerking en niet versturen van bevestigingsbericht is verzender niet op de hoogte van correcte verwerking door ontvanger. |
Schaalbaarheid en elasticiteit | Hoog | Door asynchrone verwerking kunnen zowel verzender als ontvanger op eigen schaalgrootte opereren. Verzender kan ook meldingen parallel versturen. |
Complexiteit | Middel | De onderhoudbaarheid en doorontwikkeling is hoog omdat het een bilaterale uitwisseling tussen twee partijen betreft. De implementatie is middel doordat verzender rekening moet houden met een terugmelding door ontvanger. De testbaarheid is middel door asynchrone verwerking. |
Voorbeelden Asynchrone uitwisseling
Dit patroon kan bijvoorbeeld toegepast worden in de volgende voorbeelden:
Transactiepatroon: Abonneren op wijzigingen middels notificaties
In dit patroon abonneert een afnemer zich bij een bron op een wijziging van entiteiten uit een gegevensbron. Een bron notificeert de afnemer bij een wijziging van de entiteit door het versturen van een melding. De afnemer reageert met een ontvangstbevestiging en kan vervolgens asynchroon de gewijzigde entiteiten opvragen. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Bilateraal 1-op-1 |
|
Voorspelbaarheid | Structureel |
|
Complexiteit | Middel |
|
Volume | Laag met in pieken hoog volume |
|
Het voordeel van dit patroon is de hoge schaalbaarheid en elasticiteit en de lage binding tussen referentiecomponenten. De nadelen van dit patroon liggen hem in de betrouwbaarheid en de complexiteit.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Laag | Door asynchrone verwerking is de bron minder afhankelijk van de afnemer. Door asynchrone verwerking kan een afnemer die offline was op een later moment de melding ophalen en alsnog verwerken. |
Betrouwbaarheid | Middel | Door synchrone aflevering en abonnementen kunnen wijzigingen effectief gedeeld worden met alle relevante afnemers. |
Schaalbaarheid en elasticiteit | Hoog | Door asynchrone verwerking kunnen zowel bron als afnemer op eigen schaalgrootte opereren. De bron kan ook meldingen parallel versturen. |
Complexiteit | Hoog | Het bijhouden van abonnees vraagt om logica bij de bron. Het correct verwerken van notificaties vraagt om logica bij de afnemer. De onderhoudbaarheid en doorontwikkeling is laag omdat er meerdere abonnees zijn die gebruik maken van een notificatiedienst. De testbaarheid is middel door asynchrone verwerking. |
Voorbeelden Abonneren op wijzigingen middels notificaties
Dit patroon kan bijvoorbeeld toegepast worden in de volgende scenario’s:
Transactiepatroon: Georkestreerde uitwisseling
In dit patroon orkestreert de Verzender meerdere asynchrone gegevensuitwisselingen in een kritieke volgorde om zo een transactie te voltooien. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Multilateraal 1-op-N |
|
Voorspelbaarheid | Structureel |
|
Complexiteit | Hoog |
|
Volume | Hoog met pieken |
|
Het voordeel van dit patroon is de hoge betrouwbaarheid, de hoge schaalbaarheid en elasticiteit, de lage binding tussen deelnemers. Het nadeel van dit patroon is de hoge complexiteit.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Laag | Door asynchrone verwerking is de verzender minder afhankelijk van de ontvanger. Door asynchrone verwerking en statusbeheer kan een ontvanger die offline was op een later moment de melding ophalen en alsnog verwerken. Door orkestratie en statusbeheer kunnen partijen toe- en uittreden. |
Betrouwbaarheid | Hoog | Door synchrone aflevering, orkestratie en bevestigingsberichten kan de consistentie bewaakt worden. De verzender kan indien nodig alternatieve paden initiëren en handelen op basis van foutcodes. |
Schaalbaarheid en elasticiteit | Hoog | Door asynchrone verwerking kunnen zowel verzender als ontvanger op eigen schaalgrootte opereren. Verzender kan ook meldingen parallel versturen en terugmeldingen parallel verwerken. |
Complexiteit | Hoog | Orkestratie en statusbeheer zijn complex. Door omvang van netwerk en volgordelijkheid is onderhoudbaarheid laag. Door veelvoud aan paden en functionele foutcodes is testbaarheid laag. Door asynchrone verwerking is testbaarheid ook laag. Door hoge complexiteit en lage testbaarheid is doorontwikkeling en wijzigingen complex. |
Voorbeelden Orkestreren
Dit patroon kan bijvoorbeeld toegepast worden in de volgende voorbeelden:
Release notes
Deze uitwerking is gebaseerd op basis van de volgende stappen:
0.0.1: Documentstudie van Edukoppeling uitgevoerd.
0.0.2: Voorbereidende bijeenkomst voor de Architectenraad van RdB en KV.
0.0.3: Review door leden van de Architectenraad.
0.0.4: Verwerken wijzigingsvoorstellen leden van de Architectenraad.
0.0.5: Tijdens de werkconferentie van de Architectenraad Edu-V op 18 april zijn de patronen besproken. De transactiepatronen van Edukoppeling worden overgenomen aangevuld met een toelichting op coördinatie tussen Verzender en Ontvanger.
0.0.6: Er is onderscheid gemaakt in de transactierollen Bron, Afnemer, Verzender en Ontvanger. Deze definities zijn consistent doorgevoerd in het afwegingskader. Ook zijn de benamingen van de referentiecomponenten aangepast.
0.0.7: De pagina is besproken tijdens de bijeenkomst van de Architectenraad Edu-V en is gereed voor de ROSA-architectuurscan.
1.0.0: Het Architectuurkader Edu-V is vastgesteld als startpunt voor de implementatie. Tevens is instemming verleend op verdere doorontwikkeling van het Architectuurkader Edu-V op basis van de Architectuurprincipes. Dit akkoord is verleend op het Bestuurlijk Overleg van 27 mei 2024.