Phase 3: Skalierung von Tausenden von Anwendungsfällen

Ein Jahr nach der ersten Einführung des Keystone-Produkts stieg die Anzahl der Anwendungsfälle im gesamten Unternehmen schnell von weniger als einem Duzend 2015 auf einige Hundert 2017. Wir hatten zu diesem Zeitpunkt eine solide operative Grundlage geschaffen: Kunden wurden selten während der Bereitschaft benachrichtigt, und alle Infrastrukturprobleme wurden vom Plattformteam engmaschig überwacht und behoben.

Stellenmarkt
  1. Business Development Manager (m/w/d)
    Westnetz GmbH, deutschlandweit
  2. Systemadministrator*in (m/w/d) Netzwerk- und Internetdienste
    Universitätsmedizin der Johannes Gutenberg-Universität Mainz, Mainz
Detailsuche

Wir hatten eine stabile Plattform für die Bereitstellung aufgebaut, über die unsere Kunden Änderungen binnen weniger Minuten produktiv stellen konnten.

Das Keystone-Produkt erfüllte den Zweck, für den es ursprünglich entwickelt wurde, hervorragend: eine Routing-Plattform für Streamingdaten, die benutzerfreundlich und fast unendlich skalierbar ist. Bald wurde jedoch deutlich, dass wir weit unter den vollen Möglichkeiten bei der Streamverarbeitung blieben.

Bei unseren Bemühungen, benutzerdefinierte Anwendungsfälle zu erfüllen, stießen wir immer wieder auf neue Anforderungen nach detaillierterer Steuerung komplexer Verarbeitungsfunktionen wie Streamingverbindungen, Fenstererstellung und anderes.

Golem Karrierewelt
  1. Kubernetes – das Container Orchestration Framework: virtueller Vier-Tage-Workshop
    29.08.-01.09.2022, Virtuell
  2. Deep-Dive Kubernetes – Production Grade Deployments: virtueller Ein-Tages-Workshop
    20.09.2022, Virtuell
Weitere IT-Trainings

Inzwischen besitzt Netflix eine einzigartige Kultur der Freiheit und des Verantwortungsbewusstseins, in der jedes Team eigene technische Entscheidungen treffen kann. Diese Kultur bietet jedem Team die Möglichkeit, sogar in maßgeschneiderte Lösungen zu investieren. Als zentrales Plattformteam haben wir enormes Wachstum erfahren. Wenn wir keine Möglichkeit fänden, alles abzudecken, kämen langfristig hohe Kosten auf das Unternehmen zu.

Es war also an der Zeit, dass das Team seine Reichweite vergrößerte. Und wieder standen wir vor neuen Herausforderungen.

Herausforderungen in Phase 3

Herausforderung 1: Benutzerdefinierte Anwendungsfälle erfordern eine andere Erfahrung für Entwickler und operativen Betrieb. Zunächst stelle ich zwei Beispiele für benutzerdefinierte Anwendungsfälle bei der Streamverarbeitung vor.

Erstens: Berechnen der Streaminggrundlagen für Empfehlungen. Damit der Empfehlungsalgorithmus von Netflix eine möglichst gute Erfahrung bietet, muss das Modell mit den neuesten Daten trainiert werden. Eine Variante des Inputs zum Trainieren des Modells ist der Datensatz für Label. Die Label liefern die direkten, zugrundeliegenden Anzeichen dafür, ob die vorherigen personalisierten Prognosen passten oder nicht.

Wenn sich der Benutzer einen empfohlenen Film ansieht, wird ein positives Label vergeben. Wie sich schon vermuten lässt, ist Geschwindigkeit wichtig: Je schneller wir einen solchen Datensatz erstellen, umso schneller erhalten wir die Feedbackschleife für das maschinelle Lernen.

Um die Label zu berechnen, müssen wir den Wirkungsstream und den Stream mit Benutzerklicks zusammenführen. Die Benutzerklicks kommen allerdings häufig erst später an. So lassen sich manche Benutzer einige Minuten Zeit für die Entscheidung oder lassen ihre Geräte stundenlang eingeschaltet, ohne etwas anzusehen. Für den Anwendungsfall muss die Streaming-Pipeline die Label ausgeben, sobald alle relevanten Informationen eingegangen sind. Dabei gilt jedoch auch Toleranz gegenüber später eingehenden Informationen.

