Webhooks of batchverwerking: wanneer content direct en wanneer gebundeld doorstroomt

Leer in je dagelijkse redactiewerk wanneer wijzigingen direct via een webhook worden doorgevoerd en wanneer geplande uitrol betrouwbaarder is.

Het verschil zit vooral in het moment

Een redactie publiceert om 10.14 uur gewijzigde gegevens van een adviespunt. De website moet het nieuwe telefoonnummer direct tonen, een zoekmachine binnen het eigen portaal moet zijn index vernieuwen en een begrijpelijke taalversie moet later vakinhoudelijk worden gecontroleerd. Deze gevolgen horen bij dezelfde wijziging, maar hoeven niet allemaal op hetzelfde moment te worden verwerkt.

Een webhook is een bericht dat het ene systeem direct na een gebeurtenis naar een ander systeem stuurt. Het redactiesysteem meldt bijvoorbeeld: ‘Deze pagina is gepubliceerd.’ Het ontvangende systeem kan vervolgens precies deze content ophalen en verwerken. Het wacht niet tot de volgende algemene run en vraagt ook niet voortdurend naar nieuwe wijzigingen.

Bij batchverwerking worden meerdere taken verzameld en samen uitgevoerd. Zo kunnen iedere avond alle pagina's die die dag zijn gewijzigd voor een rapport worden gecontroleerd. Zo'n run vindt niet direct plaats, maar is wel goed te plannen. Hij kan grote hoeveelheden na elkaar verwerken en het resultaat als één samenhangend overzicht aanbieden. De verwerking heeft daarbij een bekend begin en een herkenbaar einde.

Webhooks passen bij afzonderlijke belangrijke gebeurtenissen

Webhooks zijn zinvol als een snelle reactie een duidelijk voordeel heeft. Na publicatie van een waarschuwing moet de app dezelfde actuele content ontvangen. Nadat een pagina is ingetrokken, moet die uit de interne zoekresultaten verdwijnen. Het bericht ontstaat telkens door een concrete handeling en betreft duidelijk aanwijsbare content.

Voor de redactie voelt dit proces direct. Zij geeft een artikel vrij en ziet korte tijd later de nieuwe versie in het aangesloten kanaal. Deze snelheid mag echter niet worden verward met gegarandeerde gelijktijdigheid. Netwerkstoringen, onderhoud of een overbelast ontvangend systeem kunnen de verwerking vertragen. Het systeem moet tegen zulke onderbrekingen bestand zijn.

Niet iedere opgeslagen wijziging hoeft een webhook te activeren. Een automatisch opgeslagen concept is nog niet relevant voor de openbare zoekfunctie. Zinvolle gebeurtenissen sluiten aan op de zichtbare betekenis: gepubliceerd, ingrijpend bijgewerkt, ingetrokken of verwijderd. Daardoor ontvangen aangesloten systemen minder berichten en kunnen ze belangrijke statuswijzigingen eenduidiger verwerken. Interne correcties van typefouten kunnen waar nodig anders worden behandeld dan nieuwe feiten.

Batchverwerking past bij grote hoeveelheden en vaste momenten

Een grotere run is geschikt als veel content volgens dezelfde regels wordt verwerkt. Een organisatie wil misschien iedere nacht alle gepubliceerde pagina's controleren op een ontbrekende controledatum. Of het resultaat om 02.00 of 02.20 uur beschikbaar is, maakt voor lezers weinig verschil. Een direct bericht na iedere kleine bewerking zou daarvoor onnodig omslachtig zijn.

Ook een volledige herbouw kan bewust gebundeld plaatsvinden. Na een wijziging aan het zoeksysteem moeten mogelijk 80.000 pagina's opnieuw worden ingelezen. Afzonderlijke webhooks zouden het totale bestand niet betrouwbaar beschrijven, omdat ook ongewijzigde content wordt geraakt. Een batchrun begint met een bekende hoeveelheid en legt vast welke pagina's met succes zijn verwerkt.

Een vast moment maakt het makkelijker om de belasting te plannen. Beeldbeschrijvingen, vertaalconcepten of uitgebreide kwaliteitscontroles vragen rekenkracht en externe diensten. Een nachtelijke run kan dit werk begrenzen zonder de publicatie in het redactiesysteem te vertragen. Daardoor wordt de looptijd beter voorspelbaar voor beheerders en dienstverleners. Dringende content heeft toch een snellere route nodig als lang wachten tot onjuiste informatie zou leiden.

De toegestane vertraging geeft de doorslag

De belangrijkste vraag is: hoelang mag het aangesloten systeem een oude versie tonen? Bij een waarschuwing voor noodweer kunnen minuten doorslaggevend zijn. Bij een maandelijkse analyse van tekstkwaliteit is een dag meestal geen probleem. Een duidelijke tijdsaanduiding helpt meer dan de algemene eis dat iedere verwerking zo snel mogelijk moet plaatsvinden.

