I would like to know what the deployment process in Whatsapp or Klarna or any big companies which are using Erlang/Elixir in production. Little background about me, I am a Erlang/Elixir developer working on the stream processing and analytics. Here are the questions I am mainly focusing on.
- Do they run the Erlang/Elixir applications in docker or nun-docker?
- How do they scale their application up and down automatically based on CPU/RAM usage?
- How do they handle automated rollouts and rollbacks?
- I do not think that WhatsApp uses Docker as they run FreeBSD machines which (by the nature) do not have Docker. They maybe use FreeBSD jails but I think that they run it “bare-metal” to have greater throughput (not that Jails impede performance, but it makes little to no sense to separate application from rest of the system when gateway is the only thing that is running there).
- I would bet that they do, at least for some parts of their system, but IIRC WhatsApp is running on bare metal, so the “automatic scaling” isn’t that easy
Just be wary that I do not work for any of these companies, so these are just my thoughts as an outsider.
Since being purchased by Facebook Whatsapp has been running on Linux rather than FreeBSD. There was a good talk at CodeMesh last year from Maxim Fedorov that covered some of the challenges this presented: https://www.youtube.com/watch?v=FJQyv26tFZ8
The few people I know from Ericsson tell me they use Erlang releases but their stuff runs on custom boards with dual CPU, and dual RAM banks.
The other companies I had worked with split, some use Erlang releases others don’t. All on stock servers but these are pre-Docker days.
Recently more companies are headed towards docker. How useful it is with an Erlang release I’m not too sure.
My current project deploys direct to the server but they only partially use releases and from what I can gather it is due to lack of Erlang release knowledge than anything else.