SlideShare une entreprise Scribd logo
1  sur  29
1
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
2019
Designer ses API
Pour l’accès aux données
2
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Cédrick Lunven
Developer Advocate @
Créateur de
Contributeur sur
3
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
http://academy.datastax.com
(Training | Videos | Developer Blog)
4
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Objectifs
 Un repo Github avec plusieurs implémentations pour
une API
o REST, GraphQL, gRPC
 Détails d’implémentation
o Design
o Code Review
o Demos
 Points forts et points faibles
5
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Objectifs
 Un repo Github avec plusieurs implémentations pour
une API
o REST, GraphQL, gRPC
https://github.com/clun/snowcamp2019
6
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Cassandra - Evelyn de Morgan (1855-1919)
Apache Cassandra
7
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Noeud
1 à 3To
3000 Tx/sec/core
Anneau
(DataCenter)
Apache Cassandra
8
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Apache Cassandra
 La donnée est partitionnée
 La donnée est répliquée
 Lecture/ écriture de partout
 Consistance Variable
Client
 Masterless
9
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
On-Premise
Data Center
Cluster
Apache Cassandra
10
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Application
11
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
http://dev.killrvideo.com
https://killrvideo.github.io/
12
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
1
killrvideo-dse
Drivers
DAO3
killrvideo-api-rest killrvideo-api-grpc killrvideo-api-graphql
2
Designer son service
13
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Modèle conceptuel
de données
(Entités, Relations)
Application
Workflow
(Requêtes)
Conversion
vers modèle
logique
Modèle
logique de
données
Optimisation
physique
Modèle
physique de
données
Modèle de données ?1
14
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Modèle conceptuel
15
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Application Workflow
R2: Recherche les commentaires associés à un utilisateur donné
• Retourne les plus récents en premier
• Pagine
R1: Recherche les commentaires associés à une vidéo en utilisant son id
• Retourne les plus récents en premier
• Pagine
R3: Permet les opérations CRUD unitaires
16
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Mapping
R2: Recherche les commentaires associés à un
utilisateur donné
• Retourne les plus récents en premier
• Pagine
comments_by_video
comments_by_user
R1: Recherche les commentaires associés
à une vidéo en utilisant son id
• Retourne les plus récents en premier
• Pagine
R3: Permet les opérations CRUD unitaires
17
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Modèle logique
userid
creationdate
commentid
videoid
comment
comments_by_user
K
C
↑
videoid
creationdate
commentid
userid
comment
comments_by_video
C
↑
K
C
↑
↑C
18
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Modèle physique
userid
commentid
videoid
comment
comments_by_user
TIMEUUID
K
TEXT
C
UUID
UUID
↑
videoid
commentid
userid
comment
comments_by_video
TIMEUUID
K
TEXT
C
UUID
UUID
↑
19
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Modèle physique
CREATE TABLE IF NOT EXISTS comments_by_user (
userid uuid,
commentid timeuuid,
videoid uuid,
comment text,
PRIMARY KEY ((userid), commentid)
) WITH CLUSTERING ORDER BY (commentid DESC);
CREATE TABLE IF NOT EXISTS comments_by_video (
videoid uuid,
commentid timeuuid,
userid uuid,
comment text,
PRIMARY KEY ((videoid), commentid)
) WITH CLUSTERING ORDER BY (commentid DESC);
20
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Designer son API
Modèle conceptuel
de données
(Entités, Relations)
Parcours applicatif
(Requêtes)
Base de données
(Technos +Table)
21
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
22
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Objectifs
 Un repo Github avec plusieurs implémentations pour
une API
o REST, GraphQL, gRPC
 Détails d’implémentation
o Design
o Code Review
o Demos
 Points forts et points faibles
