Naar de inhoud
cases / performance op schaal

Performance op schaal: als elk detail een bottleneck wordt

Honderdduizenden bezoekers per maand en actieweken die daar ver bovenuit piekten. Over gelaagde caching, Redis-lessen en de monitoring die elke trage query zichtbaar maakte. Uit de jaren dat onze architect hoofdontwikkelaar was bij een internationale lingerie-retailer.

PerformancePiekbelastingCachingMonitoring
Schematische weergave van piekverkeer en de gelaagde serveropstelling die het opvangt

01 · De context

Honderdduizenden bezoekers, en dan komt de actieweek

Dit is de tweede case uit de jaren dat Jasper, nu e-commerce architect bij Dexor, als hoofdontwikkelaar werkte voor een internationale lingerie-retailer. Een webshop met honderdduizenden bezoekers per maand, en een verkoopkalender vol actieperiodes waarin het verkeer daar nog eens ver bovenuit piekte.

Op die schaal verandert het vak. Een detail dat op een gemiddelde shop niemand opvalt, een query die net iets te veel doet, een cache die net verkeerd staat, wordt bij dit volume binnen een uur een bottleneck die de hele shop raakt.

02 · De opstelling

Lagen die elkaar uit de wind houden

De basis was een gelaagde opstelling. Vooraan een geoptimaliseerde Varnish-server die het leeuwendeel van de paginaweergaves uit de cache serveerde, daarachter meerdere backend-servers voor alles wat wél gerekend moest worden, met Redis als cache-engine en een MySQL- en OPcache-configuratie die op het transactievolume was afgestemd.

Voor de allerhoogste pieken van het jaar is die voorste laag opgeschaald naar twee Varnish-servers. De filosofie erachter is simpel: elke laag vangt zoveel mogelijk af, zodat de laag erachter alleen het werk krijgt dat echt nergens anders kan.

03 · Onontgonnen terrein

Problemen die nog nergens beschreven stonden

Wie op deze schaal draait, loopt tegen situaties aan waar geen handleiding voor bestaat. Een voorbeeld: een periode draaide er per backend-server een eigen Redis-instance, lekker snel omdat alles lokaal bleef. Tot bleek dat de caches van de servers uit elkaar gingen lopen en er dus synchronisatie tussen moest komen. De les: consistentie wint het van lokale snelheid.

Zo waren er meer. Veel van het werk was uitzoekwerk: meten, hypotheses testen, en oplossingen bouwen voor problemen die verder nog bijna niemand was tegengekomen, of in elk geval nergens had opgeschreven.

04 · Het meten

Elke trage query wordt zichtbaar, en dus vindbaar

Er draaide continu APM-monitoring met New Relic op de shop. Op een rustige webshop blijft een trage query onzichtbaar; er is simpelweg te weinig verkeer om hem te laten opvallen. Op deze schaal werkt het andersom: elk verlies, hoe klein ook, telt zich op tot iets meetbaars.

Dat maakte de monitoring tot een permanente bron van werk. Trage queries en dure codepaden kwamen vanzelf bovendrijven en werden één voor één opgelost. Geen groot performanceproject met een einddatum, maar een continue stroom van kleine, meetbare verbeteringen.

Het resultaat

  • De zwaarste actiepieken werden opgevangen door een cache-opstelling die meegroeide met het verkeer.
  • Trage queries en dure codepaden kwamen door continue monitoring vanzelf bovendrijven en werden structureel opgelost.
  • De optimalisatie werd een vast ritme in plaats van een eenmalig project.
  • De lessen van toen zitten vandaag in hoe we shops onder beheer monitoren en tunen.

Benieuwd wat dit voor jouw shop kan betekenen?

Plan een kennismaking

Voor de developers

  • Gelaagde opstelling: Varnish als full page cache vooraan (opgeschaald naar twee servers voor de hoogste pieken), meerdere backend-servers erachter, Redis als cache-engine.
  • Redis-topologie in de praktijk: een periode met een instance per backend-server bracht synchronisatieproblemen tussen de caches; consistentie won het uiteindelijk van lokale snelheid.
  • MySQL- en OPcache-tuning afgestemd op het werkelijke transactievolume in plaats van op vuistregels.
  • Continue APM-monitoring met New Relic: trage queries en dure codepaden per transactie zichtbaar, als vaste bron voor de optimalisatie-agenda.

05 · Wat dit betekent voor jouw shop

Schaalproblemen zijn te leren, het liefst bij een ander

De meeste webshops krijgen deze schaal nooit, en dat is prima. Maar de manier van kijken is overal bruikbaar: meet waar de tijd echt heen gaat, laat elke laag afvangen wat hij kan, en behandel performance als ritme in plaats van als project. Wie dat doet, hoeft bij groei niet te schrikken.

Is je shop nu al traag, kijk dan op de pagina over trage Magento-webshops. De eerdere case van deze retailer, over inzoomen tot op de draad, laat de andere kant van hetzelfde vak zien.

Weet jij waar jouw shop zijn tijd aan kwijt is?

Plan een kennismaking en we kijken vrijblijvend onder de motorkap.

Plan een kennismaking