Graph QL par Andy Gigon

Idean France
Idean FranceIdean France
Digital Service Design
by Capgemini
Dites adieu à REST, et bonjour à GraphQL.
La relève est arrivée.
Développeur Web chez
Backelite
Andy Gigon
Conférencier Paris WEB
2017 sur graphQL
Merci pour sa conférence
Paris Web 2017
Aurélien David
L’application de démonstration
5
L’application de démonstration
Studio Ghibli,
application React Native
Premier écran pour lister les films
6
L’application de démonstration
Deuxième écran pour le détail d’un film
Studio Ghibli,
application React Native
7
L’application de démonstration
L’api REST
La première version utilisait une API REST disponible
sur le service heroku.com.
https://ghibliapi.herokuapp.com
8
L’application de démonstration
Information nécessaire
pour le 1er écran
Liste des 10 premiers films.
Pour chaque film, le titre, le score, et la date de sortie
9
L’application de démonstration
Détails pour un seul film, l’URL de l’image, le titre, la
description, la date de sortie, le producteur, le
directeur, et la note
La version 2 ajoute la liste des personnages avec leurs
noms et leurs espèces
Information nécessaire
pour le 2éme écran
10
Le transport de l’information
11
Transport de l’information
L’encapsulation
12
Transport de l’information
Requête pour récupérer
un film
• Taille totale de la requête 2055 octets
• Taille du payload 1684 octets
18% de la taille totale utilisée
pour le transport
13
Transport de l’information
TCP Tree-way handshake
TCP Tree-way handshake 3 échanges pour la
création de la communication
14
Transport de l’information
La perte de paquet et
le débit réduit
Génération Technologie Débit minimum et
maximum*
Débit moyen
2G GSM 9.6 kbit/s 9.6 kbit/s
2,5G GPRS Entre 20 et 175 kbit/s 48 kbit/s
2,75G EDGE Entre 40 et 350 kbit/s 171 kbit/s
3G UMTS Entre 144 kbit/s et 2 Mbit/s 384 kbit/s
3G+ HSDPA Entre 300 kbit/s et 14 Mbit/s 750 kbit/s
H+ HSPA+ Entre 2 Méga et 42 Mbit/s 4 Mbit/s
4G LTE-Advanced Entre 7 Méga et 150 Mbit/s 9,4 Mbit/s
15
Comparaison entre REST et GraphQL
16
Comparaison entre REST et GraphQL
Deux exemples d’api
REST
1
Basic
2
Complexe avec pagination et
populate (type sails.js)
• /films => retourne tous les films avec tous les
champs
• /film/ID => retourne un film avec tous les champs
• /films?limit=10&Skip= 10 retourne les films paginés
avec tous les champs
• /film/ID?populate=[people] retourne un film avec
tous les champs et les peoples associés avec tous
les champs
17
Comparaison entre REST et GraphQL
Premier écran liste des
films
Nécessite les 10 premiers films avec les propriétés ID,
titre, image, année et score.
Type API Nombre de requête Total transit Total payload
REST basic 1 15,6 Ko 19,50 Ko
REST complexe 1 7,65 Ko 9,6 Ko
Payload utile	3,51	Ko
18
Comparaison entre REST et GraphQL
Deuxième écran, détails
d’un film
Nécessite les propriétés du film: images, titre, description,
année, producteur, directeur, score et la liste des 3 premiers
personnages avec leurs noms et espèce
Type API Nombre de requête Total transit Total payload
REST basic 7 5,89 Ko 3,35 Ko
REST complexe 4 4,06 Ko 2,61 Ko
Payload utile	899	o
19
Comparaison entre REST et GraphQL
Les API REST ne sont
pas économes
• L’API REST va nous transmettre énormément de
données inutiles
• Beaucoup de requêtes (latence et encapsulation)
20
Et si on optimise tout ca.
Une requête par écran avec juste la quantité
d’information nécessaire.
21
Comparaison entre REST et GraphQL
C’est possible avec
GraphQL
Ecran liste Ecran détail
Type API Nombre de
requête
Total transit Total payload
REST basic 1 15,6 Ko 19,50 Ko
REST
complexe
1 7,65 Ko 9,6 Ko
GraphQL 1 3,7 Ko 3,51 Ko
Payload utile	3,51	Ko Payload utile	899	o
Type API Nombre de
requête
Total transit Total payload
REST basic 7 5,89 Ko 3,35 Ko
REST
complexe
4 4,06 Ko 2,61 Ko
GraphQL 1 1,24 Ko 899 o
22
GraphQL
23
GraphQL
Les principes
Maintenabilité
Pas de suppression, uniquement de
l’ajout.
Développement
Système d’ auto complétion
disponible pour la création de
requête.
C’est quoi?
GraphQL est une syntaxe qui décrit
comment demander des données au
niveau de la couche transport
Facile
Un seul endpoint à connaitre.
Intérêt
GraphQL donne aux clients le pouvoir
de demander exactement ce dont ils
ont besoin et rien de plus.
24
GraphQL
La	suite	ici:	http://graphql.org/users/
25
GraphQL
Démonstration avec GraphiQL
26
GraphQL
Query (Lecture)
Permets de récupérer les données correspondant au
schéma demandé
27
GraphQL
Les arguments
Les QUERY supportent les arguments pour par
exemple gérer de la pagination, recherche, des
filtres ou du tri.
28
GraphQL
Mutation (Ecriture)
Permet la modification, la suppression ou la création
des données
Chaque input possède sont propre input pour
décrire le schéma de données attendu
La documentation est disponible sur graphiql
29
GraphQL
Subscription (Temps réel)
Le client s'inscrit à des évènements spécifiques, puis
reçoit les données demandées en temps réel,
généralement implémentées en websockets.
30
Questions
Questions
1 sur 30