Daarna telt de omvang van een typische wijziging. Als meestal één pagina wordt gepubliceerd, kan een webhook precies die pagina benoemen. Als regelmatig hele contentverzamelingen veranderen, is een geplande run overzichtelijker. Een import van 4.000 nieuwe locaties mag niet ongecontroleerd 4.000 gelijktijdige vervolgprocessen activeren.

Ook de gevolgen van een storing horen bij de beslissing. Als een bericht verloren gaat, blijft misschien een verouderd telefoonnummer in de app staan. Als een nachtelijk rapport mislukt, kan de redactie het 's ochtends opnieuw starten. De aanvaardbare vertraging moet voor ieder aangesloten kanaal uitdrukkelijk zijn afgesproken. Hoe groter de directe schade, hoe belangrijker snelle nieuwe pogingen, zichtbare waarschuwingen en een aanvullende vergelijking van de volledige contentverzameling zijn.

Een webhookbericht blijft klein en eenduidig

Een goed bericht vermeldt wat er is gebeurd, op welke content het betrekking heeft en wanneer de gebeurtenis is ontstaan. Daar komen een uniek gebeurtenisnummer en de versie van het berichtformaat bij. Het ontvangende systeem kan de volledige actuele gegevens daarna via een beveiligde interface ophalen. Zo blijft het bericht overzichtelijk en bevat het niet onnodig het volledige artikel.

Deze aanpak voorkomt bovendien dat een vertraagd bericht een oude tekst verspreidt. Stel dat een redactie hetzelfde telefoonnummer kort na elkaar twee keer corrigeert. Door een storing komt het eerste bericht later aan dan het tweede. Als het ontvangende systeem de actuele versie ophaalt, krijgt het toch de laatst vrijgegeven versie en niet de inhoud van het vertraagde bericht.

Persoonsgegevens en vertrouwelijke content horen niet zonder noodzaak in het bericht. Logboeken, foutrapporten en beheeromgevingen bewaren webhookgegevens vaak langere tijd. Een content-ID en het type gebeurtenis zijn in veel gevallen voldoende. Het bevoegde ontvangende systeem haalt aanvullende gegevens pas op als het die echt moet verwerken. Zo blijft ook een technisch foutrapport vrij van onnodige vakinhoudelijke gegevens.

Herhaalde berichten zijn normaal

Als de ontvangende partij niet bevestigt dat een bericht is aangekomen, verstuurt het bronsysteem het opnieuw. Misschien is het eerste bericht al verwerkt, maar ging de bevestiging verloren. Daarom moet het ontvangende systeem dezelfde gebeurtenis meermaals kunnen aannemen zonder een artikel dubbel te publiceren of dezelfde vertaling twee keer te bestellen.

Het unieke gebeurtenisnummer helpt daarbij. Als dit nummer al met succes is verwerkt, kan het systeem de herhaling bevestigen en overslaan. Dat is betrouwbaarder dan tijdstippen of titels vergelijken. Twee verschillende wijzigingen kunnen bijna gelijktijdig plaatsvinden en een titel kan veranderen terwijl het nog steeds om dezelfde content gaat.

Ook de volgorde staat niet altijd vast. Een melding over de publicatie kan binnenkomen na de melding over een latere correctie. Versienummers of het actueel ophalen van de content voorkomen dat de oudere status wint. Voor redactieteams betekent dit: de zichtbare versie moet kloppen, ook als technische berichten een onrustige route afleggen. Alleen de ontvangstdatum mag daarom niet bepalen welke versie geldig is.

De ontvanger moet de herkomst controleren

Een openbaar bereikbaar webhookadres kan in principe ook door onbevoegden worden benaderd. Het ontvangende systeem mag een bericht daarom niet alleen vertrouwen omdat het op het verwachte pad binnenkomt. Gebruikelijk is een digitale handtekening die wordt berekend op basis van de inhoud en een gedeelde geheime sleutel. De ontvanger berekent de handtekening opnieuw en vergelijkt beide waarden.

De overdracht verloopt via HTTPS, zodat de inhoud en toegangsgegevens onderweg beschermd zijn. De geheime sleutel hoort niet thuis in de broncode, in openbare documentatie of in de berichttekst. Hij wordt beveiligd opgeslagen, alleen toegankelijk gemaakt voor de diensten die hem nodig hebben en regelmatig vernieuwd. Oude sleutels moeten na een gecontroleerde overgang ongeldig worden.

Een tijdstempel beperkt daarnaast hoelang een correct ondertekend bericht wordt geaccepteerd. Zo kan een vastgelegde oproep niet veel later opnieuw worden uitgevoerd. Foutmeldingen mogen aanvallers geen interne details prijsgeven. Voor het eigen team blijven toch voldoende gegevens beschikbaar om een afgewezen handtekening of een verouderd berichtformaat gericht te onderzoeken. Opvallende toegangspogingen worden beperkt en controleerbaar vastgelegd voor beveiligingsonderzoek. Daarvoor gelden passende en duidelijk gedocumenteerde bewaartermijnen.

