5. Qui offre une scalabilité horizontale linéaire
Besoin de plus de capacité Ajouter des nœuds
Besoin de plus de throughput Ajouter des nœuds
6. La donnée est distribuée
Country City Habitant
USA New York 8.000.000
USA Los Angeles 4.000.000
FR Paris 2.230.000
DE Berlin 3.350.000
UK London 9.200.000
AU Sydney 4.900.000
FR Toulouse 1.100.000
JP Tokyo 37.430.000
IN Mumbai 20.200.000
DE Nuremberg 500.000
CA Montreal 4.200.000
CA Toronto 6.200.000
Partition Key
8. La donnée est uniformément distribuée
A-E
CO City Habitant
AU Sydney 4.900.000
CA Toronto 6.200.000
CA Montreal 4.200.000
DE Berlin 3.350.000
DE Nuremberg 500.000
Partitionner
Hashing Function
CO City Habitant
59 Sydney 4.900.000
12 Toronto 6.200.000
12 Montreal 4.200.000
45 Berlin 3.350.000
45 Nuremberg 500.000
Tokens
VNode
27. Cas d’usages
High Throughput
High Volume
Mission Critical
Availability
Realtime
Distributed
Heavy Writes
Heavy Reads
Event Streaming
Internet of Things
Log Analytics
Any TimeSeries
Caching
Market Data
Prices
No Data Loss
Reponsive System
Any CRUD
API Layer
Geograhically
Deployments
D
R
A
S
Banking
Track and Trace
Customer Apps Enterprise Data
Layer
Applications
Global Company
Retailers
Hybrid Cloud
MultiCloud
?
29. Agenda
1 Les cas d’usage Cassandra
2
Architecture Micro Services
Cassandra & DataStax
3 Techniques d’implémentation
4 Exemples
30. Fragmentation des Architectures
30
Monolithique
Business
Logic
User
Interface
Data
Interface
Multi-Canal
UI Mobile UI Web
ESB
SOA
Specialisation
BUS
S1 S2 S3
S
n
RDBM
S
noSQ
L DataLak
e
Micro
Frontend
All Things Distributed
Web
Components
SP
A
Native
BFF (Backend for Frontend)
Micro
Services
Data Mesh
Api Gateway
Service
Discovery
RDBM
S
Grap
h
Hadoo
p
Documen
t
KV
newSQ
L
Colum
n
TSDB
Distributed
Tracing
Containerization
En couche
Business
Logic
(Services)
User
Interface
Data
Interface
(Dao)
Backend
Front-end
OLTP OLAP
RDBMS
32. Principes des Architectures MicroServices
Principes
Construire autour
des modèles
métiers
Décentraliser au
possible
Déploiements
Indépendants
Isoler les
fonctionnalités
Hautement
Observable
Masquer les
détails
implémentation
Automatisation
33. Architectures Micro-Services : Pros and Cons
Réduction des couts
• Design plus simple
• Rapidité de développement
• Faire scaler uniquement le nécessaire
Réduction des risques
• Résilience, redondance
• Simplicité des développements
• Sécurité
• Monitoring, Traçabilité
Introduction de complexité
• Gestion des déploiements
• Orchestration des services
• Gestion des Transactions
Changements de culture
• Smart endpoints, dumb Pipes
• Design for failure, graceful degradation
Augmentation du footsprint au RUN
InconvénientsAvantages
35. Données partagée ≠ une installation de la base de données
Apache Cassandra™ permet une isolation
Par keyspace (DC + option de réplications)
Par table (1 table = 1 requête + DOMAINE METIER)
Par utilisateur (RBAC)
Apache Cassandra™ is Always-ON
L’arrêt d’un nœud n’entraine pas d’arrêt du service
35
Database par service vs Database « partagée »
• Le couplage entre les services doit rester lâche
• Chaque service doit être responsable de ses données
• Une base de donnée partagée introduirait une forme de couplage
36. Eventual Consistency ou passer de « ACID » vers
« BASE »
Pour des opérations cross-services :
Atomicity Consistency Isolation Durability
(ACID) ne fonctionne plus.
Distributed transactions and 2 phases
commit (2PC) ne fonctionnent plus.
● BASE (Basic Availability, Soft-State,
Eventual Consistency) : Privilégier la
disponibilité sur la consistance
● Event Sourcing : Sauvegarde des
messages et non de l’état final
● Idempotence : Il doit être possible de
rejouer plusieurs fois chaque message
Order
Management
Service
Customer
Management
Service
NoSQL
Order
Database
SQL
Customer
Database
No distributed transaction
No joins
38. ● Architectures distribuées pensées pour la scalabilité et la résilience le requêtage en
temps réel.
● Des modèles de données adaptés aux besoins : timeseries, requêtes CRUD sur les
entités
● Un couplage lâche et une ségrégation by design , y compris sur le même cluster
○ keyspace = domaine
○ table = requêtes
● Une même philosophie pour l’implémentation des transactions et requêtes cross-
services
○ Basic Availability, Soft-State Eventual Consistency (BASE)
○ Command Query Responsibility Segregation (CQRS)
○ Sagas
38
Cassandra™ & DataStax Micro-services
39. Agenda
1 Les cas d’usage Cassandra
2
Architecture Micro Services
Cassandra & DataStax
3 Techniques d’implémentation
4 Exemples et Ressources
45. Bonne pratiques et configuration du drivers
● Activer les polices de Load Balancing | Retry |
Failover
● Définissez explicitement votre Datacenter de
travail (ou anneau) pour limiter la latence
● Les sessions ne sont pas stateless
○ L’initialisation de la connexion prend un certain
temps
○ Utiliser les fonctions cold start le serverless
○ Fermer les sessions lors de l’arrêt de vos
applications (shutdown hooks)
○ Utiliser un rollings restart des micro-services pour ne
pas rétablir toutes les connections en même temps45
datastax-java-driver {
basic {
load-balancing-policy {
# The class of the policy.
class = DefaultLoadBalancingPolicy
# The datacenter that is considered "local"
# The default policy will only include nodes from
# this datacenter in its query plans.
local-datacenter = datacenter1
# A custom filter to include/exclude nodes
// filter.class=
}
}
}
application.conf
46. Containeurs
● Pour les déploiements les
architectures à base de containeurs
sont très répandues
● Attention:
● Les bases de données sont statefuls
aussi bien penser à utiliser les
statefulsets Kubernetes ou un operator
pour les opérations de maintenance.
46 https://github.com/datastax/labs/tree/master/dse-k8s-operator
47. Agenda
1 Les cas d’usage Cassandra
2
Architecture Micro Services
Cassandra & DataStax
3 Techniques d’implémentation
4 Exemples et Ressources
48. KillrVideo Reference Application
48
● Application de référence pour
apprendre à développer avec
Apache Cassandra et DataStax
Enteprise
○ DataStax Drivers
○ Docker images
● Code source disponible ici:
○ https://github.com/killrvideo
● Version live disponible ici :
http://killrvideo.com
49. 1. WEB
Client
bootstra
p
reac
t
redu
x
falco
r
2. SERVICE REGISTRY
5. SERVICES
8. DSE
CASSANDRA
SEARCH
GRAPH
ANALYTICS
4. STUDIO
DRIVERS
3. REGISTRATOR
7. INTEGRATION TESTS
Server
falco
r
Customer
Browser
6. GENERATOR
Killrvideo-generator
Killrvideo-it
1b
1c
1d
1a
7a
7b
6a 6b
3a
5a
5b
3b
4b
4a