Run it on ARM container runtime
This is where the fun starts. We decided that the proper way of tackling this is to go as low as we can.
So we bought 3x Rasberry PI 4’s and deployed a K3s cluster.
Thanks to the Rasberry PI community’s hard work, there are many guides on this.
One we based our setup can be found in this (https://bryanbende.com/development/2021/05/07/k3s-raspberry-pi-initial-setup) excellent blog post by Bryan Bende.

3x nodes, one control-plane.
We were delighted to learn that all our existing Kubernetes deployment tools (Workloads, Services etc.) were usable without almost any changes.
It only required some minor tweaking for storage.
We could use the same helm script we created for our deployments on Amazon EKS, Azure and GKE.

All services deployed running 3x of each (1 replica on each node). Note CPU usage shows 0.5 of 4 (4 cores).
Push it to the limit
We then proceeded to deploy our trusted Gambler bots. Built to make even the most overkill setup fall to its knees.
We use these bots to test new deployments and generate performance baselines on every release.
This is a great tool to continuously see how performance is impacted as we add new features to the RGS.
We were able to achieve roughly 5000 rounds per second. Which is not too bad and considerably better than expected.
The significant bottleneck is disk IO. Rasberry’s SD cards are only good to boot from and fold under any load.
What did we learn?
The experiment gave us 4 tickets on where we see potential bottlenecks in performance.
These are mainly related to persistence.
We currently have a very cautious approach to ensure all game rounds are always in a recoverable state, no matter what happens.
Events such as a complete power loss or database going offline should not result in any loss of data or a situation where a player sees results that are not persistent.
Will we run Rasberry PI in production?
No, of course not.
But we aim to deploy future sites on ARM-based hosting; we might even migrate fully if it makes economic sense.
What can we use this for?
My favourite application for this is to learn and to help our developers and tech staff fully understand the concept of clusters and distributed computing.
It’s cheap and easy for them to set up and take apart.