La première étape a été de convertir les appels REST API de l'application en appels d'API GraphQL. Dans cette nouvelle configuration, l'application du client a uniquement besoin de savoir comment passer un appel GraphQL. Elle demande simplement les données qu'il lui faut sans se soucier de leur origine. Elle permet aussi à l'entreprise d'ajouter de nouvelles sources de données et de changer de source sans affecter l'application ; les requêtes GraphQL restent les mêmes.
Cependant, cela implique généralement de rédiger un serveur GraphQL et un grand volume de code de résolution pour relier les API aux données. Or, moins il y a d'éléments à écrire et à maintenir, mieux c'est. C'est là que StepZen entre en jeu. Ce serveur GraphQL hébergé déclaratif et axé sur la configuration a facilité le paramétrage des résolveurs, éliminant ainsi beaucoup de code.
Nemanja Niciforovic, directeur général et responsable de l'ingénierie au sein de Work & Co, nous explique : « Avec l'API GraphQL sur Mavenlink, quelques semaines nous suffisent pour créer une application interne qui nous permet de visualiser et de planifier notre gestion des ressources rapidement, précisément et facilement. Ici, la performance est essentielle, car cette application recoupe un grand nombre d'informations. La fonction de parallélisme automatique de StepZen a été d'une grande aide. Elle nous aide également à assurer la pérennité et l'évolutivité lorsque nous ajoutons des services back-end et créons de nouvelles applications sur l'API GraphQL unique. »
Mavenlink dispose d’une API REST complète pour gérer l’accès à une grande variété de données RH et de gestion des ressources. En utilisant @rest, la directive GraphQL de StepZen, Work & Co a pu affiner les données disponibles pour l’application de répertoire des employés. À titre d’exemple, ses équipes ont pu aisément renommer les champs de l’API Mavenlink pour qu’ils correspondent aux noms utilisés dans leur application, éliminant ainsi la charge cognitive pour le développeur front-end et réduisant le nombre de modifications de code requises dans l’application.
En outre, Work & Co a pu simplifier l'API Mavenlink avec la directive @materializer de StepZen. Cela lui a permis de définir des types qui incluent des données provenant de plusieurs appels API. Par exemple, ses équipes ont ajouté un type projects au type user pour permettre au développeur de l'application de récupérer les projets actifs d'un utilisateur conjointement à ses détails, comme sa photo de profil et son adresse e-mail.
Pagination : l'API Mavenlink applique une pagination pour limiter le nombre d'enregistrements renvoyés par appel. L'application de Work & Co n'a pas été conçue pour prendre en charge ce mode de traitement des données, et l'effort requis pour la retravailler était trop important. Grâce à la directive @sequence de StepZen, l'équipe a pu paralléliser de nombreux appels API REST vers l'API Mavenlink et récupérer toutes les pages d'un ensemble de résultats avec une seule requête GraphQL.
Optimisation des performances : c'est un avantage inattendu de cette approche. La récupération de pages plus petites avec l'API REST permet d'accélérer les temps de réponse. En effet, 10 demandes parallèles pour 200 enregistrements chacune prennent plus de temps que 20 demandes parallèles pour 100 enregistrements chacune. En définissant les requêtes StepZen de manière appropriée, le développeur de l'application Work & Co a pu affiner les performances de ses requêtes GraphQL.
Sécurité et mise en cache : outre tous ces détails de mise en œuvre, Work & Co a bénéficié de l'approche globale de StepZen en matière de sécurité et de mise en cache. Des configurations de sécurité flexibles lui ont permis de définir des requêtes utilisant un contexte de sécurité à l'échelle de l'application, ainsi que des requêtes utilisant un contexte de sécurité basé sur l'utilisateur. Ce contrôle précis est très difficile à gérer quand vous utilisez directement une API REST ; il n'est généralement pas possible de mixer les deux. La mise en cache automatique de StepZen permet aux utilisateurs de son application de bénéficier de performances améliorées sans aucun effort de développement.