Hoe Cube wereldwijd piekverkeer mogelijk maakt voor de Just Eat Takeaway Awards

Wanneer honderdduizenden mensen wereldwijd tegelijkertijd een website bezoeken of stemmen op hun favoriete restaurant tijdens de restaurant awards-competitie van Just Eat Takeaway, kan dat een enorme belasting vormen voor de servers. Voor de organisatie die wereldwijd opereert is het essentieel dat hun website zelfs tijdens deze piekmomenten soepel blijft draaien. Leer hoe ons Cube team ervoor heeft gezorgd dat de website altijd beschikbaar is tijdens piekverkeer.

Remi Buijvoets

RemiLead Developer

Kevin Oude Remmerink

KevinTech Lead | Team Pentagon

kevin_remi-4-1726478239.jpg

Twee soorten verkeer

De kern van onze aanpak begint met het onderscheiden van twee soorten verkeer: het opvragen van informatie (zoals het bekijken van de website) en het insturen van informatie (zoals het stemmen op een restaurant). Voor beide verkeersstromen hebben we aparte technieken toegepast, elk specifiek afgestemd op de vereisten van de taak.

Het opvragen van informatie: Cloudflare Pages
Cloudflare Pages is een krachtig platform voor het hosten van statische websites, waarmee informatie efficiënt kan worden opgeslagen en wereldwijd gedistribueerd. Wanneer een gebruiker de website voor de eerste keer bezoekt, wordt de inhoud door Cloudflare Pages vanuit het dichtstbijzijnde datacenter geleverd. Cloudflare slaat deze inhoud tijdelijk op in hun netwerk van wereldwijde datacenters (caching), waardoor bij volgende bezoeken de content direct vanuit de dichtstbijzijnde locatie kan worden geleverd. Dit vermindert de belasting op de oorspronkelijke server en maakt het mogelijk om grote aantallen gelijktijdige bezoekers te bedienen zonder server overbelasting.

In ons specifieke geval wordt de meest recente versie van de websites beheerd via een CMS en vervolgens opgeslagen bij Cloudflare Pages. Wanneer er een wijziging in de content wordt aangebracht, kan per land een nieuwe versie van de website worden gedeployed. Dit betekent dat de bijgewerkte versie via een API-koppeling naar Cloudflare Pages wordt verzonden en wereldwijd beschikbaar wordt gesteld. Hierdoor hebben gebruikers altijd toegang tot de meest actuele versie van de website, terwijl de belasting op de server minimaal blijft. De wereldwijde aanwezigheid van Cloudflare Pages zorgt bovendien voor een snelle en efficiënte afhandeling van verkeer, ongeacht de locatie van de gebruiker. Dit resulteert in consistente, hoge prestaties en beschikbaarheid van de website over de hele wereld.

Het insturen van informatie met behulp van de Message Queue

Het insturen van informatie, zoals het stemmen op een restaurant, vereist een andere benadering. Omdat deze informatie uniek is voor elke gebruiker en niet gecached kan worden, hebben we gekozen voor een systeem gebaseerd op een Message Queue. Dit systeem werkt als een buffer tussen de gebruiker en de verwerking van de stemmen. Wanneer iemand zijn stem uitbrengt, wordt deze stem als een bericht in de wachtrij geplaatst. Het unieke aan de Message Queue is de schaalbaarheid. Deze wachtrij kan honderdduizenden, zelfs miljoenen berichten tegelijk verwerken door ze op te slaan en op een gecontroleerd tempo af te handelen. Dit betekent dat zelfs bij een enorme piek in het aantal stemmen, de website blijft functioneren en elke stem uiteindelijk verwerkt wordt.

