High availability and scalable system
with Elixir

We have adopted Elixir and Phoenix framework since early 2016 and has applied it successfully till today. We use Elixir as the main language for web, back-end development and data API development.

Let’s build

Elixir & Phoenix

Elixir benefits from the wealthy, open-source framework Phoenix which enables us to shorten development process and shift our focus into the product-market fit instead of reinventing the wheel.

Power of Erlang

Elixir itself runs on the Erlang VM and totally interoperable with Erlang, its performances and its ecosystem. Thus, tools written for Erlang can be used on an Elixir codebase.

Elixir has built-in support for:

  • Concurrency (cheap context switching)
  • Distribution (executes on different machines)
  • Fault Tolerance (it recovers from errors)
  • and it prides itself with Nine-Nines of availability (~31ms downtime/year)

Elixir is also in a good spot between performances and high level features:

  • Functional paradigm brings immutability by design
  • Pattern matching helps destructure data types easily
  • Simple abstraction via protocols
  • Metaprogramming with macro and homoiconicity
  • Scaffolding boosts development speed
  • Hot reload make it easy to write tests and debug
  • Joy of Ruby: friendly syntax

Concurrency built-in

Erlang VM (BEAM) system built for concurrency. The Erlang builtin actor concurrency model help us create isolated processes that can communicate with one another using messages but can’t mess with other’s state. As a result, it can handle these user spikes with ease.


Thanks to Erlang VM, Elixir applications is able to run on various communicating nodes. This makes it easy to create larger web and IoT applications that could be scaled on several different servers and machines. Having multiple virtualized servers over a distributed system also leads to better app performance.

Reliability: fault-tolerant approach

One of the features that developers love the most about Erlang and Elixir is fault-tolerance. It provides built-in safety mechanism to keep the product functioning even when something goes wrong. Processes alert a “failure” to dependent processes, even when they’re on different physical servers so they can fix the problem immediately.

A growing and solid community

Although Elixir is quite a young language, it has the time to develop an active user community where even highly qualified engineering are willing to build, help and share their knowledge. Moreover, there is a lot of resources and tutorials available for developers to their hands on Elixir.

We’d love to work with you.

Drop us a message if you’d like to build with the Dwarves.

Let’s build