I have a small homelab running a few services, some written by myself for small tasks - so the load is basically just me a few times a day.
Now, I’m a Java developer during the day, so I’m relatively productive with it and used some of these apps as learning opportunities (balls to my own wall overengineering to try out a new framework or something).
Problem is, each app uses something like 200mb of memory while doing next to nothing. That seems excessive. Native images dropped that to ~70mb, but that needs a bunch of resources to build.
So my question is, what is you go-to for such cases?
My current candidates are Python/FastAPI, Rust and Elixir, but I’m open for anything at this point - even if it’s just for learning new languages.
@leisesprecher It depends on how much you’re willing to optimise/go low level.
Rust is very fast and doesn’t use much memory. You can use some frameworks like Axum, Rocket (very well documented) and Actix, but they’re all high throughout beasts, so there the possibility of them using a bit of memory, like 40MB.
C++ can be high level and very efficient, using very little space. However, it is very very easy to shoot yourself in the foot, and is going to cost you in debugging time.
+
@leisesprecher
Python is very straightforward and doesn’t use much memory in general< 60MB. However, it depends greatly on the framework (same as other languages!), but for a simple REST service, FastAPI is a star. It models endpoints as functions. I don’t recommend using it for anything production though. There is also Flask, but I haven’t used it enough.