Lanceer nooit een site zonder loadtesten!

14 maart 2017

Zo, jouw website is klaar, het design is perfect, iedereen is superblij dus de site kan gelanceerd worden.

STOP!

Hoeveel bezoekers verwacht je? Dit is meestal afhankelijk van de inspanning die je daaraan koppelt om het nieuws in de wereld bekend te maken. Bij de iets grotere campagnes, zoals grote mailings of nieuws in de nationale media, moet je toch even opletten! Want heb je echt een idee wat er met je site gebeurt als je een mail stuurt naar 150000 mensen?

Daarom adviseren we je een beetje voor te bereiden, want een goede voorbereiding is het halve werk. Gelukkig is dit niet zo heel moeilijk.

Wat is load testing?

Bij een grote lancering met veel (media-)aandacht heb je meestal maar één kans. Als die lancering misloopt, kan dit enorme schade berokkenen aan je online reputatie!

Daarom zullen gaan we de belasting op voorhand simuleren!

Load testing is het simuleren van een aantal bezoekers op een bepaalde website. In zijn meest simpele vorm neem je een aantal mensen en je vraagt hen om een testversie van de website of het ticketsysteem te bezoeken terwijl jij kijkt wat dit geeft op de infrastructuur.

Nu is dit wel een specifieke uitdaging, want je vindt niet snel enkele duizenden bezoekers die bereid waren gedurende enkele uren rond te klikken in de testsite. Een oplossing is dan virtuele load testing: load testing via virtuele gebruikers.

Ik geef nu een stuk interne keuken prijs over hoe wij dit traject recent hebben aangepakt voor een grote lancering.

jMeter

image alt text

Een van de oudste en meest bekende technieken is jMeter. Met jMeter kan je schitterende dingen doen. Je kan scenario's opstellen zoals een gebruiker die door de website navigeert, enkele pagina's bezoekt en dan besluit een ticket te kopen en door het bestelproces te gaan.

Een dergelijk scenario kan je dan opslaan in een bestand en meerdere keren uitvoeren. Het resultaat is dan een mooi HTML-rapport dat er ongeveer zo uitziet:

http://jmeter.apache.org/usermanual/generating-dashboard.html

jMeter is dus een super-interessant hulpmiddel. Maar er is meer.

Blazemeter

image alt text

jMeter is heel goed, maar je moet het wel op je eigen systemen laten draaien. Zo kan je bijvoorbeeld makkelijk 100 of zelfs meer gelijktijdige gebruikers vanop je PC simuleren. Maar wij waren op zoek naar duizenden gelijktijdige gebruikers!

Blazemeter kan helpen. Hier kan je een jMeter-testscenario opladen en laten uitvoeren door 1000 gelijktijdige gebruikers. Of 3000 gebruikers. Of meer.

Bovendien verbleken de rapporten van jMeter bij die van Blazemeter, want die zijn ronduit schitterend en volledig interactief:

image alt text

Blazemeter lijkt de perfecte tool dus en liet ons toe heel mooie resultaten te boeken. Alleen:

image alt text

De prijs voor 3000 gelijktijdige gebruikers is behapbaar. Maar eigenlijk wilden we meer, dus hebben we contact met hen opgenomen met de vraag of we het aantal gebruikers dat we in gedachten hadden konden hebben. Helaas ging de prijs van het Enterprise exponentieel de hoogte in….

De Basic en Pro plannen worden immers van 1 virtuele server bij Amazon gestart, en pas vanaf de Enterprise plannen worden meerdere virtuele instanties gestart en gebruikt.

Loader.io

Als je een degelijke, maar extreem dure oplossing hebt, is de kans groot dat ergens ter wereld een goedkoper hipper alternatief ontstaat.

Na onderzoek bleek de wereld van de online load testers best uitgebreid.

Hier viel ons oog uiteindelijk op loader.io. Met zo'n domeinextensie kan het niet anders dan een hip en cool alternatief voor Blazemeter zijn :)

https://loader.io/ - Simple cloud-based load testing. Yeah!

Wat je vaak hebt bij die dingen is dat de functionaliteit erg beperkt is, of soms onbruikbaar. Of dat de mensen erachter hopeloos ongestructureerd zijn en de tool vol met bugs zit. Maar dat viel hier best wel mee: achter loader.io zit Sendgrid, en dat is nu toch wel geen klein bedrijfje.

Loader.io bleek voor ons de ideale tool. Je kan geen jMeter scenario's opladen, maar je moet manueel je scenario gaan configureren in hun systeem. Maar aan de andere kant heb je wel de beschikking tot 100000 gelijktijdige gebruikers en kan je ook a la carte extra's bij bestellen.

Je hebt bovendien zelf de keuze over hoe je die gebruikers gaat inzetten. Bijvoorbeeld 100.000 bezoekers die je test 1 keer uitvoeren. Of 4.000 bezoekers die je test continu uitvoeren. Of 10.000 die je test elke seconde starten. Bedenk het maar.

Hier een voorbeeld van 4000 bezoekers die constant de test uitvoeren:

image alt text

In deze grafiek zie je de gemiddelde tijd die het volledige testscenario in beslag nam voor elke geteste gebruiker.

Wat doe je daar dan mee?

Wel dat is eenvoudig. Je doet een test en analyseert de resultaten. Kunnen we de servers nog optimaliseren? Dan doen we dat en we lopen de test opnieuw.

Kan de webbouwer de code nog verbeteren? En we doen de test opnieuw. En opnieuw. En opnieuw.

Totdat we ervan overtuigd waren dat de infrastructuur die klaar staat de pieken gaat opvangen.

Resultaat

Het resultaat van load testing is zekerheid. Geen absolute zekerheid, want het blijft een test. Echter, als wij load testing doen met een ruime veiligheidsmarge, dan zien wij telkens weer opnieuw een succesverhaal. Jij wil toch ook succes bij je lancering?

Geschreven door Peter Fastré

op 14 maart 2017

Een opmerking of vraag?

Stuur ons een bericht en we koppelen zo snel mogelijk terug.