Een grote run heeft een traceerbare status nodig

Bij 20.000 pagina's slaagt een batchrun zelden volledig of mislukt hij helemaal. Sommige content kan ongeldige gegevens bevatten, terwijl de rest correct wordt verwerkt. De run moet daarom per item vastleggen wat is gelukt en wat opnieuw moet worden geprobeerd. Eén foutieve pagina mag niet alle volgende pagina's blokkeren.

Er moet rekening worden gehouden met limieten van externe diensten. Een interface staat bijvoorbeeld maar een bepaald aantal verzoeken per minuut toe. De run verdeelt de hoeveelheid dan in hanteerbare delen en gaat na een pauze verder. Hij bewaart zijn voortgang, zodat een herstart niet opnieuw bij de eerste pagina begint en al betaald werk onnodig wordt herhaald.

Voor de redactie is een begrijpelijk resultaat belangrijker dan een lang technisch logbestand. Zij moet kunnen zien om welke run het gaat, hoeveel content klaar is en welke pagina's vakinhoudelijke hulp nodig hebben. Een melding als ‘37 fouten’ is niet voldoende. De koppeling met paginatitel, adres en concrete reden maakt van de fout een uitvoerbare taak. Geslaagde nieuwe pogingen verdwijnen daarna uit het openstaande redactionele overzicht.

Vaak vormen webhooks en een geplande run samen de beste oplossing

Webhooks en batchverwerking sluiten elkaar niet uit. Een nieuwsportaal kan nieuwe artikelen direct bij de eigen zoekfunctie melden en 's nachts de volledige contentverzameling vergelijken. De snelle route houdt belangrijke wijzigingen actueel. De geplande run vindt gebeurtenissen die ontbreken door een storing, een verkeerde instelling of een tijdelijk uitgeschakeld ontvangend systeem.

Een begrijpelijke taalversie kan beide momenten eveneens nodig hebben. Als een vakpagina verandert, maakt de webhook direct een taak voor de verantwoordelijke redactie. De gecontroleerde versie wordt niet automatisch vervangen. Een dagelijks rapport toont daarnaast alle openstaande taken, hun deadlines en content waarbij de koppeling met de bronpagina ontbreekt.

Doorslaggevend is één duidelijke bron voor de geldige status. Een webhook meldt een verandering, de periodieke vergelijking bevestigt de actuele contentverzameling. Als beide verschillende gegevens leveren, mag niet toevallig het laatst uitgevoerde proces winnen. Het publicerende systeem blijft leidend en de aangesloten systemen brengen hun status daarmee in overeenstemming. Deze regel moet ook na een systeemwijziging eenduidig gedocumenteerd blijven.

Het beheer moet begrijpelijk blijven voor mensen

Technische betrouwbaarheid blijkt uit de zichtbare informatie. Teams moeten weten hoelang een overdracht normaal duurt en vanaf welk moment een vertraging wordt gemeld. Een waarschuwing benoemt het betrokken kanaal en de betrokken content, niet alleen een interne procesnaam. Zo kan de redactie beoordelen of bezoekers op dat moment een verouderde versie zien.

Voor ieder proces is een verantwoordelijke partij nodig. Die kan een vastgelopen bericht opnieuw versturen, een batchrun voortzetten of een onjuiste publicatie stoppen. Tegelijkertijd moet duidelijk zijn wanneer vakinhoudelijke verantwoordelijkheid nodig is. Een technisch team kan een bestand overdragen, maar niet beslissen of een gewijzigde voorwaarde voor een aanspraak inhoudelijk juist is uitgelegd.

De passende oplossing volgt dus uit de content, de tijd en de mogelijke schade. Webhooks reageren snel op afzonderlijke gebeurtenissen. Batchruns verwerken planbare hoeveelheden en vergelijken contentverzamelingen. Samen dekken ze actuele wijzigingen en de volledigheid van de contentverzameling af. Als herhalingen, beveiliging en begrijpelijke meldingen vanaf het begin worden meegenomen, blijven aangesloten websites en diensten actueel zonder het dagelijkse redactiewerk met onnodige techniek te belasten.

Gezaghebbende bronnen

  1. RFC 9110 - HTTP-semantiek
  2. RFC 2104 - HMAC: hashing met een sleutel voor berichtauthenticatie
  3. Cloud Native Computing Foundation - CloudEvents
  4. OWASP Cheat Sheet Series - beheer van geheime gegevens

Begin gratis met het gebruik van Simple8.

Maak uw gratis account aan en gebruik elke maand gratis maximaal 15.000 tekens.