Code Self Study Forum

Differences between Elixir/Phoenix and Scala/Akka

This discussion might be interesting for anyone who is comparing Phoenix (Elixir) and Akka (Scala).

The main difference between BEAM and Scala/Akka is scheduling.

In general, Scala+Akka is better for high throughput computations. E.g. scientific calculations where you need to calculate everything before finishing.

BEAM shines for low-latency systems. E.g. in web servers, you prefer the user to get an answer quicker even if that means lower throughput. I did an article once showing how exactly schedulers trade latency for throughput: https://tkowal.wordpress.com/2015/01/27/the-unintuitive-latency-over-throughput-problem/

WRT Phoenix, it is a web framework like Play for Scala. BEAM doesn’t need actor framework because actors are part of the language.

WRT “library with auto-scalable clustering”, I don’t believe it is necessary. Erlang nodes in one network started with the same “cookie” automatically connect to all other nodes.

So, in the end, the question is: what are you going to build with it? Machine learning? Scientific computations? Recommendation systems? Take Scala :slight_smile: Web applications? Game servers? Anything that serves user requests? Take Elixir.

There are more opinions in the thread: