From lpil on Discord
When it comes to scaling you would treat Erlang and Go the same
They can both saturate as many cores as you throw at them
You can happily give them the whole server
For example, in a Go web app each http request that come in gets a goroutine. In Erlang each gets a process [!info]
These are my notes/highlights from …
Both have a multicore scheduler that distributes it over CPUs
There is no mechanism for scaling over multiple machines on the BEAM
You could (like Go) write a distributed program to make use of multiple machines. But it’s not built in to either
The BEAM does handle cluster management and inter-node messaging more than Go does however
Running a BEAM container is in no way laborious, and there is no BEAM abstraction that removes the need for something like k8s to spin up new instances.
BEAM is not at all a replacement for k8s in the same way that k8s is not a replacement for data centres
Q: I’m trying to get an intuition for the performance of gleam. You can check out any zero overhead BEAM language benchmark such as Elixir and Erlang.
We will be the same as them. Perhaps very slightly faster as we do slightly more at compile time.
Ignore the tech empower ones, they’re really badly done
Learning resources recommended by Louis Pilfold
- Designing for scale with Erlang/OTP
- Elixir in Action
- Learn Your Some Erlang (free to read online)