I keep saying this every time this topic comes up, have a look at elixir/erlang. The OTP library gives some great reusable patterns (and elixir project is adding new ones[1]) out of the box. You're basically developing a single codebase microservice project which feels like a monolith. You can spread out on multiple machines easily if you need to, the introspection tooling is better than anything you can buy right no…
How does versioning work? Is it required that all VM instances run the same version?
https://blog.appsignal.com/2018/10/16/elixir-alchemy-hot-cod...