4 ms·
Drawbacks, well it's slower than other language ( Java, C#, Go ), it's not typed, the deployment / process liveness mechanisms are now useless with Kubernates /
by Thaxll 9y ago
Drawbacks, well it's slower than other language ( Java, C#, Go ), it's not typed, the deployment / process liveness mechanisms are now useless with Kubernates / Docker that are better at doing that and language agnostic.
- bluesnowmonkey 9y agoIt can be slow, or not. We wrote some serialization code in Elixir and Java, and the Elixir version was a little faster. It's good at that. On the other hand, I had some bit twiddling code that was 13x slower than C. I know because I rewrote that section into C as a NIF and benchmarked. The nice thing then was my overall 95% Elixir app became about as fast as a 100% C app.
- rurban 9y agoExactly, beam is a pretty slow and unoptimized VM, CPU wise. Which is not so important, as their strength is eliminating IO waits and context switches which are usually much costlier. Their GC is top notch.
- tabeth 9y agoCan you expand on the liveness mechanism bit? Even if K8 could automatically restart containers, I feel without the language itself inherently being able to catch such things, it's not as useful as BEAM processes.
- yetihehe 9y agoComparing to erlang, docker is pain in the ass. You need to expose one more port to your system? Restart at least one cotainer. Need to link additional containers? Restart at least one. In erlang you just execute some erlang commands and in most cases you don't even drop connections, it's like changing your cylinders in engine when it's still running. Of course if your code has errors it can go wrong, but typically you are only spammed with some errors from this one service until you fix the error and reload code. After you do some code upgrades in erlang, you miss this functionality in all other languages.