Using Elixir for complex, real-time telephony processing: some lessons learnt
Going live on at
The Erlang/OTP platform was originally created as a control plane for Ericcson's own telephony switches, and was therefore designed from the start to address the kind of problems found with telephony and real-time communications - real-time responses, distribution, fault tolerance, and very high availability. It is now experiencing a second youth with the advent of Elixir, a language based on on the Erlang VM that offers a better, Ruby-like programming experience, while retaining the strengths of the underlying platform.
My company is developing a API bridge that can translate Microsoft Teams telephony information into a feed compatible with our QueueMetrics Live platform. When tasked with developing it, we soon realized that we needed a complex and strongly asynchronous API event processing system, and we took the risk to develop the current prototype in Elixir as an alternative to our currente generation of Clojure and Kafka-based large-scale stream processors.
This project has taught us some lessons on places where Elixir fares better than expected, and also some lessons on where it was not as good.