Naar de inhoud
DataIntegratie.nl dataintegratie.nl

Realtime data synchronisatie of batch: wat kies je per gegevensstroom?

Realtime data die zichtbaar wordt via een digitale interface

Realtime data synchronisatie betekent dat een wijziging in het ene systeem binnen enkele seconden ook in het andere systeem staat. Dat is niet voor alle gegevens nodig: voorraad en orders hebben baat bij snelheid, terwijl productcontent en financiële boekingen prima elk uur of elke nacht kunnen. De juiste keuze per gegevensstroom bespaart je kosten, API-verkeer en storingen.

Realtime, near-realtime en batch: wat is het verschil?

In gesprekken over koppelingen wordt “realtime” vaak ruim gebruikt. Het helpt om drie niveaus te onderscheiden.

Realtime

Een wijziging wordt direct doorgegeven, meestal binnen een paar seconden. Dat gebeurt doorgaans via een webhook of event: het bronsysteem meldt zelf dat er iets veranderd is. Echt nul vertraging bestaat bij koppelingen tussen losse systemen niet, want er zit altijd netwerkverkeer en verwerking tussen.

Near-realtime

Wijzigingen worden in korte intervallen opgehaald, bijvoorbeeld elke 1 tot 15 minuten. Voor de meeste bedrijfsprocessen voelt dit als realtime, en het is vaak de verstandigste middenweg als een systeem geen webhooks ondersteunt.

Batch

Gegevens worden op vaste momenten in één keer verwerkt, bijvoorbeeld elk uur, elke nacht of één keer per week. Batch is eenvoudig, goed te controleren en belast systemen op rustige momenten. Het nadeel: tussen twee runs lopen systemen uit elkaar.

Webhooks, polling en geplande jobs

Achter die drie niveaus zitten drie technieken om een synchronisatie te starten.

  • Webhooks. Het bronsysteem stuurt een bericht naar de integratie zodra er iets gebeurt, zoals een nieuwe order in Shopify. Snel en zuinig met API-verkeer, maar je bent afhankelijk van het bronsysteem: een gemiste of dubbele webhook moet je zelf opvangen.
  • Polling. De integratie vraagt op een vast interval: “wat is er veranderd sinds de vorige keer?” Dat werkt met vrijwel elke API, mits het systeem kan filteren op wijzigingsdatum. Te vaak pollen kost onnodig veel API-calls.
  • Geplande jobs. Een taak die op een vast tijdstip draait, bijvoorbeeld een volledige prijslijst om 02:00 uur. Vaak via een bestand of een bulk-API.

Een goede opzet combineert ze vaak. Je gebruikt webhooks als snel signaal en draait daarnaast periodiek een controle die gemiste wijzigingen alsnog oppakt. Zo krijg je snelheid zonder dat één gemist bericht ongemerkt tot verkeerde gegevens leidt. Meer over de techniek erachter lees je in het artikel over API koppelingen.

Welke gegevens hebben welke snelheid nodig?

De vraag is niet “willen we realtime?”, maar “wat kost het als dit gegeven een uur achterloopt?” Deze tabel is een gangbaar vertrekpunt voor webshops en groothandels.

GegevensAdviesWaarom
VoorraadRealtime of near-realtimeVoorkomt verkoop van producten die er niet meer zijn, zeker bij meerdere kanalen en marketplaces
Orders naar ERP of WMSRealtime of elke paar minutenHoe eerder de order in het magazijn staat, hoe eerder hij de deur uit kan
Orderstatus en track-and-traceNear-realtimeKlanten verwachten snel een verzendbevestiging
PrijzenPer uur of per nacht, direct bij actiesPrijzen wijzigen meestal gepland, maar een fout moet snel te herstellen zijn
ProductcontentPer uur of per nachtTeksten en afbeeldingen zijn niet tijdkritisch en vaak groot in volume
KlantgegevensBij wijziging of per uurBelangrijk voor B2B-prijsafspraken en kredietlimieten
Financiële boekingenPer dagEen dagelijkse batch is beter te controleren en aan te sluiten

Een voorbeeld: bij een WMS koppeling is snelheid op voorraad en orders cruciaal, terwijl een PIM koppeling productdata prima elk uur kan bijwerken. Ook binnen één stroom kun je differentiëren: een voorraadwijziging naar nul stuur je direct door, een kleine correctie mag meeliften met de volgende run.

API-limieten: de grens van realtime

Bijna elke SaaS-applicatie beperkt hoeveel verzoeken je per seconde, minuut of dag mag doen. Shopify werkt met een bucket-systeem en rekent bij GraphQL met kosten per query. Exact Online hanteert limieten per minuut en per dag per administratie. Business Central en veel andere pakketten hebben vergelijkbare grenzen.

Dat heeft directe gevolgen. Wie elke minuut 10.000 artikelen één voor één opvraagt, zit al snel aan de limiet, waarna verzoeken worden geweigerd. Slimme synchronisatie haalt daarom alleen gewijzigde records op (een delta), bundelt wijzigingen in bulkverzoeken en wacht netjes als het systeem aangeeft dat de limiet is bereikt. Kijk bij een Exact koppeling of een Shopify koppeling altijd eerst naar de actuele limieten in de documentatie van de leverancier, want die worden regelmatig aangepast.

Kosten en complexiteit

Realtime klinkt als altijd beter, maar het heeft een prijs:

  • Meer bewegende delen. Webhooks moeten worden ontvangen, gecontroleerd, in een wachtrij gezet en verwerkt. Bij batch is er één taak die start en eindigt.
  • Meer verkeer. Elke kleine wijziging is een los bericht. Bij veel volume kan dat hogere licentiekosten of zwaardere infrastructuur betekenen.
  • Lastiger testen. Een batch kun je opnieuw draaien en vergelijken. Een stroom van losse events volg je minder makkelijk na.
  • Volgorde. Komt “order geannuleerd” binnen vóór “order aangemaakt”, dan moet de integratie daar raad mee weten.