De Message Queue werkt door een geordende wachtrij van berichten te beheren. Elke stem wordt als een gestructureerd object in de wachtrij geplaatst, compleet met meta-informatie. Een achtergrondproces leest deze wachtrij en verwerkt de berichten in batches, afhankelijk van de beschikbare verwerkingscapaciteit. Dit systeem zorgt ervoor dat de verwerking van stemmen zeer flexibel is en aanpasbaar aan de hoeveelheid binnenkomende gegevens

Als er een piek in het aantal stemmen is, zoals bijvoorbeeld tijdens de laatste dagen van de competitie, worden de stemmen tijdelijk opgeslagen in de wachtrij. Deze wachtrij fungeert als een buffer, waardoor de website niet overbelast raakt en de server continu operationeel blijft. Het afhandelen van de wachtrij gebeurt op een gestage manier, waarbij de beschikbare middelen worden ingezet om de stemmen efficiënt te verwerken, zonder de algehele prestaties van de website te beïnvloeden.

Weergeven van dynamische informatie met ElasticSearch

Naast Cloudflare Pages en Message Queue maken we ook gebruik van ElasticSearch voor het dynamisch tonen van content, zoals de genomineerde restaurants. ElasticSearch stelt ons in staat om grote hoeveelheden data snel en efficiënt door te zoeken en te filteren, wat essentieel is voor een soepele gebruikerservaring. Dit betekent dat gebruikers snel en gemakkelijk de informatie kunnen vinden die ze zoeken, zelfs tijdens drukke periodes.

Om de prestaties van ElasticSearch te optimaliseren, zetten we meerdere ElasticSearch-instanties in en gebruiken we een load balancer. De load balancer verdeeld inkomende zoek verzoeken gelijkmatig over deze verschillende instanties. Hierdoor wordt de belasting gelijkmatig verdeeld, waardoor elke instantie niet overbelast raakt en de zoekresultaten snel blijven. Dit zorgt ervoor dat de website betrouwbaar blijft functioneren, zelfs bij een hoog aantal gelijktijdige zoekopdrachten.

Hosting infrastuctuur om honderdduizenden bezoekers de juiste ervaring te bieden

Om ervoor te zorgen dat CloudFlare en de infrastructuur altijd beschikbaar en bereikbaar is werken we in dit project samen met Shock Media. Een belangrijk aspect van onze samenwerking is het benchmarken en stresstesten van onze infrastructuur. We simuleren de verwachte belasting op de servers, waarbij we precies in kaart brengen hoe de servers zich gedragen onder verschillende omstandigheden. Dit stelt ons in staat om te anticiperen op mogelijke knelpunten en tijdig de benodigde aanpassingen door te voeren. Op basis van de resultaten van deze simulaties voeren we verschillende optimalisaties en tweakings door, zodat de infrastructuur optimaal presteert. Zodra deze testfase succesvol is afgerond en Cube het groene licht heeft gegeven, zijn we klaar voor de livegang.

Tijdens de livegang optimaliseren we voortdurend de prestaties. Zowel de Cloudflare-oplossing, maar ook andere belangrijke aspecten van onze infrastructuur, zoals de servers die de Message Queue en ElasticSearch beheren. We garanderen continue de beschikbaarheid van de website door het bieden van 24/7 monitoring en ondersteuning. Het beheer van Cloudflare zorgt ervoor dat de caching en beveiliging altijd op peil zijn. Daarnaast dragen we zorg voor de infrastructuur voor Message Queue en ElasticSearch, wat betekent dat we kunnen rekenen op een betrouwbare verwerking van stemmen en een snelle dataweergave.

Door het combineren van slimme wereldwijde caching via Cloudflare, schaalbare verwerking van stemmen met de Message Queue, en efficiënte dataweergave met ElasticSearch, heeft Cube een oplossing gecreëerd die Just Eat Takeaway de zekerheid biedt dat hun website zelfs tijdens de drukste momenten blijft functioneren. Met deze aanpak kunnen honderdduizenden gebruikers zonder problemen informatie opvragen en stemmen, terwijl de belasting op de servers tot een minimum wordt beperkt.