Skip to content

First stable release: STUNner goes GA!

Latest
Compare
Choose a tag to compare
@rg0now rg0now released this 31 Oct 12:19
· 39 commits to main since this release
bb50435

We are extremely proud to present STUNner v1.0.0, the first stable and generally available release of the STUNner Kubernetes media gateway for WebRTC brought to you by l7mp.io. This release marks the culmination of a two-year journey to make WebRTC services a first class citizen in the cloud native ecosystem.

There are no major nor minor changes compared to RC5. This release is not without improvements though: we completely reorganized the documentation and introduced two new tutorials, one showing how to deploy STUNner with Elixir and another one for Janus. STUNner now comes with a total of 8 demos, encompassing a wide range of WebRTC applications from cloud-gaming and desktop streaming to video-conferencing. Besides, there are also some minor janitorial fixes throughout the code base.

The journey so far

We started the project a little bit more than two years ago with one simple and ambitious goal: fit WebRTC services natively into the Kubernetes world. Back in those days, the state-of-the-art was to use Kubernetes nodes as mere VMs (the dreaded "host-networking hack"), expose media servers directly to the Internet, and rely on costly 3rd-party STUN/TURN providers for NAT traversal. This model renders essentially all the cloud native selling points ineffective, like elasticity, scalability and manageability, making WebRTC applications an unwelcome guest in the cloud native ecosystem.

Clearly, this had to change. For deploying conventional web apps into Kubernetes it is customary to include a dedicated gateway component with the sole responsibility of exposing the app to the Internet in a secure and scalable way. We wanted to exploit the same pattern for WebRTC, by creating a media gateway for ingesting WebRTC traffic into a Kubernetes cluster over a single IP and port. It just occurred to us that if we implement our gateway on top of the TURN protocol we can also eliminate the need for 3rd party NAT traversal, rendering self-hosting WebRTC services simpler and more economic and cutting down latency significantly. And that is how STUNner was born.

STUNner has come a long way during the two years since its first public release. From a standalone TURN server deployed from a static YAML manifest and customized via environment variables, it has become a fully fledged media gateway service managed by a dedicated Kubernetes operator that implements the official Kubernetes Gateway API. Today STUNner provides many unique features that no other open-source or commercial alternative does, like a fully managed dataplane lifecycle, limitless scale-up/scale-down with thoroughly tested graceful shutdown, and extensive documentation with several detailed tutorials on how to install the most popular WebRTC services into Kubernetes over STUNner.

With this release we consider the project's main goal completed. We have worked closely with our users to help them deploy and troubleshot STUNner with essentially any WebRTC service imaginable, from small-scale to large-scale, from open-source to proprietary, and from proof-of-concept to production stage. No matter which WebRTC application our customers throw at it, STUNner just handles the load reliably, efficiently, and mostly invisibly.

We are new confident that STUNner is ready for the general public and it is time to roll the first GA release.

The future

The v1 release, of course, does not mean an end to our journey.

STUNner has always been an open source software available under a permissive license. The open source development model has proved uniquely fruitful to bring the initial STUNner releases out to early adopters, acquire a solid installed base, and get invaluable bug reports and fixes from our users. This will remain unchanged: STUNner v1 will always be published and maintained as an open-source software.

That being said, the main course of STUNner development will undergo a major change from v1 onward: the future of STUNner development is commercial. We have many exciting new features in preparation, slated to be released soon in the enterprise version of STUNner under an affordable monthly subscription model. Our flagship Linux/eBPF-based UDP/TURN acceleration engine provides millions of packets per second performance per CPU at ultra-low latency. And this is just the start: from Kubernetes operators for deploying and managing full WebRTC applications to Let's Encrypt integration and multi-cloud support, we have many premium features in preparation.

Acknowledgments

Finally, a round of acknowledgments is in order. First and foremost, we are thankful to our users who supported us from the start, providing us invaluable feedback and early validation of our efforts. Without you, we would have never got to this point. Second, we are grateful to the pion/webrtc project, and especially Sean DuBois: if we didn't have access to a full-featured and an amazingly reusable Golang-based WebRTC toolkit from the outset most probably we would still be struggling with the complexities of libwebrtc desperately trying to release the first usable version of STUNner. Pion is amazing! Last but not least, we thank the work for everyone contributing to our development efforts in any ways: from PRs and bug fixes to documentation updates and bug reports, your help is truly appreciated.

Enjoy STUNner, join us at Discord, and don't forget to support us!