A team of experienced leaders from the TV industry came up with the idea of using this exclusive broadband infrastructure to set up the leading IPTV brand. The aim was to bring digital TV to an increasingly digital audience, while simultaneously transforming the TV advertising market. Digital, personalised TV naturally allows advertisers to advertise more precisely, less intrusively, and more interactively than traditional broadcast television. The plan involves using customers’ smartphones as smart remote controls—after all, there is no other digital device with which users interact as often and as intimately.
inovex was able to get in on the ground at the development of waipu.tv, and was significantly involved in the design and implementation of the backend and the mobile applications for Android and iOS, as well as in assembling the development teams themselves.
And with success: during the Corona crisis the demand for streaming went through the roof – Head of waipu.tv Christoph Bellmer sums up:
Microservices ensure scalability
Developing a new, multi-million-user streaming service from the ground up is a massive challenge. It is also, however, the perfect opportunity to put the latest architectures and development methods into practice. inovex made the most of this opportunity when the company collaborated with EXARING to design and implement the waipu.tv backend.
As waipu.tv was a new player entering an existing market (and expecting rapid growth), scalability was one of the fledgling project’s first requirements. In order to ensure this, the project was designed around a microservices architecture, i.e. one comprising small, standalone, linked services which can be flexibly replicated and swapped out.
The backend comprises around thirty such services. These include video streaming, the electronic program guide (EPG) and the recording function, as well as user registration and administration. But even functions which are not externally visible, such as the generation of video preview images or rights management for the various subscription models, are implemented as standalone services: There is, therefore, a fundamental distinction between the types of service which are accessed via an API or GUI and those which are used exclusively for internal processing.
In addition to allowing systems to grow with user numbers and requirements, microservices also enable them to react quickly to spikes in load. Major load spikes usually affect only certain aspects of the overall architecture: user registration will spike, for example, during active campaigns to attract new customers, while usage is heavy during the Sunday evening crime shows. Both services run – as do the program guide (EPG), the recording function and many other – independently and redundantly. This ensures that, if one service fails, the system can immediately switch over to a replacement, while usage spikes can be handled by adding additional instances. Each service even manages its own data persistence, rendering it completely independent of any central database system. This means that heavy loads on individual services pose no problems for the stability of the system as a whole.
In creating this type of architecture, the clear delineation of individual services and the definition of their interfaces play central roles.
Microservices do not just distinguish themselves in terms of their stability and scalability. Agile project management and the use of small development teams eliminate the need for a dedicated operations team. Maintaining the individual services is thus the responsibility of the people who designed and developed them, a concept that facilitates smooth and efficient operations.
100 % Cloud, 100 % in Germany
One important pillar underlying waipu.tv’s flexibility and stability is the complete outsourcing to Amazon Web Services (AWS). The implementation of the services using EC2 instances enables rapid scaling, whereas the use of Functions as a Service (AWS Lambda) as the smallest functional unit further simplifies the microservices architecture.
In order to comply with the target group’s data protection requirements, all data is stored and processed only at Amazon’s data centre in Frankfurt in Germany.
State-of-the-art, polyglot architecture
The services themselves are based on Java Virtual Machine (JVM) and are, to a large extent, written in Java in order to create a universal, easily readable code basis. The JVM also enables the seamless use of Clojure, the Lisp dialect which is used in this project. Unlike object-oriented Java, Clojure encourages a functional style with short, concise code, which permits considerably leaner structures. In addition, Clojure lends itself to interactive development in a REPL (Read-Eval-Print Loop), which enables new features to be more rapidly tested than they can through laborious compiling of the entire code, which is the case in many Java programming environments. Also lending itself to the use of a microservices architecture is the easy implementation of concurrency and statefulness enabled by Clojure.
For the development of the services, the EXARING team and inovex created a heavily automated pipeline. This enables the program-based deployment of features on the development system. In order to maintain quality control, however, publication to the preview and productive systems is still triggered manually. This human intervention does not, however, cause any problems with the development speed, as data is published to the productive system at least once a day.
Whereas the pipeline is currently based on GitLab CI and administered using Terraform, the company plans to move the services to Docker with Kubernetes orchestration in the near future.
The entire waipu.tv project is characterised by forward-thinking planning, from laying the dedicated fibre optic infrastructure right through to the architecture of the finished product. In inovex, EXARING found the perfect partner. inovex’s years of experience with the most diverse technologies enabled the project to be perfectly tailored to EXARING’s requirements.
This meant that the resources required for the project, from the Minimum Viable Product stage to the rollout of the app, were both manageable and capable of handling sudden leaps in growth.
- 30+ Services
- 60+ EC2 instances
- 20 million/2 terabytes of EPG images
- 50+ Git Repositories
- 9 Redis instances (AWS ElastiCache)
- 7 PostgreSQL instances (AWS RDS)
- Amazon Web Services
- GitLab CI