Masterarbeit
Evaluation der Leistungsfähigkeit von gRPC und REST/JSON für Webschnittstellen
Completion
2023/10
Research Area
Students
Maik Schoesau
Advisers
Dr.-Ing. Sebastian Heil
Description (German)
Webschnittstellen sind ein zentraler
Bestandteil des heutigen Internets und haben die Aufgabe, die vom Client eingehenden
Anfragen entgegenzunehmen, die gewünschten Dienste auf einem Web-Server
aufzurufen und gegebenenfalls die Rückgabewerte zu empfangen und dem Client
zurückzusenden.
Die RESTful-Architektur ist ein bewährter
Web-API-Architekturstil, welcher mit unterschiedlichen HTTP-Endpunkten arbeitet.
Bei Web-Anwendungen, welche mit vorwiegend strukturierten Daten arbeiten, wird
oftmals der Content-Type “application/json“ zur Übertragung
der Daten gewählt.
Dies führt aufgrund der zugrundeliegenden
Datenstruktur und der benötigten JSON-Serialisierung und -Deserialisierung der
Daten im Client und im Server zu großen Nachrichtenpaketen und Latenzen.
gRPC ist eine leistungsstarke Technologie zum Aufrufen von Funktionen auf entfernten
Geräten wie PCs und Servern.
Der Standard erlaubt es dabei den Payload
im Binärformat zu übertragen, was im Vergleich zu textbasierten Formaten
zu kleinen Datenpaketen führt.
Zudem entfällt im Vergleich zu
REST das serialisieren und deserialisieren der übertragenen Daten auf Client- und
Serverseite in das aufwendige JSON-Format.
Für Endnutzer von
Dienstleistungen im Web ist die Performanz für ein gutes Nutzererlebnis
entscheidend.
Daher ist die Nutzung von Übertragungstechnologien mit
geringem Ressourcenbedarf speziell in Regionen mit kleinen Datenübertragungsraten
von großer Bedeutung.
Darüber hinaus ist davon auszugehen,
dass bei kleineren Datenpaketen im Netzwerk die Netzauslastung, die Serverlast und damit
auch der Energiebedarf verringert werden kann.
Diese Masterarbeit untersucht die möglichen
Leistungsvorteile von gRPC mit binären Datenpaketen gegenüber den
etablierten REST-Webschnittstellen mit JSON-basierten Datenpaketen.
Dabei soll
der Unterschied hinsichtlich der Performanz – insbesondere bezüglich
der Nachrichtengröße, Latenz und Serverlast – zwischen gRPC
und REST mit JSON bestimmt werden, und bei welchen Nachrichtengrößen
dieser Effekt am deutlichsten auftritt.
Abschließend ist der
Unterschied zwischen gRPC und REST hinsichtlich des Implementierungsaufwands zu
bestimmen.
Hierzu sind zwei Varianten einer API – eine mit den
REST/JSON Endpunkt und eine mit gRPC – zu implementieren und eine Webanwendung
in den jeweils entsprechenden Varianten zu erstellen, die die identischen Funktionen der
beiden API Varianten über HTTP oder gRPC aufruft und die übermittelten
Informationen der API darstellt.
Ziel dieser Arbeit ist die Erarbeitung von
Rahmenbedingungen und Best Practices zur Nutzung von gRPC in Webanwendungen anstelle von
REST Webschnittstellen mit JSON.
Dies umfasst die Analyse des Stands der
Technik von Werkzeugen zur Analyse und Messung der notwendigen Metriken, darauf aufbauend
die experimentelle Untersuchung der Performanz beider Technologien hinsichtlich der oben
beschriebenen Metriken, sowie die Evaluation des Implementierungsaufwands.
Darüber hinaus sind die Nachrichtengrößen zu ermitteln,
bei welchen gRPC hinsichtlich der genannten Metriken besser performt.