de 20 000 à 4 millions d'utilisateurs : mode d'emploi
TRANSCRIPT
![Page 1: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/1.jpg)
De 20 000 à 4 millions
Khanh Tuong Maudoux
@jetoile
![Page 2: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/2.jpg)
2
![Page 3: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/3.jpg)
Qui suis-
Khanh Tuong Maudoux
Développeur Java indépendant
blog : http://blog.jetoile.fr
@jetoile
3
![Page 4: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/4.jpg)
Contexte
Collecteur
Stockage
Lecture
Traitement
4
![Page 5: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/5.jpg)
Contexte
5
![Page 6: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/6.jpg)
Contexte Fonctionnel
6
Réception de relevés de compteurs (fichiers xml)
Fournir une consolidation (valorisation) des consommations en fonction de différents critères
Algorithmes de lissage et de détection à faire sur les données
Algorithmes de valorisation à faire sur les données
![Page 7: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/7.jpg)
Contexte Volumétrie
7
Avant : 20.0000 clients
Cible : 4.000.000 clients
~ 3.000.000 fichiers par jours (~156 Go/jour)
Avec un pas de 30 minutes !
![Page 8: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/8.jpg)
Contexte État des lieux
8
Algorithmes de lissage et de détection fait au moment de la collecte long »
=> anomalies « courantes »
Algorithmes de consolidation exécutés par batch sur les données stockées
![Page 9: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/9.jpg)
Contexte État des lieux
9
Stockage TimeSeries
Data Data
Data Data
Collecteur Consolidation Applicatif
Stockage
Stockage
![Page 10: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/10.jpg)
Contexte État des lieux
10
![Page 11: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/11.jpg)
Contexte Objectifs
11
Objectif : Remplacer la solution de stockage
Ne pas oublier la phase le ré-import totale! (~3 ans de données)
![Page 12: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/12.jpg)
Collecteur
12
![Page 13: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/13.jpg)
Collecteur Objectifs
13
Batch de collecte avec stockage dans une solution propriétaire
Objectifs : Valider différentes solutions (Cassandra, MySQL Cluster)
Valider le modèle de données
![Page 14: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/14.jpg)
Collecteur État des lieux
14
Stockage
Data Data
Data Data
Tran
sfo
rmat
ion
O
bje
t p
ivo
t
Ro
uta
ge p
ar x
pat
h
Tran
sfo
rmat
ion
O
bje
t p
ivo
t
Data XML
Data XML
Tran
sfo
rmat
ion
JA
XB
Tr
ansf
orm
atio
n
JAX
B
Data Java
Data Java
Data DTO
Data DTO
![Page 15: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/15.jpg)
Collecteur Pistes
15
Pistes :
Spring Batch
EIP
Spring Batch + EIP
![Page 16: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/16.jpg)
Collecteur
16
Outils / Framework : Spring Integration
Metrics
JMX / Jolokia
Hawt.io
Maven!
![Page 17: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/17.jpg)
Collecteur
17
Spring Integration Architecture « Pipe and Filters »
![Page 18: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/18.jpg)
Collecteur
18
Stockage
Data Data
Data Data
Tran
sfo
rmat
ion
O
bje
t p
ivo
t
Ro
uta
ge p
ar x
pat
h
Tran
sfo
rmat
ion
O
bje
t p
ivo
t
Data XML
Data XML
Tran
sfo
rmat
ion
JA
XB
Tr
ansf
orm
atio
n
JAX
B
Data Java
Data Java
Data DTO
Data DTO
Spring Integration
![Page 19: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/19.jpg)
Collecteur
19
Spring Integration
![Page 20: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/20.jpg)
Collecteur
20
Spring Integration
![Page 21: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/21.jpg)
Collecteur
21
Spring Integration
![Page 22: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/22.jpg)
Collecteur
22
Spring Integration
![Page 23: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/23.jpg)
Collecteur
23
Spring Integration
![Page 24: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/24.jpg)
Collecteur
24
Spring Integration Message-history
Scalabilité horizontale
![Page 25: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/25.jpg)
Collecteur
25
Metrics
![Page 26: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/26.jpg)
Collecteur
26
Jolokia JMX via HTTP/JSON
![Page 27: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/27.jpg)
Collecteur
27
Hawt.io
![Page 28: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/28.jpg)
Collecteur
28
Maven maven-jaxb2-plugin (org.jvnet.jaxb2.maven2)
appassembler-maven-plugin (org.codehaus.mojo)
![Page 29: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/29.jpg)
Collecteur
29
endpoint REST pour injection
![Page 30: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/30.jpg)
Stockage
30
![Page 31: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/31.jpg)
Stockage Objectifs
31
Rappels : Remplacer la solution existante de stockage
Chaque capteur remonte une donnée toutes les 30 minutes
Time series (au plus 50 000 colonnes par ligne)
![Page 32: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/32.jpg)
Stockage
32
Cassandra Base de données orientée colonnes
Keyspace
Column Family
Column
![Page 33: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/33.jpg)
Stockage
33
Cassandra Time series : 1 ligne avec de multiples colonnes (clé composite)
CREATE TABLE capteur (
capteur_id text,
event timestamp,
temperature text,
PRIMARY KEY (capteur_id, event)
)
Ordonnée
capteur_id event
temperature
event
temperature
![Page 34: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/34.jpg)
Stockage
34
Attention longueur/taille de ligne
CREATE TABLE capteur (
capteur_id text,
event_period text,
event timestamp,
value text,
PRIMARY KEY ((capteur_id, event_period), event)
)
Attention modélisation
aggrégation
![Page 35: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/35.jpg)
Stockage
35
Jolokia Comme agent sur la JVM
![Page 36: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/36.jpg)
Lecture
36
![Page 37: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/37.jpg)
Lecture Objectifs
37
Évaluer la pertinence de la solution de stockage
Véloce
Simple
Remonté de métriques
=> injecteur !
![Page 38: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/38.jpg)
Lecture Pistes
38
Pistes : From scratch
![Page 39: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/39.jpg)
Lecture
39
Outils / Framework : RestEasy Netty
Swagger
JMX / Jolokia
Hawt.io
Maven
Gatling / AB
![Page 40: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/40.jpg)
Lecture
40
RestEasy Netty : JAX-RS
Netty
Simple
![Page 41: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/41.jpg)
Lecture
41
Swagger :
![Page 42: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/42.jpg)
Lecture
42
Jolokia
![Page 43: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/43.jpg)
Lecture
43
Gatling
![Page 44: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/44.jpg)
Traitement
44
![Page 45: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/45.jpg)
Traitement Rappel
45
Stockage TimeSeries
Data Data
Data Data
Collecteur Consolidation Applicatif
Stockage
Stockage
![Page 46: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/46.jpg)
Traitement Objectifs
46
Objectif : Collecte
Rapide
Pas de pertes de données (sécurisation de la données)
Détection des données fausses Faite en aval de la collecte
Consolidation Faite sur les données « valides » avec stockage des mesures dans des « batch View »
Séparation des concepts !
![Page 47: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/47.jpg)
Traitement Objectifs
47
Objectif : Lambda architecture
Query = function (all data)
![Page 48: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/48.jpg)
Traitement Objectifs
48
Objectif :
Query = function (all data)
Service Layer Batch Layer
Data Data
Data Data
collecte
C* Tr
ansf
orm
atio
n
Ob
jet
piv
ot
C*D
AO
Valo
C*
C*
transformation
All datas Precompute views Batch views
![Page 49: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/49.jpg)
Traitement
49
Spark / Hadoop
![Page 50: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/50.jpg)
Traitement Objectifs ?
50
Volumétrie non acceptable pour la production :
Duplication de la donnée
Souhaite une solution avec calcul à la demande
![Page 51: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/51.jpg)
Traitement Objectifs ?
51
Traitement
Service Layer
Data Data
Data Data
collecte
C* Tr
ansf
orm
atio
n
Ob
jet
piv
ot
C*D
AO
Valo
C*
C*
transformation
All datas Precompute views Batch views
![Page 52: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/52.jpg)
Traitement Objectifs ?
52
Algorithme de lissage en amont
![Page 53: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/53.jpg)
53
Conclusion
![Page 54: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/54.jpg)
Merci !
54
![Page 55: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/55.jpg)
Questions ?
55
![Page 56: De 20 000 à 4 millions d'utilisateurs : mode d'emploi](https://reader034.vdocuments.mx/reader034/viewer/2022051617/55a3ae391a28abfd458b4583/html5/thumbnails/56.jpg)
pas le feedback en sortant !
ou ?