23
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
Designer son API
Modèle conceptuel
de données
(Entités, Relations)
Parcours applicatif
(Requêtes)
Base de données
(Technos +Table)
Cache
Sync vs Async Reactive
SLA (Volume)
Intégrité
Filtres
Pagination
Tris
Latences
Throughput
CRUD, SEARCH
Versioning
Confidentialité
Atomicité
Cardinalité
SEARCH, COMMANDS
Développement
Clients
Language
CodeFirst/
Vs SchemaFirst
Documentation
Test
Build
Packaging
Api Catalog
Interne vs
Externe Techno
Profil
XP
24
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
25
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
26
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
 Réutilisation HTTP, orienté ressources
 Découplage Client/Serveur
 Api évolutive (versioning)
 Tooling (API Management)
 Attention au payload
 Exposition de fonctions/commandes
 Pas de découverte
 CRUD Superstar
 Mutations (modifications)
27
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
 Haute Performance (Async, serialisation)
 Sync, Async, Streaming
 Services Distribués
 Interopérabilité
 Couplage fort
 Protobuf
 CRUD possible mais non adapté
 API oriente commande / message
 Gros réseaux de services
28
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
 Découverte des signatures
 Personnalisation des réponses
 Composition de services
 Schéma types, implémentation des relations
 Complexité de mise en œuvre
 Appels cachés (N+1 select)
 Endpoint unique
 Agrégation de services
 Adapte pour contraintes reseau/latence
 Génial pour les client, attention pour le backend
GraphQL
29
Create API for your databases Rest, gRPC, GraphQL
@clunven | @SnowCampIO | #api
2019
 https://github.com/clun/snowcamp2019

Contenu connexe

Similaire à Design API - SnowCampIO

#SnowCamp2020 - DATAOPS n’est pas que DEVOPS appliqué aux projets DATA
#SnowCamp2020 -  DATAOPS n’est pas que DEVOPS appliqué aux projets DATA#SnowCamp2020 -  DATAOPS n’est pas que DEVOPS appliqué aux projets DATA
#SnowCamp2020 - DATAOPS n’est pas que DEVOPS appliqué aux projets DATAFrédéric Petit
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonySébastien Rosset
 
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...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...sebastienmoreno
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 
Google End points pour vos applications Android par Didier Girard 3 avril 2013
Google End points pour vos applications Android par Didier Girard 3 avril 2013Google End points pour vos applications Android par Didier Girard 3 avril 2013
Google End points pour vos applications Android par Didier Girard 3 avril 2013Paris Android User Group
 
Pourquoi est-ce si difficile de concevoir une API - HumanTalks Paris
Pourquoi est-ce si difficile de concevoir une API - HumanTalks ParisPourquoi est-ce si difficile de concevoir une API - HumanTalks Paris
Pourquoi est-ce si difficile de concevoir une API - HumanTalks ParisAlexandre ESTELA
 
Slidrs - google cloud anchors
Slidrs - google cloud anchorsSlidrs - google cloud anchors
Slidrs - google cloud anchorsChris Saez
 
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 La voie du succès avec les bases de données de graphes, la Graph Data Scie... La voie du succès avec les bases de données de graphes, la Graph Data Scie...
La voie du succès avec les bases de données de graphes, la Graph Data Scie...Neo4j
 
Gestion des APIs avec Azure API Management - Samir AREZKI
Gestion des APIs avec Azure API Management - Samir AREZKIGestion des APIs avec Azure API Management - Samir AREZKI
Gestion des APIs avec Azure API Management - Samir AREZKISamir Arezki ☁
 
Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !Gilles Pommier
 
De l'open source à l'open API avec Restlet
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
 
01 03 web_expérientiel _ les réseaux sociaux
01 03 web_expérientiel _ les réseaux sociaux01 03 web_expérientiel _ les réseaux sociaux
01 03 web_expérientiel _ les réseaux sociauxAlexandre Rivaux
 
