Paul Balogh
Developer Advocate, k6 OSS
@javaducky
Running distributed
load tests with k6
Slide 2
Slide 2 text
By bringing k6 and Grafana together, we enable teams
to radically improve the time to prevent, detect,
and remediate problems before they impact end users.
Raj Dutt
Grafana Labs CEO/Co-founder
Slide 3
Slide 3 text
Overview
1
2
3
4
What is k6?
What is load testing?
Introducing the k6-operator
Where do we go from here?
Although it’s easy to get started with k6 [OSS] all on its
own, it really shines with its ease of integration into a
developer ecosystem.
Thoughtworks Technology Radar
April 2021
Slide 7
Slide 7 text
OSS is at the
heart of what
we do and
helps leave the
world a little
better than we
found it
CLI and API
designed for
automating
your tests with
pass/fail criteria
using JavaScript
syntax
A k6 engine
written in Go
making it one of
the the best
performing
tools available
Use Go(lang) code
to add support for
new outputs,
protocols, and
products from
within your test
scripts
OpenSource Scriptable Performant Extensible
k6: a reliability testing tool
Slide 8
Slide 8 text
JAVASCRIPT RUNTIME
GOJA (https://github.com/dop251/goja)
GO
xk6 EXTENSIONS
k6: a reliability testing tool
JAVASCRIPT
Slide 9
Slide 9 text
Overview
1
2
3
4
What is k6?
What is load testing?
Introducing the k6-operator
Where do we go from here?
Slide 10
Slide 10 text
Load testing is the process of putting demand on a system
and measuring its response.
The Internet
Knower of all things
Slide 11
Slide 11 text
● Performance testing == load testing
● It is only for large companies
● Is expensive to do
● Should only be in production
● Unnecessary if you have o11y
Myths about load testing
Slide 12
Slide 12 text
UX
Why do load testing today?
Slide 13
Slide 13 text
Why do load testing today?
SLOs
Proactively test
Slide 14
Slide 14 text
Common types of load tests
Average and Peak test
Soak test
Spike test
Breakpoint test
Slide 15
Slide 15 text
Constant Arrival Rate
Ramping Arrival Rate
Ramping VUs
Per VU iterations
Constant VUs
Shared iterations
Modeling your load tests
Slide 16
Slide 16 text
Overview
1
2
3
4
What is k6?
What is load testing?
Introducing the k6-operator
Where do we go from here?
Slide 17
Slide 17 text
Same k6 test script, multiple execution modes!
Custom Resource Definition (CRD) launcher
kubectl create cm test-scripts
–from-file=script.js
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
57 configurable options → https://k6.io/docs/using-k6/k6-options/reference/
CLI flags
ENV variables
Script options
Default Config file
Order of preference
Worker nodes
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
Overview
1
2
3
4
What is k6?
What is load testing?
Introducing the k6-operator
Where do we go from here?
Slide 22
Slide 22 text
The “Golden Signals”
Network quality, Geolocation
Special events, Cyber attacks
Bugs, 500s, Security/Auth
Underprovisioning, Infra issues
Slide 23
Slide 23 text
Pre-production Production
Virtual User
traffic
Real User
traffic
Virtual User
traffic
System in
Pre-prod
System in
production
Proactively improve reliability
Slide 24
Slide 24 text
k6.io/slack grafana/k6 community.k6.io
Connect with Paul as
@javaducky or linkedin/in/pabalogh
Demonstration project available at
github.com/javaducky/demo-k6-operator
Thanks for participating!