Lab
Clusterβ
We'll use a k3s cluster with three nodes (each with 4 vCPUs and 8GB RAM) on Hetzner Cloud. Additionally, we've set up a CSI (Container Storage Interface) to automatically provision network-based persistent volumes.

Applicationβ
Our application consists of multiple services that communicate with each other and their respective databases.
To deploy these applications in your cluster, run the following commands:
Add the Coroot Helm Chart Repository:
helm repo add coroot https://coroot.github.io/helm-charts
helm repo update
Install the Application:
helm install odb coroot/oopsdb
In Coroot, the service map looks like this:

The application consists of several services written in different languages and backed by multiple databases:
Services:β
- Go apps:
frontend
,order
,cart
,catalog
- Python app:
user
- Java app:
recommendations
Databases & Caches:β
- PostgreSQL:
odb-postgres
(Zalando Kubernetes operator) - MySQL:
odb-mysql
(Bitnami Helm chart, replicated setup) - Redis:
odb-redis
(Bitnami Helm chart) - Memcached:
odb-memcached
(Bitnami Helm chart) - MongoDB:
odb-mongodb
(Bitnami Helm chart, clustered setup)
Additionally, there's a service called load-test
, which generates requests to the frontend service.
The frontend
service distributes these requests across other relevant services.
Under normal conditions, the load is ~40 requests/second, with a p99 latency of 200ms, and all requests are processed without errors.

Pretty boring, huh? Let's break something! ππ₯