Distributed-Cloud-Applikationen versprechen im digitalen Zeitalter skalierbare, elastische und breit verfügbare Lösungen. Allerdings stehen viele Unternehmen vor der Frage, ob sie die Technik überhaupt für ihre Zwecke nutzen können, und wenn ja, wie? Ein Paradebeispiel ist etwa der Streaming-Anbieter Netflix.

Neben Netflix gibt es nur wenige Unternehmen, die einen vergleichbar großen Einfluss darauf haben, wie die Menschen Medieninhalte heutzutage konsumieren – aus gutem Grunde: Denn im April 2019 hatte Netflix weltweit rund 148 Millionen Kunden und war in über 190 Ländern verfügbar.

Einer der Grundsteine des globalen Siegeszugs der erfolgreichsten Streaming-Anbieter liegt in der technologischen Ausrichtung und Plattform der Unternehmen. Der Weg zum Erfolg war für manche indes durchaus steinig. Damit moderne Plattformen für die Streaming-Dienste von heute überhaupt entstehen konnten, muss ein Anbieter drei zentrale Problemstellungen lösen: maximale Skalierbarkeit, schnelle Elastizität und globale Verfügbarkeit. Mit diesen Herausforderungen konfrontiert, setzte Netflix bereits sehr früh auf den Ansatz einer Distributed-Cloud-Applikation. Dieses Konzept bot schließlich die Möglichkeit, weltweit eine dynamisch skalierbare Medienplattform zur Verfügung zu stellen.

Neben den Streaming-Anbietern gibt es auch in anderen Branchen den Bedarf nach schnell skalierbaren und global verteilten Systemen. Ein weiterer sehr prägnanter Anwendungsfall hierfür ist etwa die Automobilindustrie. Autos sind mittlerweile längst mehr als ein Fortbewegungsmittel. Neue Modelle verfügen meist über ein erweitertes Applikationsportfolio und sammeln Daten, die sie zur Analyse in das Backend des Automobilherstellers übertragen müssen. Wie bei Streaming-Diensten auch, besteht dabei eine der größten Herausforderungen darin, die performante Übertragung von großen Datenmengen weltweit sicherzustellen.

Option für eine verteilte Architektur

Eine Distributed Cloud Applikation steht hier als Lösungsoption für eine verteilte Architektur, die eine geringere Distanz zwischen Angebot und Nutzer und damit eine konstante Service-Qualität über unterschiedliche geografische Standorte gewährleistet. Für den Kunden ist es vor allem ein Qualitätsmerkmal, wenn sich Medieninhalte unterbrechungsfrei und mit geringer Latenz streamen lassen – und das jederzeit und rund um den Globus. Um genau dieses von den Nutzern geforderte Qualitätsmerkmal zu erfüllen, können sich die Organisationen einiger Konzepte und Werkzeuge bedienen. Dazu zählt unter anderem eine Micro-Service-Architektur, die Verwendung eines Content Delivery Networks (CDN) sowie die Umsetzung einer spezifischen API-Architektur.

Die erwähnten Micro-Services und/oder ein Function-as-a-Service-Modell (FaaS) bilden die Grundlage für die notwendige Skalierbarkeit. Die Anforderungen beispielsweise an entsprechende Streaming-Anbieter verlangen eine Herangehensweise, die auf Anfrage eine schnelle Skalierung bei gleichzeitiger hoher Performance, Sicherheit und Verfügbarkeit gewährleistet.

Anstatt alle Funktionen in einer großen monolithischen Applikation umzusetzen, stellt eine Micro-Service-Architektur eine Sammlung lose gekoppelter Dienste dar. Jeder Service hat eine separate Codebasis und lässt sich unabhängig von einem Entwicklungsteam verwalten und verändern. Services kommunizieren dabei mittels definierter APIs miteinander und können unterschiedliche Technologie-Stacks, Bibliotheken und Frameworks verwenden. Die Granularität – und somit die Anzahl der Services – richtet sich dabei nach den individuellen Bedürfnissen und Anforderungen. Eine hohe Granularität erzeugt zum einen mehr Unabhängigkeit zwischen der Entwicklung und Skalierung einzelner Funktionsbausteine, erhöht aber auch den Integrationsaufwand zwischen den einzelnen Services.

Als Fundament für die Bereitstellung der Funktionalität kann neben Containerplattformen wie Kubernetes auch Function-as-a-Service fungieren. Viele Anbieter setzen seit einiger Zeit unter anderem auf FaaS durch AWS Lambda. Neben dem Angebot von AWS gibt es aber noch weitere Services wie zum Beispiel Google Cloud Function, Azure Functions und die Open-Source-Lösung OpenWhisk. FaaS bietet eine weitere Abstraktionsebene, die eine funktionierende, gemanagte Laufzeitumgebung zur Verfügung stellt und realisiert das Prinzip von „Serverless Computing“, indem Entwickler einzelne Funktionen für die Nutzung bereitstellen. Diese einzelnen Funktionen können innerhalb von Sekunden reagieren und einzelne Requests und Events bedienen.

 