Recommandé

DevFestBdm2019 par
DevFestBdm2019DevFestBdm2019
DevFestBdm2019Cédrick Lunven
50 vues29 diapositives
Design API - SnowCampIO par
Design API - SnowCampIODesign API - SnowCampIO
Design API - SnowCampIOCédrick Lunven
59 vues29 diapositives
Refcard GraphQL par
Refcard GraphQLRefcard GraphQL
Refcard GraphQLOCTO Technology
19 vues14 diapositives
ÉVolution d'un système de publication de données techniques automobiles, modé... par
ÉVolution d'un système de publication de données techniques automobiles, modé...ÉVolution d'un système de publication de données techniques automobiles, modé...
ÉVolution d'un système de publication de données techniques automobiles, modé...SemWebPro
687 vues19 diapositives
Développer sereinement avec Node.js par
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.jsJulien Giovaresco
146 vues78 diapositives
Ter Web Service Intro par
Ter Web Service IntroTer Web Service Intro
Ter Web Service IntroRiadh Tebourbi (Ai1990)
2.6K vues27 diapositives

Contenu connexe

Similaire à Graph QL par Andy Gigon

Web APIs in Action (in French) par
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)Restlet
2.1K vues53 diapositives
De l'open source à l'open API avec Restlet par
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletJerome Louvel
4.4K vues51 diapositives
Créer une API GraphQL avec Symfony par
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonySébastien Rosset
3.5K vues22 diapositives
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso... par
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...sametmax
8.9K vues33 diapositives
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment... par
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Jean-Laurent de Morlhon
2.7K vues41 diapositives
Intro grpc.net par
Intro  grpc.netIntro  grpc.net
Intro grpc.netMSDEVMTL
1.5K vues22 diapositives

Similaire à Graph QL par Andy Gigon(20)

Web APIs in Action (in French) par Restlet
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
Restlet2.1K vues
De l'open source à l'open API avec Restlet par Jerome Louvel
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec Restlet
Jerome Louvel4.4K vues
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso... par sametmax
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
sametmax8.9K vues
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment... par Jean-Laurent de Morlhon
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Intro grpc.net par MSDEVMTL
Intro  grpc.netIntro  grpc.net
Intro grpc.net
MSDEVMTL1.5K vues
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s... par sebastienmoreno
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
sebastienmoreno1K vues
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha... par Capgemini
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
Capgemini58 vues
LoadTime & SEO - Erlé Alberton par WeLoveSEO
LoadTime & SEO - Erlé AlbertonLoadTime & SEO - Erlé Alberton
LoadTime & SEO - Erlé Alberton
WeLoveSEO237 vues
We❤️SEO 2019 : WebPerf et SEO par Erlé Alberton
We❤️SEO 2019 : WebPerf et SEOWe❤️SEO 2019 : WebPerf et SEO
We❤️SEO 2019 : WebPerf et SEO
Erlé Alberton1.2K vues
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020 par SEO CAMP
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
SEO CAMP190 vues
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO par WeLoveSEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
WeLoveSEO76 vues
Flex, une techno RIA incontournable pour les futures app web ? par GreenIvory
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
GreenIvory1.8K vues
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm... par MSDEVMTL
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
MSDEVMTL978 vues

Plus de Idean France

