Go vs Elixir

We use both Go and Elixir (as well as Erlang) over here at DNSimple. Here’s my hot take on them when comparing (all of this is my opinion, feel free to disregard completely):

Go

  • Built binaries = ridiculously easy deployment
  • CPU and memory usage are generally very small (we build small services with Go)
  • Excellent parallel processing performance
  • Dependencies were originally challenging to manage (due to simplicity of model) but now everything is vendored, so it is not as much of an issue
  • Standard libs cover a huge amount of use cases, meaning external dependencies can be minimized
  • Ideal for small services or applications that run and exit often

Elixir/Erlang

  • Excellent dev tools (mix for example)
  • Excellent runtime inspection (bind to a running service and start calling functions)
  • Excellent parallel processing performance (although unbounded message queues needs to be kept in check)
  • OTP is a powerful system for building long running services combined of multiple small parts (apps and libs)
  • Fail fast design seems to result in more robust systems that are easier to reason about when problems occur
  • Ideal for services that run for long periods of time

Bottom line: we love all three languages and take advantage of their different runtime profiles for optimal systems.

36 Likes