13 comments

[ 2.6 ms ] story [ 44.0 ms ] thread
Can somebody help me please? I must have taken the wrong turn and ended up in a parallel reality where 540MB are called "featherweight" :-p
I hear ya...but when 6 years old servers were configured with 1TB of RAM...

shrugs

Servers? Isn’t everything a VM now?

(Only slightly kidding. Feels like nobody really wants to operate hardware these days so it’s all outsourced. The idea of paying for TiB memory VMs is insane!)

Still cheaper than hiring more developers, it is hard to make the business case for more robust software when outsourcing everything to AWS and throwing RAM at the problem is more cost effective than hiring bodies.
It's not so much a parallel reality as you seem to have been transported from the past. These days a calculator app might take 540MB.
Opened Calculator on my Mac, 26mb according to Activity Monitor
Sorry this is the k8s train, anything less than 1GB of ram is lightweight, anything less than 768MB is featherweight and anything lower than 512MB doesn't exist.
So here's a challenge if anyone is up for it: Build a container orchestration engine that can run in 16MB of RAM on top of a Linux kernel.

Must have:

- Some form of networking (duh)

- Distributed state

- Distributed message queue (simple)

- Distributed scheduler

- Logging

Out of scope:

- Authorization/Authentication/Encryption

- REST/JSON/SSL/Web

distributed state like memcached?

what is popular for lightweight distributed message queue?

what is popular for lightweight distributed scheduler? is cron.. "distributed"?

Do you need all of that for a software run on a Raspberry Pi (as article suggests) or similar embedded devices? I think just one application binary should be enough.
Is there some reason all of those things could not exist in the same binary?
I remember trying k3s and microk8s on an old laptop with a dual core i3-2530m a few years ago. The beast was eating at least 20% cpu on a fresh install without any containers running. I gave up and used docker swarm instead. Now i'd probaby try nomad, seems much saner
The more I dive into this rabbit hole of complexity, the more I enjoy running things on a JVM and an application server.

I get HW/SW decoupling, platform independence, standardization, predictable technical debt and clustering at a fraction of the complexity. I suspect the overall resource efficiency is way higher too.