Batch is daarentegen niet gratis: tussen twee runs werk je met verouderde gegevens, en een fout in de nachtrun ontdek je pas de volgende ochtend. De kunst is per stroom de eenvoudigste oplossing te kiezen die snel genoeg is.

Foutafhandeling en idempotentie

Hoe snel een koppeling ook is, er gaat vroeg of laat iets mis: een systeem is even offline, een time-out, een ongeldig veld. Een betrouwbare synchronisatie is daarop voorbereid.

Retries met wachttijd

Bij een tijdelijke fout probeert de integratie het opnieuw, met steeds iets meer wachttijd tussen de pogingen. Blijft het misgaan, dan komt het bericht in een foutenlijst en krijgt iemand een melding. Zo raakt er niets kwijt en blijft een storing niet onopgemerkt.

Idempotentie

Webhooks worden vaak “minstens één keer” afgeleverd, dus soms ook twee keer. En een retry kan een bericht opnieuw versturen dat de eerste keer eigenlijk wel was aangekomen. Een idempotente verwerking zorgt dat hetzelfde bericht twee keer verwerken hetzelfde resultaat geeft als één keer. In de praktijk: controleer op een uniek kenmerk zoals het ordernummer of een event-ID voordat je iets aanmaakt, en werk een record alleen bij als de wijziging nieuwer is dan wat je al hebt.

Controle achteraf

Laat periodiek een vergelijking draaien tussen bron en doel, bijvoorbeeld een nachtelijke check of alle orders van gisteren in het ERP staan. Zo vang je stille fouten op die geen melding gaven.

Drie voorbeelden uit de praktijk

Webshop met meerdere marketplaces. Voorraad komt uit het WMS en wordt bij elke mutatie via een event naar de webshop en de marketplaces gestuurd. Orders komen via webhooks binnen en gaan direct naar het ERP. Een nachtelijke volledige voorraadsync corrigeert eventuele afwijkingen.

B2B-groothandel met klantspecifieke prijzen. Prijsafspraken wijzigen een paar keer per maand. Een run elke nacht is genoeg, met de mogelijkheid om handmatig een directe sync te starten bij een prijsfout. Orders uit de B2B-portal gaan elke vijf minuten via polling naar het ERP, omdat het ERP geen webhooks ondersteunt.

Productdata vanuit een PIM. Content wordt elk uur als delta naar de webshop gestuurd, alleen voor producten die volledig zijn verrijkt. Afbeeldingen en grote bestanden gaan ’s nachts, zodat de webshop overdag niet wordt belast.

Synchronisatie laten inrichten

Twijfel je welke stroom realtime moet en welke niet? Wij kijken per gegevensstroom naar volume, API-limieten en de gevolgen van vertraging, en bouwen de koppeling bij voorkeur op Alumio met retries, monitoring en logging standaard ingebouwd. Lees ook het overzicht over software integratie, bekijk de tarieven of plan een gratis datascan van ongeveer 45 minuten via contact.

Veelgestelde vragen

Vragen over dit onderwerp

Wat is change data capture?

Change data capture, afgekort CDC, is een techniek waarbij wijzigingen direct uit de database of het transactielog van een systeem worden afgelezen. Zo hoeft de applicatie zelf geen webhooks te versturen en hoef je niet steeds de hele tabel op te vragen. Het wordt vooral gebruikt bij eigen databases en datawarehouses, minder bij SaaS-pakketten waar je geen databasetoegang hebt.

Wat is een delta sync?

Bij een delta sync of incrementele synchronisatie verwerk je alleen de records die sinds de vorige run zijn gewijzigd, in plaats van alles opnieuw. Dat is sneller en spaart API-calls. Het bronsysteem moet dan wel kunnen filteren op een wijzigingsdatum of volgnummer. Een periodieke volledige sync blijft handig als vangnet voor gemiste wijzigingen.

Wat betekent eventual consistency?

Eventual consistency betekent dat systemen niet op elk moment exact gelijk zijn, maar na korte tijd wel weer overeenkomen. Bij gekoppelde applicaties is dat normaal: een voorraadwijziging staat eerst in het WMS en een paar seconden later in de webshop. Belangrijk is dat je weet hoe groot die vertraging mag zijn en dat processen daartegen bestand zijn.

Wat gebeurt er als twee systemen tegelijk hetzelfde gegeven wijzigen?

Dan ontstaat een conflict, en zonder afspraak wint de laatste schrijfactie, ook als die verkeerd is. Voorkom dit door per gegeven één leidend systeem aan te wijzen, bijvoorbeeld het ERP voor prijzen en het PIM voor productteksten. Moeten beide kanten kunnen wijzigen, leg dan vast welke regel geldt, zoals de meest recente tijdstempel of voorrang voor één systeem.

Wat is het verschil tussen synchroon en asynchroon koppelen?

Bij synchroon koppelen wacht het ene systeem op antwoord van het andere, zoals een webshop die tijdens het afrekenen live de voorraad opvraagt. Bij asynchroon koppelen wordt een bericht klaargezet en later verwerkt, zonder dat de verzender wacht. Asynchroon is robuuster bij storingen, synchroon is nodig als je het antwoord direct nodig hebt.

Weet je niet waar je moet beginnen?

Vertel ons met welke systemen je werkt en waar het vastloopt. Wij voeren samen datascan uit en laten zien waar voor jou data integratie het meeste op kan leveren.