Over a Decade of Building a WebRTC SFU with Erlang/OTP

V
2 min readMay 9, 2024

Over 10 years ago, on November 11, 2012, I made the initial commit with the resolution to build a WebRTC SFU. A decade has passed since then. In this blog post, I’ll briefly describe the journey of developing a WebRTC SFU from scratch using Erlang/OTP and where it stands today.

2012-11-11 14:08 +0900 voluntas    I─┘ Initial commit

About Our Company

We are a small enterprise specializing in the development and sale of packaged software for WebRTC SFUs. Our team is small enough to count on one hand.

Proprietary Development Libraries

We have developed the following libraries, which are essential for WebRTC, using only standard libraries. All of these were developed from scratch:

  • DTLS Library
  • SDP Library
  • RTP / RTCP Library
  • SRTP / SRTCP Library
  • WebM Library
  • MP4 Library
  • STUN Library
  • TURN Library

Our WebRTC SFU

Leveraging the above libraries, we have been developing and selling our WebRTC SFU for nearly nine years now. Many companies have adopted our technology.

Erlang/OTP’s hallmark feature, its robustness, holds true; our WebRTC SFU service has operated for 1.5 years without any downtime or failures. The performance is also commendable, with clients reporting stable handling of nearly 10 Gbps of load per node.

Distributed WebRTC SFU

Recently, we have capitalized on Erlang/OTP’s distributed capabilities to scale out our WebRTC SFU. We have integrated the Ra library, which is used by RabbitMQ, into our SFU to enable multi-node distribution.

Clients who have helped with testing have reported handling nearly 20 Gbps of load across five nodes. Our design theoretically supports scaling up to nearly 1000 nodes, allowing us to manage extremely large-scale loads with our distributed WebRTC SFU.

Conclusion

We have been developing and selling products using Erlang/OTP, a relatively obscure language, without any customer ever questioning its use. Some customers are even pleasantly surprised to learn that it’s written in Erlang/OTP.

Creating our WebRTC SFU in Erlang/OTP has proven to be a great choice, and we look forward to continuing to deliver excellent products.

--

--