Start with a Concept and Stop Designing like a Machine par
Start with a Concept and Stop Designing like a MachineStart with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a MachineIdean France
1.1K vues52 diapositives
Design Systems : à votre marque, prêts, partez ! par
Design Systems : à votre marque, prêts, partez !Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !Idean France
1.7K vues75 diapositives
Design systems : Bench et reco sur les outils par
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsIdean France
2.8K vues49 diapositives
La recette graphique par
La recette graphiqueLa recette graphique
La recette graphiqueIdean France
1.7K vues28 diapositives
Cocoheads react native + redux par Nicolas Fontaine par
Cocoheads   react native + redux par Nicolas FontaineCocoheads   react native + redux par Nicolas Fontaine
Cocoheads react native + redux par Nicolas FontaineIdean France
376 vues30 diapositives
Meetup langages visuels - Backelite - novembre 2017 par
Meetup langages visuels - Backelite - novembre 2017Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017Idean France
523 vues166 diapositives

Plus de Idean France(20)

Start with a Concept and Stop Designing like a Machine par Idean France
Start with a Concept and Stop Designing like a MachineStart with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a Machine
Idean France1.1K vues
Design Systems : à votre marque, prêts, partez ! par Idean France
Design Systems : à votre marque, prêts, partez !Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !
Idean France1.7K vues
Design systems : Bench et reco sur les outils par Idean France
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outils
Idean France2.8K vues
Cocoheads react native + redux par Nicolas Fontaine par Idean France
Cocoheads   react native + redux par Nicolas FontaineCocoheads   react native + redux par Nicolas Fontaine
Cocoheads react native + redux par Nicolas Fontaine
Idean France376 vues
Meetup langages visuels - Backelite - novembre 2017 par Idean France
Meetup langages visuels - Backelite - novembre 2017Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017
Idean France523 vues
Sketch pour les designers : pourquoi, quand et comment l'utiliser ? par Idean France
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Idean France2.2K vues
From Business to Buttons by Pierre Harlé par Idean France
From Business to Buttons by Pierre HarléFrom Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre Harlé
Idean France224 vues
RX Swift avril 2017 - David Yang par Idean France
RX Swift avril 2017 - David YangRX Swift avril 2017 - David Yang
RX Swift avril 2017 - David Yang
Idean France340 vues
UI Design Trends for 2017 par Idean France
UI Design Trends for 2017UI Design Trends for 2017
UI Design Trends for 2017
Idean France2.8K vues
Tendances du Design d'Interface 2017 par Idean France
Tendances du Design d'Interface 2017Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017
Idean France1.5K vues
Rendering unit tests par Nicolas Fontaine par Idean France
Rendering unit tests par Nicolas FontaineRendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas Fontaine
Idean France396 vues
Sirikit par Julien Coudsi par Idean France
Sirikit par Julien CoudsiSirikit par Julien Coudsi
Sirikit par Julien Coudsi
Idean France506 vues
A developer who knows how to design by Audrey Hacq par Idean France
A developer who knows how to design by Audrey HacqA developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey Hacq
Idean France1.7K vues
Messages Extensions par Nicolas Fontaine par Idean France
Messages Extensions par Nicolas FontaineMessages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas Fontaine
Idean France622 vues
Un développeur sachant designer par Audrey Hacq par Idean France
Un développeur sachant designer par Audrey HacqUn développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey Hacq
Idean France1.2K vues
CA Layer / Core Animation {Cocoaheads Montpellier} par Idean France
CA Layer / Core Animation {Cocoaheads Montpellier}CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}
Idean France676 vues
Programmation Orientée Protocole {Cocoaheads Montpellier} par Idean France
Programmation Orientée Protocole {Cocoaheads Montpellier}Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}
Idean France651 vues
App groups, faire communiquer ses applications {Cocoaheads Montpellier} par Idean France
App groups, faire communiquer ses applications {Cocoaheads Montpellier}App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}
Idean France665 vues

