Lorenzo Miniero is the chairman and co-founder of Meetecho, a company providing consulting services on everything related to real-time multimedia, while also regularly providing streaming and remote participation services for well known events around the world (e.g., IETF and ACM). Lorenzo received his degree and Ph.D. at the Computer Science Department of the University of Napoli Federico II, where he started working on multimedia conferencing and met the colleagues with whom he co-founded Meetecho as an academic spin-off. He is an active contributor to the Internet Engineering Task Force (IETF) standardization activities, especially in the framework of real-time multimedia applications. He is most known as the author of the Janus WebRTC Server, an open source WebRTC server-side implementation.
Janus is a general purpose WebRTC server, so scaling is often a tricky business that can’t prescind from the context. The talk will describe how we worked on separation of responsibilities, brokering of resources and media forwarding for different use cases, and our efforts on some kind of a “PaaS”.
While P2P media in a browser is one of the best things WebRTC provided to web developers and media enthusiasts, WebRTC servers are often needed to make WebRTC applications actually “scale”, especially with respect to the computing and networking load clients may be subject to otherwise. That said, WebRTC servers may need scaling considerations of their own, typically whenever the number of users to serve grows beyond the capabilities of a single instance. This is true for Janus as well, an open source WebRTC server implemented by Meetecho.
For Janus, though, scaling is an even trickier business. In fact, its general purpose nature means there are different plugins with completely different requirements and media management, which means there is no one-size-fits-all mechanism for scaling Janus-based applications: while some plugins handle each user and their media streams independently of each other, making it easier to just distribute the load on different servers, some don’t or can’t, e.g., due to relationships that may exist among the media they involve. As such, in order to effectively scale, one cannot prescind from the context of the application or use case, in order to evaluate the best possible strategy depending on which plugin is in use, or how the plugin is used.
The talk will go through some of our efforts in that direction, and more specifically will describe how we identified some common properties in the different use cases we had to address. Different strategies will be presented, ranging from a simple deployment of multiple instances, to context-aware separation of responsibilities and brokering of the media resources. The presentation will finally also describe our steps and efforts in defining an ad-hoc framework for making this as transparent as possible to developers and users, in order to come up with what may be seen as a “PaaS”, or “Janus-as-a-service” if you like.