Firstly, apologies if this is the wrong forum, couldnt decide which category it fits in, so I thought Id drop it in general.
Not looking for hard answers here, just general discussion and radical ideas out of left field are welcome
Situation:
We have an application, currently running under Kubernetes on AWS that ... consumes a lot of online resources to run.
Each microservice is a single statically linked binary, so the "containers" are simple affairs. (thanks Golang!)
We want our developers to have a local setup that closely matches whats running in production.
Running the whole stack on a developer's laptop doesnt fit at all, thats definitely a no go.
A maxed out new MacBookPro doesnt have the capacity to run the whole stack, let alone an IDE on top of that.
Running the whole stack on a secondary machine for each developer (using linux + one of the micro kubernetes stacks) is an option.
With a secondary machine - using something sensible, like a NUC, doesnt fit either. Experiments show that something at least threadripper class is required to handle the bare minimum load.
Analysis:
It appears that the overhead of running Kubernetes, message busses, dynamic IP address allocation, iptables on linux, healthchecks, service discovery, coreDNS etc. kill the setup before any data is even passed through the system. Hence the need for a high end desktop just to manage the orchestration overhead. This is not nice.
Mission:
Get a working solution for each Developer, so they can use their laptop for regular coding, and have a non-ridiculous extra machine sitting next to their Macs to run a local stack of microservices.
Solution:
Going to try an experiment with a pure BSD approach based on each microservice having a static IP address, and removing all the orchestration overhead. Each microservice will then have an in-memory map of where to find other services.
BSD + Jails over ZFS is the first option. Will probably have to write an iocell-like thing (or a wrapper over iocell) to manage the jails. That should be straight forward.
Intrigued by the idea of using DragonflyBSD for this - readings suggest that they have some magic happening in juggling lots of threads, which might suit the problem we are seeing. No idea what the story is on setting up a jail-like set of microservices with DragonflyBSD is though ? Can you do jails over Hammer2 on Dragonfly ?
Anyway, any musings on this most welcome
Not looking for hard answers here, just general discussion and radical ideas out of left field are welcome
Situation:
We have an application, currently running under Kubernetes on AWS that ... consumes a lot of online resources to run.
Each microservice is a single statically linked binary, so the "containers" are simple affairs. (thanks Golang!)
We want our developers to have a local setup that closely matches whats running in production.
Running the whole stack on a developer's laptop doesnt fit at all, thats definitely a no go.
A maxed out new MacBookPro doesnt have the capacity to run the whole stack, let alone an IDE on top of that.
Running the whole stack on a secondary machine for each developer (using linux + one of the micro kubernetes stacks) is an option.
With a secondary machine - using something sensible, like a NUC, doesnt fit either. Experiments show that something at least threadripper class is required to handle the bare minimum load.
Analysis:
It appears that the overhead of running Kubernetes, message busses, dynamic IP address allocation, iptables on linux, healthchecks, service discovery, coreDNS etc. kill the setup before any data is even passed through the system. Hence the need for a high end desktop just to manage the orchestration overhead. This is not nice.
Mission:
Get a working solution for each Developer, so they can use their laptop for regular coding, and have a non-ridiculous extra machine sitting next to their Macs to run a local stack of microservices.
Solution:
Going to try an experiment with a pure BSD approach based on each microservice having a static IP address, and removing all the orchestration overhead. Each microservice will then have an in-memory map of where to find other services.
BSD + Jails over ZFS is the first option. Will probably have to write an iocell-like thing (or a wrapper over iocell) to manage the jails. That should be straight forward.
Intrigued by the idea of using DragonflyBSD for this - readings suggest that they have some magic happening in juggling lots of threads, which might suit the problem we are seeing. No idea what the story is on setting up a jail-like set of microservices with DragonflyBSD is though ? Can you do jails over Hammer2 on Dragonfly ?
Anyway, any musings on this most welcome