SlideShare une entreprise Scribd logo
1  sur  29
1
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Designer ses API
Pour l’accès aux données
2
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Cédrick Lunven
Developer Advocate
Créateur Contributeur
3
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
http://academy.datastax.com
(Training | Videos | Developer Blog)
4
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Objectifs
 Un repo Github avec plusieurs implémentations pour
une API
o REST, GraphQL, gRPC
https://github.com/clun/devfestbdm2019
6
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Cassandra - Evelyn de Morgan (1855-1919)
Apache Cassandra
7
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Noeud
1 à 3To
3000 Tx/sec/core
Anneau
(DataCenter)
Apache Cassandra
8
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Apache Cassandra
 La donnée est partitionnée
 La donnée est répliquée
 Lecture/ écriture de partout
 Consistance Variable
Client
 Masterless
9
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
On-Premise
Data Center
Cluster
Apache Cassandra
10
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Application
11
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
http://dev.killrvideo.com
https://killrvideo.github.io/
12
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
1
killrvideo-dse
Drivers
DAO3
killrvideo-api-rest killrvideo-api-grpc killrvideo-api-graphql
2
Designer son service
13
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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ées1
14
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Modèle conceptuel
15
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
Designer son API
Modèle conceptuel
de données
(Entités, Relations)
Parcours applicatif
(Requêtes)
Base de données
(Technos +Table)
21
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
22
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
25
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
26
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
 Réutilisation d’HTTP, orienté ressources
 Découplage Client / Serveur
 Api évolutive (versioning)
 Tooling (API Management)
 Payloads lourds
 Exposition de fonctions/commandes
 Pas de discoverabilité
 CRUD Superstar
 Mutations (modifications)
27
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
 Haute Performance (Async, sérialisation)
 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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
 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
Designer une API pour votre base de données (Rest || GraphQL || gRPC)
@clunven | @DevfestBdM | #api | #DevFestBDM
https://github.com/clun/devfestbdm2019

Contenu connexe

Similaire à DevFestBdm2019

Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxWafaNeji
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Microsoft Technet France
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Microsoft Décideurs IT
 
#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
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day parisLeTesteur
 
Graph QL par Andy Gigon
Graph QL par Andy GigonGraph QL par Andy Gigon
Graph QL par Andy GigonIdean France
 
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
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)Restlet
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv PsGregory Renard
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
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
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinThierry Buisson
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBruno Bonnin
 
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
 
Sybase Connect Atelier Power Builderv2
Sybase Connect Atelier Power Builderv2Sybase Connect Atelier Power Builderv2
Sybase Connect Atelier Power Builderv2apratt72
 

Similaire à DevFestBdm2019 (20)

Formation gwt
Formation gwtFormation gwt
Formation gwt
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptx
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"
 
#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
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day paris
 
Graph QL par Andy Gigon
Graph QL par Andy GigonGraph QL par Andy Gigon
Graph QL par Andy Gigon
 
TP GWT JDEV 2015
TP GWT JDEV 2015TP GWT JDEV 2015
TP GWT JDEV 2015
 
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
 
Refcard GraphQL
Refcard GraphQLRefcard GraphQL
Refcard GraphQL
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
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...
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
 
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...
 
Dynamic Languages
Dynamic LanguagesDynamic Languages
Dynamic Languages
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 
Sybase Connect Atelier Power Builderv2
Sybase Connect Atelier Power Builderv2Sybase Connect Atelier Power Builderv2
Sybase Connect Atelier Power Builderv2
 

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
 

DevFestBdm2019

  • 1. 1 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM Designer ses API Pour l’accès aux données
  • 2. 2 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM Cédrick Lunven Developer Advocate Créateur Contributeur
  • 3. 3 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM http://academy.datastax.com (Training | Videos | Developer Blog)
  • 4. 4 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM Objectifs  Un repo Github avec plusieurs implémentations pour une API o REST, GraphQL, gRPC https://github.com/clun/devfestbdm2019
  • 6. 6 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM Cassandra - Evelyn de Morgan (1855-1919) Apache Cassandra
  • 7. 7 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM Noeud 1 à 3To 3000 Tx/sec/core Anneau (DataCenter) Apache Cassandra
  • 8. 8 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM On-Premise Data Center Cluster Apache Cassandra
  • 10. 10 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM Application
  • 11. 11 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM http://dev.killrvideo.com https://killrvideo.github.io/
  • 12. 12 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 1 killrvideo-dse Drivers DAO3 killrvideo-api-rest killrvideo-api-grpc killrvideo-api-graphql 2 Designer son service
  • 13. 13 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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ées1
  • 14. 14 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM Modèle conceptuel
  • 15. 15 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM Designer son API Modèle conceptuel de données (Entités, Relations) Parcours applicatif (Requêtes) Base de données (Technos +Table)
  • 21. 21 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM
  • 22. 22 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM 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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM
  • 25. 25 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM
  • 26. 26 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM  Réutilisation d’HTTP, orienté ressources  Découplage Client / Serveur  Api évolutive (versioning)  Tooling (API Management)  Payloads lourds  Exposition de fonctions/commandes  Pas de discoverabilité  CRUD Superstar  Mutations (modifications)
  • 27. 27 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM  Haute Performance (Async, sérialisation)  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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM  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 Designer une API pour votre base de données (Rest || GraphQL || gRPC) @clunven | @DevfestBdM | #api | #DevFestBDM https://github.com/clun/devfestbdm2019