Zweitens: Berechnen des Übernahmeanteils bei Empfehlungen. Netflix gibt personalisierte Empfehlungen, um die Benutzererfahrung zu optimieren. Eine Variante ist ein Algorithmus zur Auswahl der am besten personalisierten künstlerischen Darstellung (und der besten Positionierung dafür), um den Übernahmeanteil beim Benutzer zu optimieren.

Intern berechnet eine Pipeline für die Streamverarbeitung diese Metrik für den Übernahmeanteil annähernd in Echtzeit, indem der Datenstream für die Wiedergabe mit dem Wirkungsstream über ein benutzerdefiniertes Fenster zusammengeführt wird. Aufgrund des Umfangs von Hunderten von Millionen Netflix-Nutzern muss der Streaming-Job konstant den internen Status überprüfen, was Checkpoints zwischen ein und zehn Terabyte umfasst.

  • Verschieben der Daten vom Rand zum Data Warehouse (Bild: Zhenzhong Xu)
  • Fehleranfällige Architektur mit Batch-Pipeline vor der Migration (Bild: Zhenzhong Xu)
  • Keystone-Streamingarchitektur nach der Migration (Bild: Zhenzhong Xu)
  • So unterstützt die Streamverarbeitung den Umgang mit operativen und analytischen Daten. (Bild: Zhenzhong Xu)
  • Trennung der Bedenken für unterschiedliche Szenarien bei der Streamverarbeitung (Bild: Zhenzhong Xu)
  • Diagramm zur sich entwickelnden Keystone-Architektur, circa 2016. Keystone enthält Kafka- und Flink-Engines als Kernkomponenten. Weitere Details zum technischen Design finden sich in Blogposts mit dem Schwerpunkt Kafka und Flink. (Bild: Zhenzhong Xu)
  • Keystone-UI zeigt eine Drag-and-Drop-Erfahrung im Self-Service, die von einer voll verwalteten Streamingarchitektur mit mehreren Mandanten gestützt wird. (Bild: Zhenzhong Xu)
  • A/B-Test zur Auswahl der besten künstlerischen Darstellung für die Personalisierung (Bild: Netflix)
  • Architektur mit Abtrennung der Flink-Plattform als separatem Produkteinstiegspunkt (Bild: Zhenzhong Xu)
  • Abstimmung der Streamverarbeitung in Netflix - 2021 (Bild: Zhenzhong Xu)
  • Optimalpunkt zwischen Einfachheit und Flexibilität (Bild: Zhenzhong Xu)
A/B-Test zur Auswahl der besten künstlerischen Darstellung für die Personalisierung (Bild: Netflix)

Diese Anwendungsfälle nutzen fortschrittlichere Streamverarbeitungsfunktionen, beispielsweise komplexe Semantiken für Ereignis-/Verarbeitungszeit und Fenster, zulässige Verspätung, umfangreiches Checkpoint-Management. Zudem ist mehr operativer Support in den Bereichen Beobachtbarkeit, Fehlerbehebung und Wiederherstellung erforderlich.

Dafür müssen Entwickler ihr Vorgehen komplett umstellen und flexiblere Programmierschnittstellen und operative Funktionen wie einen benutzerdefinierten Stack für die Beobachtbarkeit, Funktionen zum Hinterfüllen sowie eine geeignete Infrastruktur für die Verwaltung vieler Terabyte lokaler Zustände nutzen. Das alles gab es bei Keystone nicht. Wir mussten also einen neuen Produkteinstiegspunkt schaffen und gleichzeitig redundante Investitionen möglichst gering halten.

Herausforderung 2: Ausgleich zwischen Flexibilität und Einfachheit. Mit all den neuen benutzerdefinierten Anwendungsfällen mussten wir das richtige Maß für die Kontrollexposition finden. Es gab die Möglichkeit, alles bis zur API auf der untersten Ebene zu exponieren, was aber eine deutlich größere operative Herausforderung bedeutete (da wir nie in der Lage sein würden, vollständig vorwegzunehmen, wie die Nutzer die Engine einsetzen). Oder wir konnten einen Mittelweg einschlagen (also nur eingeschränkte Funktionen exponieren) mit dem Risiko, dass die Kundenzufriedenheit litt.