2020 03-26 aOS online Intégrer la Power Platform avec SharePoint et Teams
2020 03-26 aOS online Intégrer la Power Platform avec SharePoint et Teams2020 03-26 aOS online Intégrer la Power Platform avec SharePoint et Teams
2020 03-26 aOS online Intégrer la Power Platform avec SharePoint et TeamsPatrick Guimonet
 
Geek Time December 2016 : Swagger II
Geek Time December 2016 : Swagger IIGeek Time December 2016 : Swagger II
Geek Time December 2016 : Swagger IIOLBATI
 
Pourquoi est-ce si difficile de concevoir une API ?
Pourquoi est-ce si difficile de concevoir une API ?Pourquoi est-ce si difficile de concevoir une API ?
Pourquoi est-ce si difficile de concevoir une API ?PALO IT
 
BDX_IO - API Green Score in action.pdf
BDX_IO - API Green Score in action.pdfBDX_IO - API Green Score in action.pdf
BDX_IO - API Green Score in action.pdfJean-Rémy Revy
 
Back from MS Ignite 2019 content service projet cortex
Back from MS Ignite 2019 content service projet cortexBack from MS Ignite 2019 content service projet cortex
Back from MS Ignite 2019 content service projet cortexSébastien Paulet
 

Similaire à Design API - SnowCampIO (20)

#SnowCamp2020 - DATAOPS n’est pas que DEVOPS appliqué aux projets DATA
#SnowCamp2020 -  DATAOPS n’est pas que DEVOPS appliqué aux projets DATA#SnowCamp2020 -  DATAOPS n’est pas que DEVOPS appliqué aux projets DATA
#SnowCamp2020 - DATAOPS n’est pas que DEVOPS appliqué aux projets DATA
 
Refcard GraphQL
Refcard GraphQLRefcard GraphQL
Refcard GraphQL
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec Symfony
 
pfe book 2023 2024.pdf
pfe book 2023 2024.pdfpfe book 2023 2024.pdf
pfe book 2023 2024.pdf
 
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...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
Google End points pour vos applications Android par Didier Girard 3 avril 2013
Google End points pour vos applications Android par Didier Girard 3 avril 2013Google End points pour vos applications Android par Didier Girard 3 avril 2013
Google End points pour vos applications Android par Didier Girard 3 avril 2013
 
Pourquoi est-ce si difficile de concevoir une API - HumanTalks Paris
Pourquoi est-ce si difficile de concevoir une API - HumanTalks ParisPourquoi est-ce si difficile de concevoir une API - HumanTalks Paris
Pourquoi est-ce si difficile de concevoir une API - HumanTalks Paris
 
Slidrs - google cloud anchors
Slidrs - google cloud anchorsSlidrs - google cloud anchors
Slidrs - google cloud anchors
 
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 La voie du succès avec les bases de données de graphes, la Graph Data Scie... La voie du succès avec les bases de données de graphes, la Graph Data Scie...
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 
TP GWT JDEV 2015
TP GWT JDEV 2015TP GWT JDEV 2015
TP GWT JDEV 2015
 
Gestion des APIs avec Azure API Management - Samir AREZKI
Gestion des APIs avec Azure API Management - Samir AREZKIGestion des APIs avec Azure API Management - Samir AREZKI
Gestion des APIs avec Azure API Management - Samir AREZKI
 
Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !
 
De l'open source à l'open API avec Restlet
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
 
01 03 web_expérientiel _ les réseaux sociaux
01 03 web_expérientiel _ les réseaux sociaux01 03 web_expérientiel _ les réseaux sociaux
01 03 web_expérientiel _ les réseaux sociaux
 
2020 03-26 aOS online Intégrer la Power Platform avec SharePoint et Teams
2020 03-26 aOS online Intégrer la Power Platform avec SharePoint et Teams2020 03-26 aOS online Intégrer la Power Platform avec SharePoint et Teams
2020 03-26 aOS online Intégrer la Power Platform avec SharePoint et Teams
 
