GraphQL une Nième Base de Données ? Ou pas …

par Léna CUINIER - Développeuse
| minutes de lecture

Lors de la Touraine Tech 2024, j’ai longuement réfléchi à mon programme, il y avait trop de sujets intéressants. Ne connaissant pas GraphQL, j’ai d’abord cru que c’était une nouvelle base de données mais pas du tout !
Sur les conseils d’un ancien collègue, je me suis rendue à cette présentation captivante. Les intervenants ont partagé leur expérience chez le Figaro.

Plongeons dans le monde fascinant de GraphQL et découvrons comment cette technologie révolutionnaire peut transformer votre approche du développement d’API et de gestion des données.

GraphQL est un langage de requête et de manipulation de données développé par Facebook, offrant une approche flexible pour interagir avec les API. Dans cet article, nous explorerons ses cas d’utilisation, ses avantages et ses inconvénients. 

Cas d'utilisation

Couche Intermédiaire entre une API REST et son Client

GraphQL agit comme une couche intermédiaire entre les API REST et les clients. Il simplifie le processus de requête en permettant le mapping et l’agrégation des données provenant de différentes sources en une seule requête, offrant ainsi une expérience utilisateur plus fluide.

Persistance de Requêtes

GraphQL permet la persistance des requêtes en enregistrant toutes les requêtes possibles avant la mise en production. Ces requêtes sont stockées en base de données et remplacées par un identifiant pour une utilisation en production. Cela garantit que seules les requêtes validées et enregistrées peuvent être exécutées, assurant ainsi la sécurité et la stabilité du système.

Implémentation d’un Cache Applicatif avec Redis

GraphQL facilite l’implémentation d’un cache applicatif en utilisant des solutions comme Redis. Cela permet d’améliorer les performances en réduisant le temps de réponse des requêtes fréquemment effectuées, offrant ainsi une expérience utilisateur plus rapide et plus efficace.

Création de Graphes de Données Complexes

GraphQL est également utilisé pour créer des graphes de données complexes, où les relations entre les différentes entités sont importantes. Il offre une flexibilité dans la construction de requêtes pour récupérer les données selon les besoins spécifiques, ce qui est particulièrement utile dans les applications avec des modèles de données complexes.

Avantages

Gouvernance Centralisée des APIs

GraphQL offre une gouvernance centralisée des APIs en permettant de définir un schéma unifié pour toutes les requêtes. Cela offre une meilleure visibilité et un contrôle plus strict sur les données échangées, facilitant ainsi la gestion et la maintenance du système.

Flexibilité dans les Requêtes

Contrairement aux API REST traditionnelles, GraphQL permet aux clients de spécifier les données exactes dont ils ont besoin, évitant ainsi le surchargement de données inutiles. Cela permet d’optimiser les performances et de réduire la bande passante nécessaire pour récupérer les données.

Réduction du Nombre de Requêtes

Avec GraphQL, les clients peuvent récupérer plusieurs types de données en une seule requête, ce qui réduit le nombre total de requêtes nécessaires pour obtenir toutes les données nécessaires. Cela améliore l’efficacité du système et réduit la charge sur les serveurs.

Inconvénients

Goulot d’Étranglement et Dimensionnement

Un inconvénient majeur associé à la centralisation est le risque de goulot d’étranglement. Il est crucial de dimensionner correctement le service GraphQL pour gérer la charge et éviter toute baisse de performance. Une mauvaise planification peut entraîner des problèmes de scalabilité et de latence, impactant négativement l’expérience utilisateur.

Complexité de Configuration

La configuration et la gestion des schémas GraphQL peuvent être complexes, en particulier dans les systèmes avec un grand nombre de sources de données et de types d’entités. Cela peut nécessiter une expertise supplémentaire et des efforts de développement pour maintenir et mettre à jour les schémas de manière efficace.

Risque de Surcharge de Données

Bien que GraphQL offre une flexibilité dans les requêtes, il existe un risque que les clients demandent trop de données à la fois, ce qui peut surcharger le système et entraîner des problèmes de performance. Il est important de surveiller et de limiter les requêtes pour éviter toute surcharge inutile.

Conclusion

En conclusion, GraphQL offre une flexibilité significative pour interagir avec les API, en particulier dans les systèmes avec des API existantes à centraliser. Il permet de gagner du temps dans l’évolution des API en offrant une gouvernance centralisée et en simplifiant le processus de requête. Cependant, il est important de noter les défis potentiels liés au dimensionnement, à la configuration et à la gestion des requêtes pour assurer des performances optimales. Pour les nouveaux projets, l’implémentation précoce de GraphQL peut être bénéfique pour tirer parti de ses fonctionnalités dès le départ et éviter les problèmes de rétrocompatibilité à l’avenir.

Search

language-lib