Die Umwandlung der bestehenden REST-API-Aufrufe der App in GraphQL-API-Aufrufe war der erste Schritt. Durch die Umstellung auf GraphQL muss die Client-Anwendung nur noch wissen, wie man einen GraphQL-Aufruf durchführt und lediglich die Daten anfordert, die sie auch wirklich braucht; sie muss nicht wissen, woher die Daten kommen. Die Standardisierung auf GraphQL für diese Anwendung würde es dem Unternehmen ermöglichen, neue Datenquellen hinzuzufügen und die Datenquellen zu wechseln, ohne dass sich dies auf die Anwendung auswirkt. Die GraphQL-Abfragen würden dieselben bleiben.
In der Regel würde dies jedoch bedeuten, dass man einen GraphQL-Server braucht und eine Menge Resolver-Code schreiben muss, um die APIs den Daten zuzuordnen. Je weniger Code man schreiben und pflegen muss, desto besser. Als deklarativer, konfigurationsgesteuerter gehosteter GraphQL-Server macht StepZen die Konfiguration von Resolvern einfach, wodurch ein Großteil des Codes überflüssig wird.
Nemanja Niciforovic, MD und Engineering Lead bei Work & Co, erklärt: „Mit der GraphQL-API auf Mavenlink können wir innerhalb weniger Wochen eine interne App entwickeln, mit der eine schnelle, genaue und einfache Visualisierung und Planung unserer Ressourcenverwaltung möglich ist. Die Leistung dieser App ist entscheidend, da sie viele Informationen zusammenführt. Die automatische Parallelität von StepZen hat uns dabei sehr geholfen. Außerdem hilft es uns bei der zukünftigen Anpassung und Skalierung, wenn wir Backend-Services hinzufügen und neue Anwendungen auf der einzigen GraphQL-API erstellen.“
Mavenlink verfügt über eine umfassende REST-API zur Verwaltung des Zugriffs auf eine Vielzahl von HR- und Ressourcenmanagementdaten. Mithilfe der GraphQL-Anweisung – @rest – von StepZen konnte Work & Co die Daten, die für die Mitarbeiterverzeichnis-App zur Verfügung stehen, genau festlegen. Ein einfaches Beispiel: Das Team benannte Felder in der Mavenlink-API so um, dass sie mit den in der Anwendung verwendeten Namen übereinstimmten, wodurch der Frontend-Entwickler weniger Arbeit hatte und weniger Codeänderungen in der Anwendung erforderlich waren.
Außerdem konnte das Team die Mavenlink-API durch die Verwendung der @materializer-Anweisung von StepZen vereinfachen. Dadurch konnten sie Typen definieren, die Daten aus mehreren API-Aufrufen enthalten. So fügten sie beispielsweise dem Typ „Benutzer“ einen Typ „Projekte“ hinzu, der es dem Anwendungsentwickler ermöglichte, die aktiven Projekte eines Benutzers gleichzeitig mit den Benutzerdetails wie Profilfoto und E-Mail-Adresse abzurufen.
Paginierung: Die Mavenlink-API begrenzt die Anzahl der Datensätze, die bei einem einzelnen Aufruf zurückgegeben werden, und erzwingt so eine Paginierung. Die App von Work & Co wurde nicht für diese Art der Datenverarbeitung entwickelt, und eine Überarbeitung zur Nutzung der Paginierung war kein Aufwand, den man auf sich nehmen wollte. Mit der @sequence-Anweisung von StepZen war das Team in der Lage, viele REST-API-Aufrufe an die Mavenlink-API zu parallelisieren und alle Seiten einer Ergebnismenge mit einer einzigen GraphQL-Abfrage abzurufen.
Leistungsoptimierung: Ein unerwarteter Vorteil dieser Methode ist die Leistungsoptimierung. Der Abruf kleinerer Seitengrößen mit der REST-API führt zu schnelleren Antwortzeiten. So brauchen 10 parallele Abfragen für jeweils 200 Datensätze länger als 20 parallele Abfragen für jeweils 100 Datensätze. Durch eine entsprechende Definition der StepZen-Abfragen konnte der Anwendungsentwickler von Work & Co die Leistung seiner GraphQL-Abfragen genau anpassen.
Sicherheit und Caching: Zusätzlich zu all diesen spezifischen Implementierungsdetails profitierte Work & Co von StepZens Gesamtkonzept für Sicherheit und Caching. Flexible Sicherheitskonfigurationen ermöglichten es ihnen, Abfragen zu definieren, die einen anwendungsweiten Sicherheitskontext verwenden, sowie Abfragen, die einen benutzerspezifischen Sicherheitskontext nutzen. Eine solch detaillierte Kontrolle lässt sich bei der direkten Verwendung einer REST-API nur sehr schwer realisieren; in der Regel ist es entweder das eine oder das andere. Das automatische Caching von StepZen bedeutet, dass die Benutzer ihrer Anwendung eine verbesserte Leistung ohne Entwicklungsaufwand erhalten.