I've had this thought for a long time that if you have a completely functional code base (as in no side-effects), making the decision between a microservice approach and a monolith approach is fundamentally transparent. Any functional code can not only be split onto multiple threads, but multiple servers (at the cost of latency).
dugmartin|2 years ago
Language/runtimes like Erlang & Elixir on the BEAM/OTP that were built with this in mind work well. They are completely functional with all state contained with lightweight processes and can send messages with timeout handling transparently across nodes in a cluster. With OTP you get a supervision tree for those processes that can automatically restart nodes and child processes of nodes.
dboreham|2 years ago
Assuming some simplifying assumptions, yes. But those simplifying assumptions tend not to hold in the real world.
Cthulhu_|2 years ago
jcparkyn|2 years ago
eldenring|2 years ago