Höhere Entwickler-Produktivität, bessere Kundenerfahrung Wie GraphQL den E-Commerce neu definiert
Anbieter zum Thema
Die Graph Query Language, kurz GraphQL, wird oft als Gegenspieler zu REST gesehen. Bei genauerer Betrachtung ist das aber nur die halbe Wahrheit. Welchen Mehrwert bietet die Abfragesprache für Entwickler in Zeiten vollkommener Kundenzentrierung?

Zentralisierung von Anfragen bei GraphQL
GraphQL steht für Graph Query Language – denn bei der standardisierten Abfragesprache werden Daten als Knotenpunkte betrachtet, die zueinander in verschiedenen Relationen stehen und gemeinsam einen Graphen ergeben. In dieser Betrachtungsweise unterscheidet sich GraphQL vollkommen vom REST-Paradigma, bei dem Informationen als Ressourcen gesehen werden.
GraphQL ersetzt REST aber keineswegs. Es baut ganz im Gegensatz darauf auf. Der Vorteil daraus: Es kann so Beschränkungen abbauen, denen Entwickler bei der Verwendung von REST-APIs begegnen. Möglich wird dies durch die Implementierung als separate Schicht, die über sämtlichen REST-APIs, Anwendungen und Datenspeichern liegt.
Programmierer können daher Anfragen direkt an GraphQL stellen, anstatt die benötigten Schnittstellen einzeln aufzurufen. Dabei muss lediglich beschrieben werden, welche Informationen benötigt werden. GraphQL ruft diese Daten dann aus den darunterliegenden APIs und Datenquellen auf – und liefert diese als ein einziges JSON-Objekt. Im Grunde genommen werden bei GraphQL alle APIs in einer einzigen Schnittstelle zusammengefasst, die alle Anfragen des Clients entgegennimmt.
Vermeidung von Over- und Underfetching
Ein deutlicher Vorteil von GraphQL ist, dass es das Problem des Underfetching bzw. Overfetching löst. Das betrifft bei REST vor allem Mobilgeräte mit geringer Bandbreite wie Smartphones oder Smart Watches, aber auch IoT-Geräte. Werden beim Aufrufen einer Schnittstelle nicht alle vom Client angeforderten Informationen bereitgestellt, müssen weitere APIs aufgerufen werden – und das nicht parallel, sondern zeitlich versetzt.
Umgekehrt erhält man beim Anpingen einer Schnittstelle unter Umständen tausende Datenpunkte, obwohl nur wenige davon wirklich für den jeweiligen Prozess erforderlich sind. Die Herausforderung dabei: Der Nutzer bekommt diese Überlastung beziehungsweise das Fehlen notweniger Informationen, das kompensiert wird, in Form großer Latenzen zu spüren. Diese schmälern die Kundenerfahrung merklich.
Um zu limitieren, welche Daten abgerufen werden, kann beispielsweise ein Aggregator (Backend for Frontend) zum Einsatz kommen. Dabei ermöglicht jeweils ein Microservice die Einsicht eines Datensatzes für einen Client – um alle Prozesse auf allen Endgeräten abzubilden, bedarf es jedoch möglicherweise hunderter solcher Microservices. Daraus ergibt sich ein entsprechend großer Wartungsaufwand. In diesem Szenario bietet GraphQL eine echte Alternative.
Standardisierung und Übersichtlichkeit
Ein weiterer Vorteil von GraphQL ist, dass damit eine Einheitlichkeit für REST hergestellt werden kann. Denn beim Programmierparadigma REST handelt es sich um eine Reihe von Prinzipien, nicht um einen echten Standard. Da eine Normierung fehlt, müssen Programmierer unterschiedliche Schnittstellen auf verschiedene Art und Weisen aufrufen (z.B. wegen unterschiedlicher Dateiformaten wie xml oder json).
Das reduziert die Produktivität von IT-Teams erheblich. Über einen industrieweiten, globalen Standard für APIs konnte bislang jedoch noch keine Einigung erzielt werden. Daher baut GraphQL auf REST auf und behebt genau diese Problematik durch ein typisiertes Schema. Beispielsweise bietet die Abfragesprache eine Autocomplete-Funktion.
Dank der Selbstprüfung können Fehler direkt gefunden werden. Programmierer wissen also noch bevor sie eine Anfrage endgültig stellen, ob die benötigten Informationen überhaupt abgerufen werden können. Außerdem ist GraphQL offen gegenüber der verwendeten Programmiersprache.
Zuletzt fehlt Frontend-Entwicklern oft der Überblick, welche Schnittstellen aufgerufen werden müssen, um die benötigten Daten zu erhalten. Einzelne Informationen wie beispielsweise die Produktpreise können über OMS, ERP, WMS, commerce-Plattform, Caches und viele weitere Schnittstellen verteilt sein.
Zu wissen, an welcher Stelle gesucht werden muss, kann daher zu einer echten Herausforderung werden – und das jedes Mal aufs Neue. Mit GraphQL müssen sich Entwickler keine Gedanken darüber mehr machen, an welchen Teil des Systems sie eine Anfrage stellen. Queries gehen stattdessen direkt an die GraphQL-Schicht, die über sämtlichen Schnittstellen liegt.
Höhere Produktivität für Entwickler
Indem GraphQL Under- und Overfetching verhindert sowie eine Standardisierung und Übersichtlichkeit schafft, setzt die Abfragesprache Ressourcen bei Frontend-Entwicklern frei. Endpoints bei REST sind für gewöhnlich so strukturiert, dass ein Client für eine Ansicht alle benötigten Informationen von einem Endpoint bezieht. Werden Änderungen an der Benutzeroberfläche vorgenommen, ändert sich damit möglicherweise die Art und Menge der benötigten Informationen.
Daran muss dann auch das Backend angepasst werden – mit erheblichem Ressourceneinsatz. Da GraphQL die benötigen Daten in einer einzelnen Abfrage als JSON-Objekt liefert, ganz gleich, in welchen Datenquellen oder APIs sich diese befinden, macht die Abfragesprache diese aufwendige Anpassung überflüssig. Programmierer müssen lediglich auf der Client-Seite beschreiben, welche Informationen sie abrufen möchten.
Schneller zu besserer Nutzererfahrung
Durch die beschriebene Produktivitätssteigerung verkürzen sich auch Markteinführungs- und Testzyklen von Produkten und neuen Funktionalitäten erheblich. Damit können Unternehmen auch auf kurzfristige Veränderungen in der Nachfrage reagieren, ohne in ihrer Innovation durch ein schwerfälliges Backend gebremst zu werden. Dadurch entsteht Agilität, die vor allem in Krisenzeiten erfolgskritisch sein kann.
Kundenanforderungen verändern sich beständig. Da die Nutzererfahrung aber in jedem Fall an oberster Stelle stehen sollte, müssen diese neuen Anforderungen kontinuierlich und schnell adressiert werden. Denn bei Latenzen, verursacht durch Over- oder Underfetching, ist die Geduld der Kunden sehr schnell erschöpft.
GraphQL versetzt Unternehmen damit in die Lage, den Nutzern ihrer Produkte das gewünschte Kundenerlebnis zu liefern. Denn schnelle Rückmeldungen und eine Erfahrung, von der sie noch nicht einmal wissen, dass sie sich diese wünschen macht, oft den Unterschied zwischen Erfolg und Misserfolg im E-Commerce.
GraphQL beflügelt E-Commerce
Mit der Pandemie hat die Bedeutung des E-Commerce und die jeweilige Erfahrung der Nutzer beim Onlineshopping nur noch weiter zugenommen. Zusätzliche technische Herausforderung ist die weiter steigende Nutzung von Mobilgeräten mit geringer Bandbreite für Online-Einkäufe - Herausforderungen, die GraphQL für den Einsatz im E-Commerce prädestinieren und die Produktivität der Entwickler steigern.
Werden zum Rendern einer Bestellhistorien-Seite beispielsweise Daten aus REST-APIs, die den Bereichen Bestellungen, Kundeninformationen und Produktkatalog zugeordnet sind, benötigt, stellt der Programmierer dennoch nur eine einzige Anfrage an GraphQL und erhält ein einzelnes JSON-Objekt zurück.
Auch bei Shops, die über mehrere Backend-Systeme wie Content Management, Payment Provider, commerce-Plattform und eigene Services (z.B. Preisberechnungs-Tools) verfügen, kann GraphQL zum Einsatz kommen. Denn oftmals sind für einen Datenpunkt Anfragen an alle diese Systeme nötig. Hier besteht die Möglichkeit des „Schema Stitchings“, das die Schemata der verschiedenen Systeme zusammenführt.
Auf diese Weise ist es möglich, die benötigen Informationen mit nur einer anstatt zahlreichen Anfragen des Frontends aus den verschiedenen Backends zu erhalten. Das Ergebnis: deutlich gesteigerte Geschwindigkeiten bei Abfruf neuer Daten. Damit das funktionieren kann, müssen alle eingebundenen Backends GraphQL unterstützen.
GraphQL: nicht nur für den Handel
Doch der Einsatzbereich der Abfragesprache ist keineswegs auf den Online-Handel beschränkt. Dem Newsfeed einer Social-Media-Plattform oder einer Nachrichten-Website beispielsweise liegt eine ganz ähnliche Struktur zugrunde wie einem Product Listing. Nach dem Laden der ersten Inhalte werden Daten nachgezogen, während der Nutzer nach unten scrollt.
Damit das nahtlos funktionieren kann, muss der Umfang der übermittelten Informationen so gering wie möglich gehalten werden – und genau das ist mit GraphQL möglich. Werden für die nächsten Beiträge nur drei Datenfelder benötigt, liefert die Abfragesprache genau diese Daten aus den darunter liegenden REST-APIs, Anwendungen und Datenspeichern. So bekommt der Leser die Nutzererfahrung, die er sich wünscht – ohne, dass diese durch Unterbrechungen zum Nachziehen neuer Daten geschmälert wird.
Mit fortschreitender technischer Entwicklung wird das Setup von Websites noch weiter an Komplexität zunehmen, zum Beispiel in Form einer noch größeren Zahl an Backend-Systemen, die hinter einem Frontend stehen. Aber auch umgekehrt ist dies der Fall: Noch mehr Frontends werden auf ein Backend zugreifen – ob auf einer Smartwatch, auf einem Smart Mirror oder auch auf einem Display im Auto. GraphQL wird daher in den kommenden Jahren sicherlich noch weiter an Popularität gewinnen.
* Kelly Goetsch ist Chief Product Officer bei commercetools und verantwortlich für Produktmanagement und -entwicklung. Zuvor arbeitete er bei Oracle, wo er leitend für die Microservices-Aktivitäten des Unternehmens verantwortlich war. Goetsch ist Experte für Microservices, Distributed Computing, DevOps, Multi-Master und Large Scale Commerce Platforms. Durch seine Expertise ist er oft als Speaker geladen und hat zu diesen Themen bereits umfangreich veröffentlicht.“
(ID:46969635)