Förderjahr 2020 / Stipendien Call #15 / ProjektID: 5115 / Projekt: Improving Serverless Edge Computing for Network Bound Workloads
In diesem, dem ersten, Blogeintrag will ich versuchen einen Überblick über meine Arbeit zu geben, worum es geht, was die Ziele sind, welche Methoden ich gewählt habe, und weshalb ich die Arbeit für wichtig erachte. In die Tiefe werde ich in den folgenden Einträgen gehen, wenn es konkretere Ergebnisse zu berichten gibt. Um besser einordnen zu können, worum es bei meiner Arbeit geht gibt es zwei Konzepte die vorher erkärt werden sollten: „Edge Computing“ und „Serverless Computing“.
Edge Computing
Edge Computing ist aktuell ein enorm wichtiger Forschungsbereich für verteilte Computersysteme. Die Grundidee ist recht einfach: Den Ort an dem Berechnungen durchgeführt werden möglichst nahe an den Ort bringen, an dem die Berechnungen benötigt werden. Das hat eine ganze Reihe an Vorteilen, aber die wichtigsten sind geringere Verzögerung und gerinerer Datenverkehr im Netzwerk. Was genau „nahe“, „geingere Verzögerung“, oder „geringerer Netzwerkverkehr“ konkret bedeuten kommt auf die jeweilige Anwendung an. Ein klassisches Beispiel ist die Firma Netflix, die Server mit ihren Serien und Filmen auch bei heimischen Internetprovidern aufstellen, damit deren Netzwerke geschont werden, und die Medien nicht aus einem Rechenzentrum z.B. in Deutschland übertragen werden müssen. Das reduziert einserseits Kosten für Internetprovider, aber verbessert andererseits auch die User-Experience der Kunden durch bessere Ladezeiten und Verfügbarkeit.
Serverless Computing
Der Begriff „Serverless Computing“ ist etwas verwirrend. Entgegen dem, was man vielleicht anhand des Begriffs annehmen würde sind sehr wohl Server involviert, denn irgendwo müssen Programme schließlich laufen. Aus Sicht der Programmierer*Innen existieren die Server allerdings nicht, sie müssen sich keine Gedanken um die dahinterliegende Infrastruktur/um das Deployment machen. So wie Microservices klassische monolithische Software in mehere kleine Programme aufteilen, welche dann besser gewartet und skaliert werden können, teilt Serverless Computing Programme in individuelle Funktionen auf. Im Hintergrund arbeitet eine sogenannte Serverless-Platform, welche dafür sorgt, dass die Funktionen ausgeführt werden können. Typischerweise kümmern sich diese Plattformen auch um Skalierung von Funktionen und eine ganze Reihe an anderen Aufgaben, welche in so einem System anfallen. Zu den prominenten Serverless-Frameworks gehören AWS Lambda und Azure Functions auf der kommerziellen, und Kubeless sowie OpenFaaS auf der OpenSource Seite.
Serverless Edge Computing
Serverless Edge Computing ist die Kombination dieser beiden Konzepte. Es geht darum Serverless-Computing zu nutzen um Edge Computing Anwendungen zu verbessern und zu erleichtern. Eine der größten Herausforderungen für Entwickler*Innen bei Edge Computing ist die zusätzliche Komplexität die damit einhergeht. Serverless Plattformen bieten Entwickler*Innen die Möglichkeit die dahinterliegende Infrastruktur zu ignorieren, bzw. diese auf eine einheitllich abstrahierte Weise zu behandeln. Das Ziel von Serverless Edge Computing ist es entsprechend die bestehenden Techniken von Serverless-Computing zu nutzen um es Entwickler*Innen einfacher zu ermöglichen Edge Computing Anwendungen zu schreiben.
Das Ziel meiner Arbeit
Wie man dem Titel entnehmen kann geht es in meiner Arbeit darum Serverless Edge Computing zu verbessern. Genaugenommen ist das Ziel dies spezifisch für netzwerkgebundene Anwendungen zu tun, nachdem diese wohl am meisten profitieren würden. Netzwerkgebunden bedeutet in diesem Kontext, dass das Netzwerk der limitierende Teil bei der Leistung oder Effektivität der Anwendung ist. Dies kann sich sowohl auf die Latenz, als auch auf den Durchsatz beziehen.
Es existieren bereits Plattformen für Serverless Edge Computing, insbesondere als Prototypen in der akademischen Forschung. Normalerweise handelt es sich hierbei um Anpassungen von Open Source Frameworks wie Kubeless oder OpenFaaS. Nachdem netzwerkgebundene Anwendungen in diesen angepassten Versionen nach wie vor deutlich schlechter funktionieren als man es eigentlich erwarten sollte, werde ich mich in meiner Arbeit diesem Thema widmen um den Stand der Forschung von Serverless Edge Computing zu verbessern und einen Beitrag dazu zu leisten es reif für die Praxis zu machen.
Vorgehensweise
Konkret werde ich eine bestehende Anpassung von OpenFaaS weiter adaptieren weil erste Ergebnisse nahe legen, dass der Grund für diese unerwartet schlechte Performance in der zentralisiserten Architektur von OpenFaaS liegt, und eine Änderung dieser die Performance entsprechend verbessern könnte. Diese Anpassungen werde ich in einer Reihe von praktischen Experimenten, aber auch Simulationen für größere Szenarien evaluerieiren. Eine konkrete Anwendung die hierbei getestet wird ist die Echtzeitanalyse von Videodaten, da diese in bestehenden Arbeiten von Rausch et al. als eines der Szenarien idenfitiziert wurde, in dem Performancegewinne bei Serverless Edge Computing notwendig und möglich wären.