Graph QL par Andy Gigon

  • 2. Dites adieu à REST, et bonjour à GraphQL. La relève est arrivée.
  • 3. Développeur Web chez Backelite Andy Gigon Conférencier Paris WEB 2017 sur graphQL Merci pour sa conférence Paris Web 2017 Aurélien David
  • 5. 5 L’application de démonstration Studio Ghibli, application React Native Premier écran pour lister les films
  • 6. 6 L’application de démonstration Deuxième écran pour le détail d’un film Studio Ghibli, application React Native
  • 7. 7 L’application de démonstration L’api REST La première version utilisait une API REST disponible sur le service heroku.com. https://ghibliapi.herokuapp.com
  • 8. 8 L’application de démonstration Information nécessaire pour le 1er écran Liste des 10 premiers films. Pour chaque film, le titre, le score, et la date de sortie
  • 9. 9 L’application de démonstration Détails pour un seul film, l’URL de l’image, le titre, la description, la date de sortie, le producteur, le directeur, et la note La version 2 ajoute la liste des personnages avec leurs noms et leurs espèces Information nécessaire pour le 2éme écran
  • 10. 10 Le transport de l’information
  • 12. 12 Transport de l’information Requête pour récupérer un film • Taille totale de la requête 2055 octets • Taille du payload 1684 octets 18% de la taille totale utilisée pour le transport
  • 13. 13 Transport de l’information TCP Tree-way handshake TCP Tree-way handshake 3 échanges pour la création de la communication
  • 14. 14 Transport de l’information La perte de paquet et le débit réduit Génération Technologie Débit minimum et maximum* Débit moyen 2G GSM 9.6 kbit/s 9.6 kbit/s 2,5G GPRS Entre 20 et 175 kbit/s 48 kbit/s 2,75G EDGE Entre 40 et 350 kbit/s 171 kbit/s 3G UMTS Entre 144 kbit/s et 2 Mbit/s 384 kbit/s 3G+ HSDPA Entre 300 kbit/s et 14 Mbit/s 750 kbit/s H+ HSPA+ Entre 2 Méga et 42 Mbit/s 4 Mbit/s 4G LTE-Advanced Entre 7 Méga et 150 Mbit/s 9,4 Mbit/s
  • 16. 16 Comparaison entre REST et GraphQL Deux exemples d’api REST 1 Basic 2 Complexe avec pagination et populate (type sails.js) • /films => retourne tous les films avec tous les champs • /film/ID => retourne un film avec tous les champs • /films?limit=10&Skip= 10 retourne les films paginés avec tous les champs • /film/ID?populate=[people] retourne un film avec tous les champs et les peoples associés avec tous les champs
  • 17. 17 Comparaison entre REST et GraphQL Premier écran liste des films Nécessite les 10 premiers films avec les propriétés ID, titre, image, année et score. Type API Nombre de requête Total transit Total payload REST basic 1 15,6 Ko 19,50 Ko REST complexe 1 7,65 Ko 9,6 Ko Payload utile 3,51 Ko
  • 18. 18 Comparaison entre REST et GraphQL Deuxième écran, détails d’un film Nécessite les propriétés du film: images, titre, description, année, producteur, directeur, score et la liste des 3 premiers personnages avec leurs noms et espèce Type API Nombre de requête Total transit Total payload REST basic 7 5,89 Ko 3,35 Ko REST complexe 4 4,06 Ko 2,61 Ko Payload utile 899 o
  • 19. 19 Comparaison entre REST et GraphQL Les API REST ne sont pas économes • L’API REST va nous transmettre énormément de données inutiles • Beaucoup de requêtes (latence et encapsulation)
  • 20. 20 Et si on optimise tout ca. Une requête par écran avec juste la quantité d’information nécessaire.
  • 21. 21 Comparaison entre REST et GraphQL C’est possible avec GraphQL Ecran liste Ecran détail Type API Nombre de requête Total transit Total payload REST basic 1 15,6 Ko 19,50 Ko REST complexe 1 7,65 Ko 9,6 Ko GraphQL 1 3,7 Ko 3,51 Ko Payload utile 3,51 Ko Payload utile 899 o Type API Nombre de requête Total transit Total payload REST basic 7 5,89 Ko 3,35 Ko REST complexe 4 4,06 Ko 2,61 Ko GraphQL 1 1,24 Ko 899 o
  • 23. 23 GraphQL Les principes Maintenabilité Pas de suppression, uniquement de l’ajout. Développement Système d’ auto complétion disponible pour la création de requête. C’est quoi? GraphQL est une syntaxe qui décrit comment demander des données au niveau de la couche transport Facile Un seul endpoint à connaitre. Intérêt GraphQL donne aux clients le pouvoir de demander exactement ce dont ils ont besoin et rien de plus.
  • 26. 26 GraphQL Query (Lecture) Permets de récupérer les données correspondant au schéma demandé
  • 27. 27 GraphQL Les arguments Les QUERY supportent les arguments pour par exemple gérer de la pagination, recherche, des filtres ou du tri.
  • 28. 28 GraphQL Mutation (Ecriture) Permet la modification, la suppression ou la création des données Chaque input possède sont propre input pour décrire le schéma de données attendu La documentation est disponible sur graphiql
  • 29. 29 GraphQL Subscription (Temps réel) Le client s'inscrit à des évènements spécifiques, puis reçoit les données demandées en temps réel, généralement implémentées en websockets.