Emergent Load Testing - rules for organized chaos
Today I spoke at KubeCon EU 2023 about emergent load testing.
Below are some links to extensions and experimental modules that I mentioned:
- k6 site
- k6 repo
- k6 docs
- k6 browser (experimental module)
- Prometheus Remote Write (experimental module)
- k6 tracing (experimental module)
- xk6-kubernetes (extension)
- k6 redis (experimental module)
- xk6 disruptor (extension)
When we write load testing scripts against our applications, we write them sequentially: A, then B, then C. But this doesn’t accurately reflect the organized chaos of a system in production, nor does it prepare the system for the unexpected.
Emergence is a phenomenon where parts of a whole independently develop properties not originally present in the whole. Emergence is what helps ant workers develop roles without leadership, prompts animals to evolve adaptive traits without forethought, and facilitates non-toxic communities without moderators.
The growing field of emergent software applies this swarm logic to the programs that we write. What would it take to write emergent load testing scripts? It turns out that there are a few ingredients for emergence: a large population size, opportunities to interact, feedback, and an element of control.
In this talk, Nicole van der Hoeven discusses how to bring these elements to load testing by writing a script in Grafana k6 that can independently decide what requests to make next, modify Kubernetes app pods, and disrupt services based on a continual feed of results during runtime– all without manual intervention. She shows how to wield this new breed of load testing to improve confidence in the complex systems we build.