Chat with your data: Unternehmensdaten als Basis für einen eigenen KI-Assistenten nutzen.
Zum Angebot 

EXARING AG Entwicklung eines skalierbaren Microservice Backends für den Streaming Service waipu.tv

Technologien

Projektzeitraum 2015 - 2017

Kundennutzen

  • vorausschauende Planung
  • bedarfsgerechte Entwicklung
  • überschaubarer und auf sprunghaftes Wachstum vorbereiteter Ressourcenbedarf

Märchen beginnen mit „Es war einmal“, Success Stories mit einer Vision. In diesem Fall mit der Vision der EXARING AG, einen Glasfaserring mit sehr großer digitaler Bandbreite für eine innovative TV-Plattform zu nutzen.

Ein Team von erfahrenen Führungskräften aus dem TV-Business hatte die Idee, auf dieser exklusiven Breitband-Infrastruktur die führende IP-TV-Marke zu errichten, die digitales Fernsehen zu einem immer digitaleren Zuschauer:innen bringt und gleichzeitig den TV-Werbemarkt transformiert. Denn digitales, personalisiertes Fernsehen bietet natürlich die Möglichkeit, viel präziser, unaufdringlicher und interaktiver zu werben als das klassische TV-Broadcasting. Dabei sollen die Smartphones der Anwender:innen als smarte Fernbedienungen eine große Rolle spielen, denn mit keinem anderen digitalen Gerät wird so persönlich umgegangen wie mit diesen mobilen Devices.

inovex hatte die Möglichkeit, die Entwicklung von waipu.tv von Anfang an zu begleiten, und war dabei maßgeblich an der Konzeption und Umsetzung des Backends, der mobilen Anwendungen für Android und iOS sowie der Organisation der Entwicklungsteams selbst beteiligt.

Und das mit Erfolg: waipu.tv-Chef Christoph Bellmer resümiert zur Zeit der Corona-Krise, während derer der Streaming-Bedarf rapide nach oben schnellte:

Dank der Qualität unserer Software – übrigens ausschließlich 'made in Germany' – und unserer Glasfaserinfrastruktur ist die Qualität und Zuverlässigkeit auch in diesen Tagen vollständig unkompromittiert.

Christoph Bellmer

waipu.tv-Chef

Einen neuartigen, auf Millionen Nutzer:innen ausgelegten Streaming-Service von Grund auf aufzubauen stellt eine große Herausforderung dar, bietet aber auch die Möglichkeit, modernste Architekturen und Entwicklungsmethoden in der Praxis anzuwenden. Diese Möglichkeit nahm inovex wahr, als es darum ging, gemeinsam mit EXARING das Backend von waipu.tv zu entwerfen und umzusetzen.

Da waipu.tv als neuer Player einen bestehenden Markt betrat, auf dem es schnell wachsen sollte, war Skalierbarkeit eine der ersten Anforderungen an das noch junge Projekt. Um diese zu gewährleisten, setzte man auf eine Microservice-Architektur, also kleine, in sich geschlossene und miteinander verbundene Dienste, die flexibel repliziert und ausgetauscht werden können.

Das Backend besteht aus etwa 30 solcher Dienste. Diese umfassen unter anderem das Video-Streaming, die elektronische Programmvorschau (EPG), die Aufnahmefunktion sowie die Nutzeranmeldung und -verwaltung. Aber auch nach außen hin nicht sichtbare Funktionen wie die Generierung der Vorschaubilder aus Videos und die Rechteverwaltung nach Abo-Modell sind als einzelne Services realisiert: Es wird also grundsätzlich zwischen solchen Diensten unterschieden, die per API oder GUI ansprechbar sind, und solchen, die der internen Verarbeitung dienen.

Neben der Möglichkeit, bedarfsgerecht mit der Nutzer:innenzahl zu wachsen, erlauben es Microservices auch, schnell auf Lastspitzen zu reagieren. Denn solche Lastspitzen betreffen in der Regel nur einzelne Aspekte der Gesamtarchitektur, etwa die Registrierung von Nutzer:innen während laufender Werbekampagnen zur Gewinnung von Neukund:innen oder den Krimi-Stream am Sonntagabend. Beide Dienste laufen – ebenso wie die Programmvorschau (EPG), die Aufnahmefunktion und viele weitere – unabhängig und redundant, sodass im Falle des Ausfalls einzelner Services ohne Verzögerung Ersatz geschaffen werden kann und Lastspitzen durch das Hinzufügen weiterer Instanzen abgefangen werden können. Sogar die Datenpersistenz verwaltet jeder Service selbst, ganz ohne Abhängigkeit von einem zentralen Datenbanksystem. So stellt die starke Belastung einzelner Dienste keinerlei Gefahr für die Stabilität des gesamten Systems dar.