Herausforderung 3: Höhere operative Komplexität. Durch die Unterstützung benutzerdefinierter Anwendungsfälle mussten wir den Freiheitsgrad der Plattform erhöhen. Folglich musste die operative Beobachtbarkeit in vielen komplexen Szenarien ebenfalls erhöht werden. Da zu der Zeit auch die Integration der Plattform mit vielen anderen Datenprodukten erfolgte, erhöhten sich die Berührungspunkte unseres Systems. Dies erforderte eine operative Koordinierung mit anderen Teams, um unsere gemeinsamen Kunden besser zu unterstützen.

Herausforderung 4: Zentrale Plattform oder lokale Plattform. Unser Team war dafür zuständig, eine zentralisierte Plattform für die Streamverarbeitung bereitzustellen. Aufgrund der vorherigen Strategie mit dem Fokus auf Einfachheit hatten allerdings manche Teams schon viel in ihre lokalen Plattformen zur Streamverarbeitung investiert und dabei teilweise nicht unterstützte Technologien wie Spark Streaming eingesetzt. Wir mussten sie nun davon überzeugen, auf einen schon vorhandenen Weg zurückzukehren, um das Risiko zu verringern, dass die Plattform gar nicht genutzt würde und Ressourcen für redundante Investitionen vergeudet würden. Jetzt ist die Zeit gekommen, um benutzerdefinierte Anwendungsfälle zu nutzen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed

Zusammenfassung zu Streamverarbeitungsmustern in Phase 3

MusterProduktAnwendungsfälle
Verbindungen zwischen Streams (ETL)FlinkBerechnung des Übernahmeanteils, Berechnung der Label für Empfehlungsdienst
Verbindungen zwischen Stream und Tabelle (ETL)FlinkZusätzlicher Input: Streams verbinden mit langsamer Iceberg-Tabelle
Streamingsitzung (ETL)FlinkPersonalisierungssitzung, Metrikensitzung
Beobachtbarkeit in EchtzeitMantisVerteilte Nachverfolgung, Chaos EXPER-Überwachung, Anwendungsüberwachung
Anomalie-/Betreugserkennung in EchtzeitMantis, FlinkKontextwarnung, PII-Erkennung, Verhindern betrügerischer Anmeldungen
DevOps-Entscheidung in Echtzeit
Tool
MantisAutomatische Skalierung, Streaming ACA und A/B-Tests, Optimierung der CDN-Platzierung
Ereignisquelle
Materialansicht
FlinkContent Delivery Network Snapshots
Streamverarbeitungsmuster in Phase 3
 Strategiewetten und Erkenntnisse in Phase 2Strategiewetten und Erkenntnisse aus Phase 3 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 10
  12. 11
  13.  


Aktuell auf der Startseite von Golem.de
Google Fonts
Abmahnungen an Webseitenbetreiber mit Google-Schriftarten

Nach einer Entscheidung des Landgerichts München erhalten Webseitenbetreiber mit eingebundenen Google Fonts vermehrt Abmahnungen.

Google Fonts: Abmahnungen an Webseitenbetreiber mit Google-Schriftarten
Artikel
  1. Programmiersprache: JSON-Erfinder will Javascript in Rente schicken
    Programmiersprache
    JSON-Erfinder will Javascript in Rente schicken

    Douglas Crockford, der Erfinder des Datenformats JSON und Mitentwickler von Javascript, findet, dass die Sprache in Rente geschickt werden sollte.

  2. Paw Patrol: US Space Force schickt Roboterhunde auf Patrouille
    Paw Patrol
    US Space Force schickt Roboterhunde auf Patrouille

    Die US Space Force wird einen hundeähnlichen Roboter von Ghost Robotics auf Patrouille schicken, um Personalkosten zu senken.

  3. Windows auf dem Mac: Parallels wird merklich teurer
    Windows auf dem Mac
    Parallels wird merklich teurer

    Parallels 18 bietet eine native Unterstützung für Windows 11 und eine bessere Ressourcenzuweisung. Allerdings wird die Software teurer.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Günstig wie nie: WD SSD 1TB m. Kühlkörper (PS5) 119,90€, MSI 29,5" 200 Hz 259€, LG QNED 75" 120 Hz 1.455,89€ • MindStar (XFX RX 6950 XT 999€, Gainward RTX 3070 559€) • Gigabyte Deals • Der beste Gaming-PC für 2.000€ • Apple Week bei Media Markt • be quiet! Deals [Werbung]
    •  /