Sawatdee Khrap!
Let’s start on a grim note as the world is currently not the happiest of places. I hope everyone stays healthy and that’ll be able to return to our usual lifestyles as soon as possible. I certainly can’t wait to go back to the office and interact with people in person again.
By now, I’ve settled down into my condominium unit and passed my probation period. So I started working on restoring my usual services. In The Netherlands, I used to have quite a capable server. An Intel Xeon E3 something v3 with 32GB ram and an HBA to extend the storage capabilities of the motherboard. When I moved to Thailand, I only packed the HBA as it’s quite a costly part, and it was relatively rare in the usual consumer part shops.
So at this point, I had to decide. How would I rebuild my server? With the number of services I ran on it, I could do with some more cores and ram. Because I like pain, I decided that having a server park is more fun than having a single beefy machine doing everything. That is how I came to my current set up. One ‘small’ machine that would re-use the HBA and provide data storage as NFS. With the compute power coming from a bunch of Raspberry PI 4s. With the newly released PI 4 series, it became feasible. The biggest concern I had with the PI 3B+ was it’s mear 1GB of memory. With the four series allowing up to 4GB all of my services should be fine running on that, except for maybe the Kubernetes cluster. This decision did not come without its drawbacks, but that is a story for another time.
My current calculations said I’d need about 8 PIs to run all the services again. So far, I’ve only miscalculated on the PI which was supposed to Jira and SonarQube. Jira is surprisingly more memory-hungry than I anticipated. It caused me to shift SonarQube to a dedicated PI. When I rolled out SonarQube, that decision was the right one. To allow for full-text search SonarQube employs ElasticSearch, which takes quite a chunk of memory. And SonarQube eats quite some as well across the various modules it starts. By now, I only need to configure the second PI, which will act as a GitLab CI runner.