NUBOMEDIA: the first open source WebRTC PaaS

25/05/2016

Luis Lopez[Luis Lopez is the face in front of Kurento, one of the popular open source media servers that can handle WebRTC. He wanted to share here the story of the new open source WebRTC PaaS – NUBOMEDIA]

nubomedia

When I first heard about WebRTC by 2011, I was fascinated by the idea of standardized APIs and protocols enabling the creation of interoperable RTC applications for the Web. However, I noticed very soon that my peer-to-peer services were too limited and that, as a developer, I was hungry for further features that could only be provided by a WebRTC infrastructure. This is why I got involved in the Kurento project for creating a media server. Kurento got nice traction but, as it was maturing, we found an increasing number of feature requests related to its scalability. The message was quite clear: a cloudification of Kurento was necessary.

With this in mind, by 2014 we got down to work and, with the financial support of the European Commission, we worked hard during a couple of years in cooperation with some of the most remarkable cloud experts around Europe. These efforts were worthy: NUBOMEDIA, the first open source WebRTC PaaS, is now a reality.

NUBOMEDIA: the first WebRTC PaaS

In the WebRTC ecosystem, scalable clouds for developers are not new. Providers such as Tokbox, Kandy, Twilio and many others offer them. These solutions are commonly called “WebRTC API PaaS”, “WebRTC Cloud APIs”, or just “Cloud APIs” as they expose a number of WebRTC capabilities through custom APIs that exhibit all the nice “-ilities” of cloud services (i.e. scalability, security, reliability, etc.)

For NUBOMEDIA we also considered this “Cloud API” concept as a solution. However, although APIs are the main building block developers use for creating applications, applications are more than just a set of API calls. After analyzing WebRTC developers’ needs, we felt more appealing the concept of platform than the concept of API. A platform is more than an API in the sense that it provides all the required facilities for executing applications. These typically include an operating system, some programming-language-specific runtime environments and some service APIs. The cloud version of a platform is commonly called a PaaS, which is (literally) a platform that is offered “as a Service”.

There are many such PaaSes in the market including Heroku, the Google App Engine or AWS Elastic Beanstalk. All of them expose to developers the ability of uploading, deploying, executing and managing applications written in different programming languages. These PaaS services are quite convenient as they let developers to concentrate on creating their applications’ logic while all the complex aspects of provisioning, scaling and securing them are assumed by the PaaS. In spite of the wide offer of PaaS services, we noticed that most common PaaS providers did not expose WebRTC capabilities as part of their APIs. Hence, WebRTC developers were not able to enjoy all the advantages of full PaaSes.

The main difference between a WebRTC cloud API and a full WebRTC PaaS is illustrated in the following figure. As it can be observed, WebRTC Cloud API providers (left) do not host developers’ applications, but just expose some WebRTC capabilities through a network API that applications consume. On the other hand, full WebRTC PaaSes host application and take the responsibility of executing, scaling and managing them.

201605-webrtc-vendors

Based on these ideas, the NUBOMEDIA idea emerged clearly: instead of evolving Kurento into a cloud API we should rather create a full PaaS out of it, so that developers could enjoy the nice features of PaaSes (i.e. application deployment, execution, scaling, etc.) while consuming the Kurento APIs in a scalable and secure way.

Why NUBOMEDIA may be interesting for you

NUBOMEDIA is now a reality and it can be enjoyed openly by developers worldwide. Like solutions such as OpenShift, Cloud Foundry or Apprenda, NUBOMEDIA is a private PaaS in the sense that it consists of an open source software stack that can be downloaded, installed and executed on top of any OpenStack IaaS cloud.

If you are a developer, you may be interested in trying NUBOMEDIA for your next application as it combines the simplicity and ease of development of WebRTC Cloud APIs with the flexibility of full PaaSes. When doing so, consider that NUBOMEDIA is a Java PaaS. Hence, you will be able to leverage all the capabilities of the Java platform for creating your WebRTC application. The only difference with other Java PaaS services it that NUBOMEDIA will provide you a specific SDK through which you will be able to access the complete feature set of Kurento in a scalable way.

From a practical perspective, the main differences between NUBOMEDIA and other WebRTC cloud solutions are illustrated in the next figure. As it can be seen, there is a trade-off between flexibility and simplicity: the simplest the development, the less flexible the application is and the more difficult it is to adapt it to custom needs and requirements.

201605-flexibility

For example, most flexible solutions (IaaS on the bottom left corner of the image) require complex developments for creating fully operational WebRTC applications. On the other hand, SaaS solutions (top right corner) do not require much development efforts, but developers’ ability for customizing and adapting it to special requirements is typically very limited. For this reason, WebRTC developers tend to prefer WebRTC Cloud APIs that provide some flexibility but, at the same time, enable simple developments.

NUBOMEDIA also positions within this balance but giving more prevalence to flexibility. This makes NUBOMEDIA more suitable for developments requiring to comply with special or rare requirements. Just for illustration, these are some of the things you can make with NUBOMEDIA that are complex to achieve using the common WebRTC Cloud APIs:

  • To use the signaling protocols you prefer (e.g. SIP, XMPP, custom, etc.)
  • To have special communication topologies. For example, imagine that you need a videoconferencing room with “spy participants” that can view others but should not be noticed by the rest; or imagine that you need simultaneous translators that are not viewed but need to listen to some participants while being listened by others.
  • To have custom AAA (Authentication, Authorization and Accounting). For example, imagine that you wish to implement rules customizing who can access the media capabilities (e.g. recording, viewing a specific stream, etc.) so that they depend on some non-trivial logic (e.g. context information, time-of-day, time-in-call, etc.).
  • To go beyond calls. We may imagine lots of use-cases where WebRTC might be used beyond plain calls. For example, person-to-machine or machine-to-machine scenarios where you need cameras to connect to users or to other systems in a flexible way without restricting to the typical room videoconferencing models commonly exposed by WebRTC Cloud APIs.