Funktionsweise einer Distributed Cloud anhand eines Play-Requests. Bild: Apiida

Die Distributed Cloud in der Praxis

Die Funktionsweise einer Distributed Cloud Applikation lässt sich anhand eines Play-Requests gut veranschaulichen (siehe Grafik). Die OCAs schicken in regelmäßigen Abständen ihren Status und Informationen über gefundene Routen zu den Endgeräten und den Stand der aktuell gehosteten Videodateien an den Cache-Control-Service (CCS) in der Cloud (1).

Bei der Auswahl eines Videos auf einem Endgerät geht ein Request dann via API an den Client-Adapter in der Cloud (2). Im Backend prüft das System die Autorisierung des Benutzers, die Lizenz, das notwendige Datenformat und die aktuellen Netzwerkbedingungen (3).

Der Steuer-Service (CODA) verwendet dabei die im CCS gespeicherten Informationen, um die OCAs mit den besten Bedingungen auszuwählen und generiert daraufhin eine URL für den Aufruf der in den OCA gespeicherten Inhalte (4). Das Cloud Backend sendet die URLs für den Aufruf der Videodateien auf den OCAs an den Client (5), während die über die URL aufgerufenen OCAs die benötigten Videodateien wiederum an den Client streamen (6).

Eine der offensichtlichen Herausforderung für Streaming-Anbieter ist es, dass sich Inhalte von einer Vielzahl von Endgerätetypen abrufen lassen müssen. Dies birgt gewisse Schwierigkeiten, da es schließlich die Kompatibilität zwischen einzelnen Herstellern und Typen von Endgeräten wie TV-App, Konsolen-App, Mobile App etc. für eine breite Nutzerschicht zu garantieren gilt.

Je nach Art des Clients spricht die individuelle API das Frontend eines dedizierten Client-Adapters an (bei Netflix zum Beispiel „Play API“). Der Client-Adapter setzt daraufhin alle für die Antwort notwendigen Aufrufe in das Server-seitige Backend an weitere private APIs ab, sammelt die Rückmeldungen, verwaltet eventuell aufgetretene Fehler und bereitet die Antwort an den Client Endgeräte-gerecht auf. Der Client-Adapter liefert dabei als Antwort jeweils „header“ und „body“. Wie beschrieben, lassen sich durch den Client-Adapter auf dem Server benutzerdefinierte Endpunkte bereitstellen und die API-Entwicklung auf die UI-Teams verteilen – sowie unabhängig erstellen und verändern. Möglich ist dies, weil die Konsumenten der privaten API, die Teil des Client Adapters sind, die Streaming-Anbieter-Oberfläche der einzelnen Endgerätetypen selbst sind.

Neues Videomaterial wird von den Streaming-Anbietern vor Abruf in die vielen für die unterschiedlichen Endgeräte notwendigen Formate übersetzt. Neben dem Faktor der Endgeräte spielen die Netzwerkqualität und die geografische Lokation ebenfalls eine Rolle bei der Erstellung der verschiedenen Videoformate. Die von den unterschiedlichen UI-Teams entwickelten APIs sorgen dafür, dass das für das Endgerät und die Lokation korrekte Videoformat zurückgegeben.

Die hohen Ansprüche an ein weltweit verbreitetes Videoangebot mit geringer Latenz haben dazu geführt, dass beispielsweise Netflix ein eigenes Content Delivery Network entworfen hat. Das sogenannte Open Connect steht unter der Open-Source-Lizenz und ist ein Netzwerk an verteilten Server, die Videoinhalte auf Basis der geografischen Position zur Verfügung stellen. Diese Server, auch Open Connect Appliances (OCA) genannt, baut das System verteilt bei Internet Service Providern (ISP) auf.Fortschrittliche Streaming-Anbieter schaffen es längst, verteilte Cloud-Applikationen im globalen Kontext umzusetzen. Zumal eine Vielzahl moderner Anwendungen eine verteilte Cloud-Infrastruktur nahelegt. Für den Erfolg entsprechender Applikation sorgen zukunftsfähige Technologien, die durch maximale Skalierbarkeit des Streaming-Angebots, schnelle Elastizität und globale Verfügbarkeit überzeugen. Um die Qualitätsansprüche ihrer Anwender zu erfüllen, nutzen die Streaming-Anbieter also Micro-Services und FaaS um ihre Elastizität zu erhöhen und schnell auf Nutzerwünsche und -bedürfnisse wie etwa lokale Sprachübersetzungen reagieren zu können. Gleichzeitig ermöglicht die Anwendung eines CDNs die notwendige Skalierbarkeit, um die zentralen, weltweit verfügbaren Inhalte anbieten zu können.

Rebecca Bausinger und Dimitrios Pantouveris sind Product Manager beziehungsweise Services Consultant bei Apiida, www.apiida.com.