I think you’re saying OTP as an
supervisor. If so, the OTP can’t replace K8s because the
supervisor only handles
processes atop of app server.
What the “fault-tolerant” means in Elixir is process restart; DB instances, redis, different server instances are beyond the
On the other hand, K8s orchestrates containers. That said, one can think K8s as a
And dockerizing in Elixir is advantageous too. Updating codes is so easy when you use docker.
For Hot code reloading in Elixir, I really wonder there is anyone actually use this feature instead of docker.
Vertical scaling isn’t a big deal in most cases.
But horizontal scaling, I don’t think it’s smooth in Elixir. (I haven’t tried this yet, so please share experiences)
I think there’re some pain points. Especially multiple nodes with websocket. If you’re using ETS as a cache like con_cache or cachex, access and control will be another headache.
Though I wish to use ETS more often, but no one would doubt redis container is much more manageable when it comes to consider horizontal scaling.
Either you choose Go or Elixir, docker and k8s are more than an option if you’re making a big project. But I can say that the Elixir is working silently if the server is running on a standalone server.
A nohogu.com, one of my personal projects is running on a basic digital ocean server with postgres and ubuntu 1804. Only S3 is leveraged outside. (consider codes aren’t optimized, site is still in beta.) Much faster than the past rails server at no compromise.