As another interesting property, as NUBOMEDIA is a private PaaS, it can execute onto any OpenStack infrastructure. This means that the operational costs of an application running in NUBOMEDIA are fully under your control as you can decide in which IaaS to deploy the PaaS. This significantly reduces the operational costs with respect to an equivalent application consuming a Cloud API, as the Cloud API provider margins disappear.

The NUBOMEDIA Open Source Community

We have created NUBOMEDIA following the same open philosophy we used with Kurento. Currently, it is supported by an active and vibrant open source software community that is structured as an association of several projects providing different technological enablers including: the cloud orchestration mechanisms, the PaaS management technologies, the media server, many media processing modules and client SDKs for Android, iOS and Web.

If you are interested in knowing more about NUBOMEDIA you can check the community documentation where you will be able to find detailed information showing how to install and manage the platform and how to develop and deploy applications into the PaaS. You can also check the community YouTube channel and see one of the many videos with demos and tutorials illustrating how to develop and deploy NUBOMEDIA applications. If you want to know about the latest news of the NUBOMEDIA Community, you may follow it on Twitter.

Need to pick an open source WebRTC media server framework for your project? Check out this free selection worksheet.

Responses

Gaurav Srivastava says:
May 29, 2016

Thanks Luis for the awesome product and Tsahi for providing his platform to share this useful information.

I have been great follower of Kurento because of its flexibility but yes it comes at the cost of proformance.My only question with Luis is what’s the roadmap of this PaaS for ORTC or WebRTC’s next versions.

Thanks,
Gaurav

Reply
    Luis Lopez says:
    May 30, 2016

    Hi Gaurav,

    Thanks for your interest in NUBOMEDIA.

    Indeed Kurento is an extremely flexible media server and this is why we used it for NUBOMEDIA. If you want superior performance, you should try the new Kurento SFU module, which has been optimized for managing a high number of WebRTC streams and which is shipped with a lot of additional features such as simulcast or multi-streaming support.

    In relation to ORTC, the community is working hard for aligning with the latest novelties on the WebRTC area. ORTC support is on our roadmap, but we cannot yet commit to any specific release date yet.

    Best.

    Reply
      Abes says:
      June 8, 2016

      Hi Luis,

      Thank you for the information. I’m currently researching Kurento and learning about it’s capabilities. The “new Kurento SFU module” you mentioned caught my attention. This new module wasn’t on my radar and I haven’t been able to find much information about it. If possible, can you provide more details about it? I suspect once the 6.5.0 documentation is posted, it will cover this.

      Thanks

      Reply
Varun Pratap Singh says:
August 9, 2016

Thanks Tsahi for explaining NUBOMEDIA so well. Thanks to Luiz for developing NUBOMEDIA. But I need to clarify few points before making a decision to migrate our solution to NUBOMEDIA:-
1) Can we use NUBOMEDIA for live video streaming from WebRTC Endpoints like WebRTC based Android Apps to watching the live streams on WebRTC based web page. We want to use WebRTC for lowest latency.
2) Can we record our live streams as well along with streaming on Server.
3) If a person joins late to watch live streams through webpage can we he rewind the live stream to some earlier point.
4) Do we have the iOS, Android and Web WebRTC SDKs for developing the streaming apps using webRTC and to playback them on Web Browser.
5) Do mobile app streaming SDKs support local recording and features like pause and resume streaming.

Please help us know if NUBOMEDIA is suitable for such streaming solution.

Reply
    Luis Lopez says:
    August 11, 2016

    Hi Varun,

    In relation to your questions

    1) Using WebRTC for live streaming is just a use case. NUBOMEDIA is a platform where you can develop all types of WebRTC applications. Hence, the short answer to your questions is yes, you can do it. The long answer is that you can do it, but it might be complex depending on the specificities of your application. A in-depth analysis of requirements might be needed for evaluating the required effort for it.
    2) Yes, NUBOMEDIA provides a very powerful media repository where you can record.
    3) This depends on what you understand by “rewind”. You can play a stream that is being recorded (i.e. reading and writing to the same object is possible), but this requires to manage some complexities. Hence, this might not be inmediate.
    4) Yes, iOS, Android ans Web SDKs are available.
    5) No, the SDKs do not support local recording. Pause and resume streaming might be implemented with server side support, but again this may require managing some complexities.

    Best.

    Reply
      Varun Pratap Singh says:
      August 12, 2016

      Hi Luis,

      First of thanks to reply my queries in short time.

      Regarding Point 3) we require a feature like a Wowza DVR is it possible to achieve the same on NUBOMEDIA.

      And regarding point 5) I think iOS, Android and Web SDKs are open source so can we add the feature of local recording to the SDKs if possible through WebRTC.

      Thanks and Regards
      Varun

      Reply
        Luis Lopez says:
        August 22, 2016

        Hi again,

        I don’t know much about Wowza DVR, hence, I don’t know if you can reproduce its features with NUBOMEDIA. As a final message, keep in mind that whenever low-latency is not required, live streaming based on protocols such as HLS and MPEG-DASH will always outperform WebRTC both in terms of scalability and quality. WebRTC miss many features of such protocols, but in exchange provides low latency.

        Reply

Comment