Um eine solche Architektur zu ermöglichen, spielte die klare Abgrenzung einzelner Dienste sowie die Definition ihrer Schnittstellen eine zentrale Rolle.

Doch nicht nur hinsichtlich ihrer Stabilität und Skalierbarkeit zeichnen sich Microservices aus. Durch das agile Projektmanagement und den Einsatz kleiner Entwicklungsteams entfällt die Beschäftigung eines dedizierten Operations-Teams. So liegt die Pflege der einzelnen Dienste in den Händen derer, die sie auch entworfen und entwickelt haben – ganz ohne Reibungsverluste.

100 % Cloud, 100 % in Deutschland

Skizze der Mikroservice-Architektur von Exaring

Einen wichtigen Pfeiler der Flexibilität und Stabilität von waipu.tv stellt die komplette Auslagerung auf Amazons Web Services (AWS) dar. Die Realisierung der Services mit EC2-Instanzen ermöglicht eine schnelle Skalierung, während die Verwendung von Functions as a Service (AWS Lambda) als kleinste funktionelle Einheit die Microservice-Architektur weiter vereinfacht.

Um den Datenschutzansprüchen der Zielgruppe gerecht zu werden, erfolgt die komplette Datenhaltung und -verarbeitung außerdem nur in Amazons Rechenzentrum in Frankfurt.

Die Services selbst setzen auf die Java Virtual Machine (JVM) und sind zu einem guten Teil in Java geschrieben, um eine allgemeine, leicht lesbare Codebasis zu schaffen. Die JVM ermöglicht allerdings auch die nahtlose Verwendung des Lisp-Dialekts Clojure, der in diesem Projekt zum Einsatz kommt. Im Gegensatz zum objektorientierten Java fördert Clojure einen funktionalen Stil mit kurzem und prägnantem Code, der deutlich schlankere Konstrukte zulässt. Zudem bietet sich Clojure für die interaktive Entwicklung in einer REPL (Read-Eval-Print Loop) an, mit der neue Features schneller getestet werden können als durch das aufwändige Kompilieren des kompletten Codes, das in vielen Java-Programmierumgebungen gängig ist. Für die Verwendung in einer Microservice-Architektur spricht außerdem die unkomplizierte Implementierung von Nebenläufigkeit und Statefulness, die Clojure ermöglicht.

Für die Entwicklung der Services schuf das Team von EXARING und inovex eine stark automatisierte Pipeline. Diese ermöglicht das programmatische Deployment von Features auf das Development-System, während die Veröffentlichung auf den Preview- und Produktionssystemen aus Qualitätssicherungsgründen noch manuell angestoßen wird. Unter diesem menschlichen Eingriff leidet die Entwicklungsgeschwindigkeit allerdings keinesfalls, ist doch durchweg pro Tag mindestens eine Veröffentlichung auf das Produktivsystem angesetzt.

Während die Pipeline momentan auf GitLab CI basiert und Terraform zur Verwaltung verwendet wird, ist für die nahe Zukunft die Umstellung der Services auf Docker mit Kubernetes-Orchestrierung vorgesehen.

Das ganze Projekt waipu.tv ist von vorausschauender Planung geprägt: Vom Verlegen der eigenen Glasfaserinfrastruktur bis hin zur Architektur des fertigen Produkts. Mit inovex fand EXARING den passenden Partner, der dank seiner jahrelangen Erfahrung mit verschiedensten Technologien eine bedarfsgerechte Entwicklung ermöglichte.

So war der Ressourcenbedarf vom Minimum Viable Product bis zum Rollout der Apps gleichzeitig überschaubar und doch auch auf sprunghaftes Wachstum vorbereitet.

Haben Sie weitere Fragen?

Tobias Bayer

Backend Services