De CloudEvents standaard

Category:Eventorientatie
__NOTOC__
CloudEvents is een open standaard voor het beschrijven van gebeurtenisgegevens. Het doel van deze standaard is om de interoperabiliteit tussen verschillende diensten en platforms te verbeteren door informatie over plaatsgevonden gebeurtenissen ('events') op een gestandaardiseerde manier uit te wisselen. Dit maakt het eenvoudiger om na het optreden van een gebeurtenis met elkaar te communiceren. Het doel is om interoperabiliteit en consistentie in event-driven omgevingen te bevorderen.
== Kenmerken ==
Kenmerken van de standaard zijn:
* Gestandaardiseerd formaat: CloudEvents definieert een minimaal formaat voor metagegevens over een gebeurtenis (bijvoorbeeld tijdstempel, bron, type). Waar nodig kunnen uitbreidingen ('extensies') op de basisstructuur worden gedefinieerd. 
* Techniek-neutraal: De standaard is ontworpen om te werken met verschillende gegevensformaten (bijvoorbeeld JSON en XML) en transportprotocollen (bijvoorbeeld HTTP en AMQP). Gebruikers houden hierdoor de vrijheid om gebruik te maken van technolgoie waarmee zij vertrouwd zijn.
* Inhoud-onafhankelijk: de standaard definieert uitsluitend de meta-informatie om gebeurtenissen te beschrijven en legt geen beperkingen op aan de voor consumers bestemde inhoud ('payload') van een event. 
* Modulaire opbouw: De standaard kent een basis-specificatie en aanvullend daarop specificaties voor gebruik bij verschillende formaten en protocollen.
== Status ==
CloudEvents is gestart om te komen tot een standaard voor het gestandaardiseerd beschrijven van gebeurtenisgegevens binnen cloudgebaseerde systemen. De standaard is echter ook bij andere soorten systemen bruikbaar. CloudEvents is in 2018 geaccepteerd door de Cloud Native Computing Foundation. De standaard kreeg in 2019 het volwassenheidsniveau 'Incubating'. In 2024 is het hoogste volwassenheidsniveau 'Graduated' bereikt. De standaard wordt door steeds meer leveranciers ondersteund.
Het NL GOV profile for CloudEvents is ontwikkeld voor gebruik binnen de Nederlandse overheid. Het profiel voegt een aantal binnen de overheid geldende afspraken toe aan de CloudEvents-specificatie. Het profiel is in beheer bij Logius en nu in behandeling bij het Forum Standaardisatie om te worden toegevoegd aan de pas-toe-of-leg-uit lijst met open standaarden. 
==Inhoud==
Binnen CloudEvents wordt onder een 'event' een datarecord met gegevens over een plaatsgevonden gebeurtenis verstaan. De CloudEvents Core Specificatie beschrijft de meest voorkomende event-attributen:
*Context attributen: een beperkte set verplichte en optionele attributen om een gebeurtenis te beschrijven:
** ID (verplicht): Een unieke identifier voor het event.
**Source (verplicht): De bron van het event (bijv. het systeem of de service die het event genereert).
**Type (verplicht): Het type van het event (bijv. "bestelling geplaatst").
** Specversion (verplicht): De versie van de CloudEvents specificatie die wordt gebruikt.
**Time (optioneel): Het tijdstip waarop het event is gegenereerd.
** Contenttype (optioneel): Het type van de data-payload (bijv. application/json).
**Data (optioneel): De daadwerkelijke inhoud van het event (payload) met voor afnemers bestemde domeinspecifieke informatie over de plaatsgevonden gebeurtenis. Er zijn geen beperkingen qua structuur en formaat van opgenomen gegevens.
*Aanvullende attributen (optioneel): zelf te definieren kenmerken die nodig zijn binnen specifieke toepassingen of domeinen.
==Voorbeeld==
Onderstaand voorbeeld toont een bericht in JSON-formaat dat voldoet aan de CloudEvents standaard. Het bericht is een voorbeeld van een event dat bruikbaar is om applicaties te notificeren dat een bepaalde gebeurtenis heeft plaatsgevonden (in dit geval een verhuizing van een persoon).
 {
 "id": "6a6800cc-5d30-42d2-9078-cf28fd038e58",
 "source": "urn:nld:oin:00000001823288444000:systeem:BRP-component",
 "specversion": "1.0",
 "type": "nl.brp.persoon-verhuisd",
 "time": "2021-10-27T14:35:00.042Z",
 "prioriteit": "hoog",
 "datacontenttype": "application/json",
 "data": {
 "abonnementId": "d7c5fc0a-f7c9-4376-b54a-32df4756059e",
 "bsn": "012345678"
 }
 }
</code>
==Meer informatie==
*CloudEvents website: introductie en toelichting op CloudEvents
*CloudEvents introductie: achtergrondinformatie over het ontstaan en ontwerpbeslissingen van de CloudEvents-specificatie.
*CloudEvents GitHub-repository: de CloudEvents core- en andere specificaties.
*NL GOV profile for CloudEvents website: algemene inforrmatie over het Nederlandse profiel.
*NL GOV profile for CloudEvents: het op CloudEvents gebaseerde profiel voor gebruik door Nederlandse overheidsorganisaties.