Geek Time December 2016 : Swagger II
Geek Time December 2016 : Swagger IIGeek Time December 2016 : Swagger II
Geek Time December 2016 : Swagger II
 
Pourquoi est-ce si difficile de concevoir une API ?
Pourquoi est-ce si difficile de concevoir une API ?Pourquoi est-ce si difficile de concevoir une API ?
Pourquoi est-ce si difficile de concevoir une API ?
 
BDX_IO - API Green Score in action.pdf
BDX_IO - API Green Score in action.pdfBDX_IO - API Green Score in action.pdf
BDX_IO - API Green Score in action.pdf
 
Back from MS Ignite 2019 content service projet cortex
Back from MS Ignite 2019 content service projet cortexBack from MS Ignite 2019 content service projet cortex
Back from MS Ignite 2019 content service projet cortex
 

Plus de Cédrick Lunven

Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)Cédrick Lunven
 
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...Cédrick Lunven
 
Avoiding Pitfalls for Cassandra.pdf
Avoiding Pitfalls for Cassandra.pdfAvoiding Pitfalls for Cassandra.pdf
Avoiding Pitfalls for Cassandra.pdfCédrick Lunven
 
Unlock cassandra data for application developers using graphQL
Unlock cassandra data for application developers using graphQLUnlock cassandra data for application developers using graphQL
Unlock cassandra data for application developers using graphQLCédrick Lunven
 
An oss api layer for your cassandra
An oss api layer for your cassandraAn oss api layer for your cassandra
An oss api layer for your cassandraCédrick Lunven
 
CN Asturias - Stateful application for kubernetes
CN Asturias -  Stateful application for kubernetes CN Asturias -  Stateful application for kubernetes
CN Asturias - Stateful application for kubernetes Cédrick Lunven
 
Xebicon2019 m icroservices
Xebicon2019   m icroservicesXebicon2019   m icroservices
Xebicon2019 m icroservicesCédrick Lunven
 
Reactive Programming with Cassandra
Reactive Programming with CassandraReactive Programming with Cassandra
Reactive Programming with CassandraCédrick Lunven
 
VoxxedDays Luxembourg FF4J
VoxxedDays Luxembourg FF4JVoxxedDays Luxembourg FF4J
VoxxedDays Luxembourg FF4JCédrick Lunven
 
VoxxedDays Luxembourg 2019
VoxxedDays Luxembourg 2019VoxxedDays Luxembourg 2019
VoxxedDays Luxembourg 2019Cédrick Lunven
 
Create API for your Databases
Create API for your DatabasesCreate API for your Databases
Create API for your DatabasesCédrick Lunven
 
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...Cédrick Lunven
 
Streaming, Analytics and Reactive Applications with Apache Cassandra
Streaming, Analytics and Reactive Applications with Apache CassandraStreaming, Analytics and Reactive Applications with Apache Cassandra
Streaming, Analytics and Reactive Applications with Apache CassandraCédrick Lunven
 
Riviera jug apicassandra
Riviera jug apicassandraRiviera jug apicassandra
Riviera jug apicassandraCédrick Lunven
 
Paris Meetup Jhispter #9 - Generator FF4j for Jhipster
Paris Meetup Jhispter #9 - Generator FF4j for JhipsterParis Meetup Jhispter #9 - Generator FF4j for Jhipster
Paris Meetup Jhispter #9 - Generator FF4j for JhipsterCédrick Lunven
 
Introduction to Feature Toggle and FF4J
Introduction to Feature Toggle and FF4JIntroduction to Feature Toggle and FF4J
Introduction to Feature Toggle and FF4JCédrick Lunven
 

Plus de Cédrick Lunven (18)

Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
 
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
 
Avoiding Pitfalls for Cassandra.pdf
Avoiding Pitfalls for Cassandra.pdfAvoiding Pitfalls for Cassandra.pdf
Avoiding Pitfalls for Cassandra.pdf
 
