Supporting a monolithic backend for video streaming
The M3 company, which is part of the NMG, develops the More.tv and CTC online cinemas, as well as the websites of the group's TV channels. Evrone maintains and develops the platform through which all video content enters these products — the hardware and software complex (HSC). We write the code and advise the client's partners on the server side of the project.
The software part is needed so that videos for different broadcast channels can get there in the desired format, with specific encoding and additional service information. They can also use the administration panel to manage advertising on the channel websites. So, the HSC is vital for the holding's business tasks, and it must run smoothly.
We partnered with M3 when they were looking for a technical team that could handle the revamping of their Videomore product into a streaming platform like Netflix. At that time, it didn’t meet the user requirements for streaming services. So, we decided to create a new More.tv service, based on their current product.
The HSC was part of the Videomore administration system, and other streaming channels (including channel websites) were connected to it, since its functionality at that time was convenient. There were common APIs, and some projects had a common database.
Due to the relaunch of the product on a new technology stack, much of the functionality of the HSC had to be changed. But its codebase was already several years old, which meant that working with it required caution. We had to make changes in a way that would not break anything.
Since it is simply impossible to redevelop something in a few months, that has been slowly built up over several years, the development team had to have experience simultaneously supporting a project and integrating new parts into it. Evrone had this experience, as well as expertise in Ruby on Rails, which is why we were invited to help with building the video streaming app by working on the backend of the new service.
Over the years, we have added new features and ensured the stability of the HSC, which is a monolithic Rails application:
- We maintain the current code base
- We help the client's internal teams divide some of the functions into microservices
- We cover the project with tests to track problems
- We introduce new features and document them to make them easier to work with
Thanks to our efforts, the client’s video streaming software solution runs smoothly. All channel websites receive the necessary content in the correct resolution and format, and users can watch their favorite videos without delays or freezes.
The most serious challenge that we have faced on this project is that the project websites work on new technologies, while the HSC relies on old ones. To solve this problem, the client's internal teams are developing new microservices that will eventually take over all the work. But this is a long process, so in the meantime, we link these services to the current solution, with improvements.
API for video players
Video players on partner websites have new functions, so we have developed an API for receiving playback quality parameters, streamlining the data-processing pipeline and making it possible to quickly send the necessary data about video files.
New video converter
The old video converter did not support the required bitrates and encoding profiles, so it had to be changed. In addition to formats, support for HLS/DASH with and without encryption, packaging and encryption on the fly, integration with a new storage scheme on media servers, and other microservices were required.
Now, videos are downloaded on the HSC side. The HSC sends a video to the converter and receives the desired result in response. The final video, in the required format and resolution, is sent to the video player on the channel website.
Integrating third-party services
Some tasks can be solved using third-party services. For example, we have integrated the ViPlaner service, which transmits data about the TV programs of different channels, and on the HSC side, TV program slots are matched with project entities.
Step by step, we are covering the entire codebase with tests. This helps us to understand how different parts of the HSC are arranged, so that we can plan changes in advance and not break anything during the revision process. We have also added an error-monitoring system and are actively using it to learn where the weak and strong points are in the project and which problems need to be solved first.
Our routine work directly affects the client's business performance. We are helping people who use the HSC every day to manage channel websites and content. Previously, any errors or delays prevented them from posting videos and ads, viewing live streaming stats, and analyzing the results of their work. Now everything runs smoothly.
For us, this case is an example of real, plain development. Every day, together with the client, we solve problems that may seem boring at first glance. But this work is the foundation for experiments and growth.
Eventually, our client wants to completely abandon the HSC, since it is a monolithic and heavy solution. Video balancing, playback configuration, and the event mediator have already been moved into separate microservices. After a complete transition, it will be possible to get rid of database sharing between several projects, and the technical connectivity of websites with each other will decrease, which will increase reliability. This will also result in a more scalable video streaming app architecture, allowing them to scale products independently.
In addition, technical responsibilities will be shared more clearly among the internal development teams, both from a technical and managerial point of view. Independent teams will be able to work at their own pace, which is more convenient for solving business problems.
But this is not a fast process, so we will continue to support the current solution and make improvements, as we help the client manage a transition from monolith to microservices. Our goal, as we further develop and build the video streaming platform, is to make the work and transition invisible to end-users. Current plans include changes in statistics collection, more flexible advertising settings, and changes in the process of transcoding.
If you want to create a streaming service, a video player with a convenient streaming API, or you are looking for a team that is ready to take on a large project with a long history, contact us using the form below.