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)