Masterarbeit
Enabling Client/Server Code Sharing
Completion
2021/01
Research Area
Students
Hikmat Ullah Hamdullah
Advisers
Dr.-Ing. Sebastian Heil
Description
For a long time, a gap between client-side code execution and server-side code execution has required web application developers to create rather multi-language and multi-platform codebases. With the introduction of new technologies for the browser such was WebAssembly as a common compilation target and for the server such as the NodeJS Javascript interpreter, this gap has been closed, enabling use cases based on sharing code between client and server.
This thesis explores methods for client-server code sharing and dynamic allocation of code execution. It aims at the specification of a distributed software architecture allowing the above scenario and the creation of a supporting infrastructure and toolchain. The concept needs to comprise deployment distribution, communication and interfaces, distribution decision making support based on required capabilities and dependency management. Additionally (especially for master students), techniques for dynamic distribution decisions at runtime, for instance based on current load, available memory resources etc. should be investigated and implemented.
The objective of this thesis is the creation of a solution or the combination of existing approaches to solve the problem of client-server code sharing and code execution through a software architecture and infrastructure as described above. This comprises the analysis of the state of the art of shared code-execution between client and server as well as the demonstration of the solution by prototypical implemetation and a suitable evaluation based on experimentation simulating different load scenarios and quality/performance measurements.
Description (German)
Lange Zeit bestand eine Trennung zwischen clientseitiger und serverseitiger Ausführung von Code, welche Webentwickler dazu zwang Anwendungen in unterschiedlichen Sprachen und Platformen zu implementieren. Durch die Einführung neuer Technologien im Browser wie WebAssembly als gemeinsames Kopilierziel und für den Server wie NodeJS als Javascript interpreter, wurde diese Trennung aufgehoben. Dadurch ergeben sich neue Anwendungsmöglichkeiten basierend auf dem Teilen von Code zwischen Client und Server.
Diese Thesis untersucht Methoden für Client-Server Code Sharing und dynamische Allokation der Code Ausführung. Ziel ist die Spezifikation einer verteilten Software-Architektur welche das beschriebene Szenario ermöglicht und die Bereitstellung von unterstützender Infrastruktur und Werkzeugen. Das Konzept muss folgende Aspekte umfassen: Verteilung des Deployments, Kommunikation und Schnittstellen, Unterstützung der Entscheidungsfindung bei der Code-Verteilung basierend auf benötigten Fähigkeiten und Abhängigkeitsmanagement. Zusätzliche (insbesondere für Master Studenten) sollen Techniken für dynamische Verteilungs-Entscheidungen zur Laufzeit untersucht und implementiert werden, z.b. basierend auf aktueller Last, verfügbarem Speicher etc.
Ziel dieser Arbeit ist es einen geeigneten Ansatz oder eine Kombination von Ansätzen zur Lösung des oben beschriebenen Problems der Verteilung und verteilten Ausführung von Code zwischen Client und Server durch eine Software-Architektur und unterstüzende Infrastruktur wie oben beschrieben. Dies beinhaltet insbesondere die Untersuchung des Stands der Technik bezüglich verteilter Code-Ausführung, sowie die Demonstration der Lösung durch prototypische Implementierung des Konzeptes ebenso, wie eine geeignete Evaluation durch Experimente zur Simulation verschiedener Last-Szenarien mittels Qualitäts-/Performanzmetriken.