GraphQL est un langage de schéma et de requête de données, ainsi qu'une spécification et un environnement d'exécution qui redéfinissent la conception des API et l'interaction client-serveur. GraphQL offre une alternative aux architectures basées sur REST, dans le but d'augmenter la productivité des développeurs et de minimiser la quantité de données transférées.
Les développeurs de logiciels préfèrent généralement travailler avec des abstractions réutilisables plutôt qu'avec des méthodes à usage unique. Avec GraphQL, nous définissons chaque donnée une seule fois et nous définissons comment elle se rapporte à d'autres données de notre système. Lorsqu'une application client récupère des données de plusieurs sources, elle n'a plus besoin de se préoccuper de la logique métier complexe associée aux opérations de jointure de données.
GraphQL n'est pas lié à un backend spécifique et exploite votre code et vos données existants, ce qui lui permet d'intégrer des systèmes hétérogènes et d'exposer leurs services via une API unifiée.
En outre, le langage de schéma expressif de GraphQL a le potentiel de définir un schéma de données à l'échelle de l'entreprise et d'embrasser sa nature évolutive — incidemment, en établissant un langage commun entre les développeurs, les propriétaires de produits et les analystes commerciaux, une véritable richesse et un énorme gain de productivité.
Développé à l'origine en interne par Facebook, sa spécification et une implémentation de référence ont été rendues open-source en 2015. En quelques années, GraphQL a été largement adopté par l'industrie, car il résout de nombreux problèmes à la fois de manière concise. Son développement et sa normalisation sont maintenant accueillis par la Linux Foundation. Airbnb, Apollo, Coursera, Elementl, Facebook, GitHub, Hasura, Neo4j, Prisma, Shopify et Twitter travaillent ensemble pour former cette nouvelle fondation, neutre vis-à-vis des fournisseurs, qui fournira une gouvernance et une intendance unifiées à GraphQL.
Cette présentation fournira une introduction à GraphQL, une architecture de service exemple, partagera les meilleures pratiques et une réflexion sur les expériences précoces, ses risques et opportunités — à savoir comment atteindre son plein potentiel, ce qui nécessite d'adopter dès le début une approche de conception basée sur le schéma du domaine métier, au lieu d'une approche basée sur les données, une distinction délicate du processus de conception dont nous discuterons.