Unlock cassandra data for application developers using graphQL
Unlock cassandra data for application developers using graphQLUnlock cassandra data for application developers using graphQL
Unlock cassandra data for application developers using graphQL
 
An oss api layer for your cassandra
An oss api layer for your cassandraAn oss api layer for your cassandra
An oss api layer for your cassandra
 
CN Asturias - Stateful application for kubernetes
CN Asturias -  Stateful application for kubernetes CN Asturias -  Stateful application for kubernetes
CN Asturias - Stateful application for kubernetes
 
Xebicon2019 m icroservices
Xebicon2019   m icroservicesXebicon2019   m icroservices
Xebicon2019 m icroservices
 
Reactive Programming with Cassandra
Reactive Programming with CassandraReactive Programming with Cassandra
Reactive Programming with Cassandra
 
Shift Dev Conf API
Shift Dev Conf APIShift Dev Conf API
Shift Dev Conf API
 
VoxxedDays Luxembourg FF4J
VoxxedDays Luxembourg FF4JVoxxedDays Luxembourg FF4J
VoxxedDays Luxembourg FF4J
 
VoxxedDays Luxembourg 2019
VoxxedDays Luxembourg 2019VoxxedDays Luxembourg 2019
VoxxedDays Luxembourg 2019
 
Create API for your Databases
Create API for your DatabasesCreate API for your Databases
Create API for your Databases
 
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
 
Streaming, Analytics and Reactive Applications with Apache Cassandra
Streaming, Analytics and Reactive Applications with Apache CassandraStreaming, Analytics and Reactive Applications with Apache Cassandra
Streaming, Analytics and Reactive Applications with Apache Cassandra
 
Riviera jug apicassandra
Riviera jug apicassandraRiviera jug apicassandra
Riviera jug apicassandra
 
Riviera JUG ff4j
Riviera JUG ff4jRiviera JUG ff4j
Riviera JUG ff4j
 
Paris Meetup Jhispter #9 - Generator FF4j for Jhipster
Paris Meetup Jhispter #9 - Generator FF4j for JhipsterParis Meetup Jhispter #9 - Generator FF4j for Jhipster
Paris Meetup Jhispter #9 - Generator FF4j for Jhipster
 
Introduction to Feature Toggle and FF4J
Introduction to Feature Toggle and FF4JIntroduction to Feature Toggle and FF4J
Introduction to Feature Toggle and FF4J
 

