Asynchrone verwerking betekent dat je een taak op de achtergrond laat draaien zodat de rest van het systeem door kan werken in plaats van te wachten tot hij klaar is. Het verzoek komt binnen, het trage werk gaat in een wachtrij, en de gebruiker of het programma krijgt een resultaat of een melding zodra het echt af is.

Stel je voor dat je koffie bestelt in een druk café. In een synchrone opzet neemt de barista je bestelling op en maakt die af voordat hij iemand anders helpt, dus de rij staat stil. Asynchroon is het echte café: je bestelt, gaat opzij en ze roepen je naam zodra het klaar is, terwijl de rij gewoon doorloopt. Dat ‘opzijgaan’ wordt vaak geregeld door een message queue die taken vasthoudt tot een worker ze oppakt. De afweging tegenover alles op een rij doen lees je bij synchroon vs asynchroon.

Het nadeel is dat je geen direct antwoord meer krijgt, dus het systeem moet je laten weten wanneer het werk klaar is, vaak via een webhook of een statusupdate. Dat extra ontwerp is de moeite waard voor elke taak die traag is of mis kan gaan.

Het brengt wel echte complexiteit mee. Een taak kan twee keer lopen als een worker crasht en het opnieuw probeert, en resultaten kunnen in een andere volgorde binnenkomen, dus de code die ze verwerkt moet daar tegen kunnen. Als het werk in grote geplande brokken komt in plaats van een gestage stroom, is batchverwerking vaak het betere gereedschap. Async blinkt uit bij de gestage, onvoorspelbare stroom.

Bij TopDevs schuiven we traag of pieklopend werk naar asynchrone verwerking, zodat de app van een klant snel en vlot blijft, ook als er zware taken op de achtergrond lopen.