Load en Stress tests

K6

Load en stress test applicatie

Een nieuwe opgezette infrastructuur in de cloud moet natuurlijk getest worden voordat die in productie gaat.

Hoeveel bezoekers kan de infrastructuur tegelijkertijd aan? Hoe snel kan er automatisch opgeschaald worden? Hoe gedraagt het systeem zich onder overbelasting?


Test types

  • Smoke tests test minimale load en is bedoeld om het effect van veranderingen in de infrastructuur of daarop draaiende applicaties te monitoren. Hiermee wordt bijvoorbeeld gedetecteerd of een nieuwe applicatie uitrol geen negatieve performance tot gevolg heeft.
  • Met een load test wordt gebruikelijke en piek belasting gemeten zoals deze verwacht wordt. Hiermee wordt bekeken of de applicatie aan de standaarden voldoet voor 'real life' situaties.
  • Een stress test voert de druk op een systeem op tot het breekpunt. Hiermee is te bepalen wat het kritieke punt is voor het systeem, hoe deze zich gedraagt in die situatie, en hoe snel het zich herstelt.
  • Een soak test is een langdurige test op een systeem met een acceptabele load (bv 80% van de max load), om de betrouwbaarheid te meten. Bijvoorbeeld of de harde schijven niet vollopen, er geen 'cloud credits' opraken, of externe services er niet mee ophouden na een bepaald aantal requests.

K6

Om een nieuwe infrastructuur op AWS te testen, wilde ik een test in Golang schrijven. Tijdens wat research, kwam ik K6 tegen. Deze is beschikbaar als open source en geschreven in Golang (mijn favoriete programmeertaal).

Eigenlijk wilde ik mijn eigen test schrijven in Go maar ik zag meteen dat deze applicatie aan enkele belangrijke vereisten voldoet:

  • Eenvoudig te scripten en configureren via ECMA (nodejs/javascript)
  • Schema's om de verschillende test types te laten lopen zijn makkelijk in te stellen met dit script
  • Er kunnen scenarios geprogrammeerd worden om typisch gebruik van echte gebruikers te simuleren.
  • Individuele requests kunnen gedetailleerd en volledig gespecificeerd worden, en de resultaten van een request kunnen gebruikt worden in een volgende request.
  • Een volledige test kan in een simpel bestand opgeslagen worden zodat deze makkelijk op een ander moment nog eens uitgevoerd kan worden.


K6 Cloud

Na de community (open source) variant van K6 bekeken en getest te hebben, heb ik een Cloud account afgesloten.

K6 Cloud biedt fantastiche mogelijkheden, vooral op het gebied van rapportage, grafieken en vergelijking.

Wat echt een voordeel is, is dat de tests geconfigureerd in de cloud gewoon in de community variant (lokaal) kunnen draaien door het script te configureren.

Zo kan de configuratie eerst getest worden en waar nodig aangepast worden zonder een volledige test te draaien.

Voor professioneel gebruik, hanteer ik nu de volgende werkwijze:

  • implementeer een test/simulatie lokaal met de community variant
  • bekijk de globale testresultaten om een indruk te krijgen van het te testen systeem
  • pas de test aan indien nodig
  • voer de test in in de cloud variant
  • test de cloud variant eerst lokaal
  • laat de cloud varianten voor productie tests draaien met uitgebreide rapportage en eventueel ingepland volgens een schema

Dank, k6 en Golang!



Datum: Maart, 2021

K6

K6 load and stress test


K6 is een zeer goede load testing tool.

K6 website

Golang

Golang is een moderne programmeertaal die uitblinkt in multitasking. Veel netwerk applicaties zijn geschreven in Golang, bijvoorbeeld Docker en Kubernetes.

Golang is ontwikkeld door Google om beter aan te sluiten op moderne vereisten dan klassiekere talen.

Zie ook:

Vaardigheden

  • Golang
  • K6
  • Jetbrains GoLand IDE
AWS Certified Devops Engineer

Ik volg momenteel de AWS Certified DevOps Engineer-cursus om mijn kennis te vergroten op het gebied van het automatiseren van infrastructuur en CI/DI.

AWS migratie

Update voor het lopende AWS migratie project.

Gobot RPI simulator

GPIO pin simulator voor RPI geschreven in Golang

Reactions Craft CMS plugin

Nieuwe Craft CMS plugin voor Facebook stijl reacties

Liveblog Beurs

Gedaan met stoffige beursartikelen. Hier een Facebook-stijl blog feed om het beursnieuws wat kleurrijker en actueler te maken.

Vertaal component

Een vertaal component in Symfony, voorzien van api en beheersmodule.