Design API - SnowCampIO

  • 1. 1 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 2019 Designer ses API Pour l’accès aux données
  • 2. 2 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Cédrick Lunven Developer Advocate @ Créateur de Contributeur sur
  • 3. 3 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 http://academy.datastax.com (Training | Videos | Developer Blog)
  • 4. 4 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Objectifs  Un repo Github avec plusieurs implémentations pour une API o REST, GraphQL, gRPC  Détails d’implémentation o Design o Code Review o Demos  Points forts et points faibles
  • 5. 5 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Objectifs  Un repo Github avec plusieurs implémentations pour une API o REST, GraphQL, gRPC https://github.com/clun/snowcamp2019
  • 6. 6 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Cassandra - Evelyn de Morgan (1855-1919) Apache Cassandra
  • 7. 7 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Noeud 1 à 3To 3000 Tx/sec/core Anneau (DataCenter) Apache Cassandra
  • 8. 8 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Apache Cassandra  La donnée est partitionnée  La donnée est répliquée  Lecture/ écriture de partout  Consistance Variable Client  Masterless
  • 9. 9 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 On-Premise Data Center Cluster Apache Cassandra
  • 10. 10 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Application
  • 11. 11 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 http://dev.killrvideo.com https://killrvideo.github.io/
  • 12. 12 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 1 killrvideo-dse Drivers DAO3 killrvideo-api-rest killrvideo-api-grpc killrvideo-api-graphql 2 Designer son service
  • 13. 13 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Modèle conceptuel de données (Entités, Relations) Application Workflow (Requêtes) Conversion vers modèle logique Modèle logique de données Optimisation physique Modèle physique de données Modèle de données ?1
  • 14. 14 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Modèle conceptuel
  • 15. 15 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Application Workflow R2: Recherche les commentaires associés à un utilisateur donné • Retourne les plus récents en premier • Pagine R1: Recherche les commentaires associés à une vidéo en utilisant son id • Retourne les plus récents en premier • Pagine R3: Permet les opérations CRUD unitaires
  • 16. 16 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Mapping R2: Recherche les commentaires associés à un utilisateur donné • Retourne les plus récents en premier • Pagine comments_by_video comments_by_user R1: Recherche les commentaires associés à une vidéo en utilisant son id • Retourne les plus récents en premier • Pagine R3: Permet les opérations CRUD unitaires
  • 17. 17 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Modèle logique userid creationdate commentid videoid comment comments_by_user K C ↑ videoid creationdate commentid userid comment comments_by_video C ↑ K C ↑ ↑C
  • 18. 18 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Modèle physique userid commentid videoid comment comments_by_user TIMEUUID K TEXT C UUID UUID ↑ videoid commentid userid comment comments_by_video TIMEUUID K TEXT C UUID UUID ↑
  • 19. 19 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Modèle physique CREATE TABLE IF NOT EXISTS comments_by_user ( userid uuid, commentid timeuuid, videoid uuid, comment text, PRIMARY KEY ((userid), commentid) ) WITH CLUSTERING ORDER BY (commentid DESC); CREATE TABLE IF NOT EXISTS comments_by_video ( videoid uuid, commentid timeuuid, userid uuid, comment text, PRIMARY KEY ((videoid), commentid) ) WITH CLUSTERING ORDER BY (commentid DESC);
  • 20. 20 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Designer son API Modèle conceptuel de données (Entités, Relations) Parcours applicatif (Requêtes) Base de données (Technos +Table)
  • 21. 21 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019
  • 22. 22 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Objectifs  Un repo Github avec plusieurs implémentations pour une API o REST, GraphQL, gRPC  Détails d’implémentation o Design o Code Review o Demos  Points forts et points faibles
  • 23. 23 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019 Designer son API Modèle conceptuel de données (Entités, Relations) Parcours applicatif (Requêtes) Base de données (Technos +Table) Cache Sync vs Async Reactive SLA (Volume) Intégrité Filtres Pagination Tris Latences Throughput CRUD, SEARCH Versioning Confidentialité Atomicité Cardinalité SEARCH, COMMANDS Développement Clients Language CodeFirst/ Vs SchemaFirst Documentation Test Build Packaging Api Catalog Interne vs Externe Techno Profil XP
  • 24. 24 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019
  • 25. 25 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019
  • 26. 26 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019  Réutilisation HTTP, orienté ressources  Découplage Client/Serveur  Api évolutive (versioning)  Tooling (API Management)  Attention au payload  Exposition de fonctions/commandes  Pas de découverte  CRUD Superstar  Mutations (modifications)
  • 27. 27 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019  Haute Performance (Async, serialisation)  Sync, Async, Streaming  Services Distribués  Interopérabilité  Couplage fort  Protobuf  CRUD possible mais non adapté  API oriente commande / message  Gros réseaux de services
  • 28. 28 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019  Découverte des signatures  Personnalisation des réponses  Composition de services  Schéma types, implémentation des relations  Complexité de mise en œuvre  Appels cachés (N+1 select)  Endpoint unique  Agrégation de services  Adapte pour contraintes reseau/latence  Génial pour les client, attention pour le backend GraphQL
  • 29. 29 Create API for your databases Rest, gRPC, GraphQL @clunven | @SnowCampIO | #api 2019  https://github.com/clun/snowcamp2019

Notes de l'éditeur

  1. Traitement, fonction, story, comportement  Qui traverse toutes les couches applicatives