1. Maak van performance het hele jaar door een prioriteit
Hoe verleidelijk het ook is, ga niet pas na een brand blussen. In dit geval: nadat je webapp of webshop trager is geworden tijdens een piekmoment, of in het ergste geval niet meer bereikbaar is geworden. Een gedegen voorbereiding is meer dan het halve werk: maak van performance en snelheid het hele jaar door een prioriteit.
Performance continu meenemen betekent bijvoorbeeld:
- afbeeldingen altijd geoptimaliseerd voor web uploaden;
- je web vitals in de gaten te houden en acties ondernemen;
- weten of je laatste code change een positieve of negatieve performance impact heeft (en actie ondernemen als dat een negatieve impact heeft).
2. Weet op welke momenten je piekverkeer kunt verwachten
Zodra je je webshop of webapp een geruime tijd up-and-running is, heb je voldoende data om bestaande piekmomenten te analyseren. Wat betekent een piekmoment voor jouw platform? Om hoeveel extra bezoekers en requests gaat het dan ten opzichte van dag-, week- of maandgemiddelden? En op welke momenten ervaar jij of ervaren je bezoekers een tragere shop of app? Met deze cijfers en inzichten creëer je een beter beeld van het piekverkeer dat je kunt verwachten.
Piekverkeer tijdens de koudste ochtenden in de winter
Piekdrukte voor je applicatie overdag en in de vakantiemaanden? Niet voor BG-Engineering. De applicaties van deze organisatie kennen juist piekdrukte in de nacht, de ochtendschemer en midden in de winter. Niet zo vreemd: de applicaties helpen wegbeheerders om gladheid op de weg te bestrijden.
“Voor BG-Engineering is het belangrijk dat we in de herfst klaar staan om te schalen. We zetten twee extra servers in en extra monitoring. Mocht er nog meer nodig zijn, dan staan extra resources zo klaar. In de lente schalen we de omgeving weer af. Op die manier voorkomen we overladen servers in de winter. Ook besparen we kosten én energiegebruik in de zomer”, zegt Jeffrey van Excel, Windows Engineer bij True.
Patrick Bachofner, technisch directeur en eigenaar van BG-Engineering vult aan: “Deze manier van managed hosting draagt bij aan onze kracht en slagvaardigheid. Gladheid laat zich namelijk niet zo goed plannen. Is er gladheid, dan willen we onze applicaties en hosting direct naar de hoogste snelheid hebben. Er komen dan meer dan 900 strooiwagens online, er gaan terabytes aan data per seconden erdoorheen. Al die data moet verstuurd en verwerkt worden. True ondersteunt ons daarin en houdt het onder controle.”
3. Spreid piekmomenten uit waar mogelijk
Heb je de mogelijkheid om een piekmoment uit te spreiden? Bijvoorbeeld door niet alle nieuwe gebruikers op precies dezelfde dag en precies dezelfde tijd een mail met hun inloggevens te sturen? Spreiden ervan zorgt voor een langere periode van meer verkeer en minder kans op piekverkeer. Zelfs als het gaat om een campagne die op één dag start, helpt het al om een e-mailing te verspreiden over 5 of 20 minuten waar mogelijk.
4. Weet waar de load op resources vandaan komt
Met de analysevan bestaand piekverkeer kun je vervolgens kijken waar de load op resources vandaan komt. Vraagt je shop of app bijvoorbeeld veel data in veel requests van je database op? Optimaliseer daar je database requests en database voor (zie ook check 7).
Wees er wel van bewust dat de load op resources niet één-op-één stijgt als het aantal bezoekers of gebruikers stijgt. 4 keer meer resources inzetten betekent niet automatisch dat je webshop of webapp dan ook 4 keer meer bezoekers aan kan. Een applicatie (of query-tijden) kan zich anders gedragen bij grotere hoeveelheden bezoekers.
5. Plan performance testen in
Met performance testen meet en evalueer je hoe je webshop of webapp werkt onder hoge druk. Specifiek zijn er load testen (hoeveel gebruikers kan je platform aan) en stress testen (wat is het maximale dat je platform aan kan). Dit soort type testen staan er niet om bekend dat ze snel uitvoerbaar en goedkoop zijn. Ze leveren echter wel een schat aan informatie en analyse op of een (grote) wijziging in je code positief of negatief voor je performance is. Een eerste performance test kan als standaard dienen, waarna je idealiter bij elke (grote) change opnieuw een test uitvoert.
Performance onder de loep nemen en knelpunten aanpassen
Voor de app van Join Program is het opvangen van piekverkeer extreem belangrijk. Join Program is een programma en app voor bedrijfscatering. Medewerkers kunnen er hun gezonde lunch of diner bestellen. De app heeft elke dag met piekverkeer te maken tussen 10 en 13 uur. Na 20 uur neemt het verkeer flink af. “Over het algemeen zal de app een relatief klein aantal gebruikers hebben, maar op piekmomenten zijn dit duizenden gelijktijdig. Daarom hebben we een opzet gekozen die de grootst mogelijke flexibiliteit geeft en waarmee proactief opschalen een kwestie van seconden is,” zegt Guido Laout, Head of Customer Success bij True.
“Door gebruik van software voor monitoring en grafische weergave van monitoringsdata, proberen we piekverkeer voor te zijn”, geeft Yoeri Moens, medior software engineer bij digital agency Endeavour mee. Endeavour is ontwikkelaar van de app voor Join Program. “Wat is de server responsetijd in zowel de productie- als acceptatie-omgeving, zit daar een verschil in en op welk moment wordt het drukker? Op die manier hebben we beter beeld van en inzicht in knelpunten, om juist daar te optimaliseren.”
Mark Snel, Head of Product bij Vermaat Groep, het bedrijf achter Join Program: “Door performance flink onder de loep te nemen, knelpunten te identificeren en aan te passen, is de app sneller en de laadtijd korter. Het is voor ons belangrijk dat zo te houden als het aantal gebruikers flink omhooggaat.”
6. Gebruik (front-end) caching
Elke nieuwe request naar de webserver, en dan met name naar je database, levert belasting voor de webserver op. Front-end caching van pagina’s, waarbij pagina’s tijdelijk statisch worden, helpt deze belasting te verlagen. Gebruik bijvoorbeeld een caching module van je coding framework of een caching plugin in je CMS. Weet dat verschillende typen cache ook verschillende aanroeptijden kenen: disk cache is over het algemeen trager dan het vluchtigere en snellere ram cache.
De volgende stap in caching is het inzetten van caching software op je server, back-end caching. Dat kan in de vorm van Varnish Cache, Redis Cache of Elastic search. Door caching in de front- en back-end toe te voegen, kun je de belasting van je webshop of webapp op de server verder verlagen.
7. Optimaliseer je database
Een database die optimaal presteert, krijgt niet te veel requests van je webshop of webapp. En als er requests zijn, dan precies voor die informatie die nodig is.
Ook kan de gebruikte logica voor de database zorgen voor onnodige load op de database. Bijvoorbeeld als je code een alter table request uitvoert, is de database op dat moment gelockt. Een kleine lock per keer, van een paar tienden milliseconden, is geen ramp voor de performance. Gebeurt dat echter bij elke gebruiker en heb je het over duizenden gebruikers tegelijk, dan kan dat de performance nekken. Optimaliseer en tune je database voor het piekverkeer.
8. Verwerk fault tolerance of fail-overs in je code
Wat gebeurt er als een specifieke (micro-)service uitvalt door piekverkeer? Doet de rest van je webapp of webshop het dan nog wel?
Verwerk fault tolerance in je code: dit complexere design ondervangt elke uitval van een component. Als een service onverwachts uitvalt, welke andere service kan dat dan opvangen? Of als alle servers uitvallen, heb je dan redundantie door middel van servers in een ander datacentrum?
Je platform erop voorbereiden dat iets kan breken
“Monitoring draagt bij aan bouwen met het idee dat een component kapot kan gaan, ookwel fault tolerance”, zegt Frank Assink, Projectmanager Business Development bij CCV Shop, een totaalpakket voor webwinkel-eigenaren. Bouwen met het idee dat iets kapot kan gaan? “Ja, het kan altijd misgaan. Een server die onverwacht uitvalt, een externe koppeling die niet meer werkt door welke oorzaak dan ook, een component binnen het platform dat breekt. Voor ons is belangrijk hoe we ermee omgaan en hoe we ons platform erop voorbereiden.”
Webinar True x CCV Shop over legacy code en fault tolerance
Meer weten hoe CCV Shop omgaat met fault tolerance? Bekijk het on-demand webinar van True x CCV Shop, waarbij we ingingen op legacy code, fault tolerance en monitoring.
9. Zorg dat gebruikte software up-to-date is
Alle software en framework-versies raken op een moment verouderd. Nieuwere versies leveren je niet alleen nieuwe features op die je kunt gebruiken, ook zijn ze vaak efficiënter. Daardoor wordt de performance beter en de toepassing sneller. Als voorbeeld: MySQL 8.0 (de huidige versie in 2022, released in 2018) is flink sneller dan MySQL 5.7 (release 2015). Zorg dat je gebruikte software up-to-date is en dat ook je servers over een update van het OS beschikken.
Een Truely Good Launch van je campagne
Wat mag je van engineers verwachten om in te spelen op verwacht piekverkeer of campagnes die je aangeeft?
Het belangrijkste: zorg dat we op de hoogte zijn van de (grote) campagne die je gaat draaien of het piekverkeer dat je verwacht door het aansluiten van veel nieuwe gebruikers.
- We kunnen je dan helpen met caching aan server zijde, zoals het inzetten van Varnish of Redis. Wij installeren het voor je, waarna je zelf aan de slag kunt gaan met in gebruik nemen;
- We checken je bestaande resources en servers om te kijken welke tweaking en tuning we kunnen inzetten, zoals serverlimieten of RAM geheugen, met waar nodig uitbreiding van resources;
- We ondersteunen bij load testing;
- En we helpen bij advies voor en een analyse van je huidige omgeving.
Toets je plannen met True engineers om een Truely Good Launch van je campagne of piekmoment te maken!
Sterker voorbereid zijn op piekverkeer?
True engineers sparren graag met je; de koffie staat voor je klaar! ☕️