SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
De 20 000 à 4 millions
Khanh Tuong Maudoux
@jetoile
2
Qui suis-
Khanh Tuong Maudoux
Développeur Java indépendant
blog : http://blog.jetoile.fr
@jetoile
khanh.maudoux@jetoile.fr
3
Contexte
Collecteur
Stockage
Lecture
Traitement
4
Contexte
5
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
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 !
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
Contexte
État des lieux
9
Stockage
TimeSeries
Data
Data
Data
Data
Collecteur Consolidation Applicatif
Stockage
Stockage
Contexte
État des lieux
10
Contexte
Objectifs
11
Objectif :
Remplacer la solution de stockage
Ne pas oublier la phase le ré-import totale! (~3 ans de données)
Collecteur
12
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
Collecteur
État des lieux
14
Stockage
Data
Data
Data
Data
Transformation
Objetpivot
Routageparxpath
Transformation
Objetpivot
Data
XML
Data
XML
Transformation
JAXB
Transformation
JAXB
Data
Java
Data
Java
Data
DTO
Data
DTO
Collecteur
Pistes
15
Pistes :
Spring Batch
EIP
Spring Batch + EIP
Collecteur
16
Outils / Framework :
Spring Integration
Metrics
JMX / Jolokia
Hawt.io
Maven!
Collecteur
17
Spring Integration
Architecture « Pipe and Filters »
Collecteur
18
Stockage
Data
Data
Data
Data
Transformation
Objetpivot
Routageparxpath
Transformation
Objetpivot
Data
XML
Data
XML
Transformation
JAXB
Transformation
JAXB
Data
Java
Data
Java
Data
DTO
Data
DTO
Spring Integration
Collecteur
19
Spring Integration
Collecteur
20
Spring Integration
Collecteur
21
Spring Integration
Collecteur
22
Spring Integration
Collecteur
23
Spring Integration
Collecteur
24
Spring Integration
Message-history
Scalabilité horizontale
Collecteur
25
Metrics
Collecteur
26
Jolokia
JMX via HTTP/JSON
Collecteur
27
Hawt.io
Collecteur
28
Maven
maven-jaxb2-plugin (org.jvnet.jaxb2.maven2)
appassembler-maven-plugin (org.codehaus.mojo)
Collecteur
29
endpoint REST pour injection
Stockage
30
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)
Stockage
32
Cassandra
Base de données orientée colonnes
Keyspace
Column Family
Column
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
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
Stockage
35
Jolokia
Comme agent sur la JVM
Lecture
36
Lecture
Objectifs
37
Évaluer la pertinence de la solution de stockage
Véloce
Simple
Remonté de métriques
=> injecteur !
Lecture
Pistes
38
Pistes :
From scratch
Lecture
39
Outils / Framework :
RestEasy Netty
Swagger
JMX / Jolokia
Hawt.io
Maven
Gatling / AB
Lecture
40
RestEasy Netty :
JAX-RS
Netty
Simple
Lecture
41
Swagger :
Lecture
42
Jolokia
Lecture
43
Gatling
Traitement
44
Traitement
Rappel
45
Stockage
TimeSeries
Data
Data
Data
Data
Collecteur Consolidation Applicatif
Stockage
Stockage
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 !
Traitement
Objectifs
47
Objectif :
Lambda architecture
Query = function (all data)
Traitement
Objectifs
48
Objectif :
Query = function (all data)
Service LayerBatch Layer
Data
Data
Data
Data
collecte
C*
Transformation
Objetpivot
C*DAO
Valo
C*
C*
transformation
All datas Precompute views Batch views
Traitement
49
Spark / Hadoop
Traitement
Objectifs ?
50
Volumétrie non acceptable pour la production :
Duplication de la donnée
Souhaite une solution avec calcul à la demande
Traitement
Objectifs ?
51
Traitement
Service Layer
Data
Data
Data
Data
collecte
C*Transformation
Objetpivot
C*DAO
Valo
C*
C*
transformation
All datas Precompute views Batch views
Traitement
Objectifs ?
52
Algorithme de lissage en amont
53
Conclusion
Merci !
54
Questions ?
55
pas le feedback en sortant !
ou ?

Más contenido relacionado

La actualidad más candente

Découverte de Redis
Découverte de RedisDécouverte de Redis
Découverte de RedisJEMLI Fathi
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopBenoît de CHATEAUVIEUX
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réellesGeoffroy Arnoud
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearchFadel Chafai
 
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataJournées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataDavid Joubert
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Silicon Comté
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Alexis Seigneurin
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Alexis Seigneurin
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & SparkAlexia Audevart
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in ParisTed Drake
 

La actualidad más candente (20)

Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015
 
Hadoop unit
Hadoop unitHadoop unit
Hadoop unit
 
Découverte de Redis
Découverte de RedisDécouverte de Redis
Découverte de Redis
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réelles
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearch
 
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big DataJournées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
Journées SQL 2014 - Hive ou la convergence entre datawarehouse et Big Data
 
HADOOP + R
HADOOP + RHADOOP + R
HADOOP + R
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
Introduction spark
Introduction sparkIntroduction spark
Introduction spark
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in Paris
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Spark dataframe
Spark dataframeSpark dataframe
Spark dataframe
 
Chapitre 4 no sql
Chapitre 4 no sqlChapitre 4 no sql
Chapitre 4 no sql
 

Similar a De 20 000 à 4 millions d'utilisateurs : mode d'emploi

Elastic Morocco user group meetup June
Elastic Morocco user group meetup JuneElastic Morocco user group meetup June
Elastic Morocco user group meetup JuneAnna Ossowski
 
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataAzure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataMicrosoft
 
Alphorm.com Formation Elastic : Maitriser les fondamentaux
Alphorm.com Formation Elastic : Maitriser les fondamentauxAlphorm.com Formation Elastic : Maitriser les fondamentaux
Alphorm.com Formation Elastic : Maitriser les fondamentauxAlphorm
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103MRamo2s
 
Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesFabien SABATIER
 
Journées SQL Server 2011 Extended Events
Journées SQL Server 2011  Extended Events Journées SQL Server 2011  Extended Events
Journées SQL Server 2011 Extended Events David BAFFALEUF
 
LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.pptIdriss22
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB MongoDB
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormParis_Storm_UG
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
Indexation d'une base documentaire pour Liberation
Indexation d'une base documentaire pour LiberationIndexation d'une base documentaire pour Liberation
Indexation d'une base documentaire pour LiberationParis, France
 
Spark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystSpark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystMathieu Goeminne
 
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]IBM France PME-ETI
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
Yrecommender, machine learning sur Hybris
Yrecommender, machine learning sur HybrisYrecommender, machine learning sur Hybris
Yrecommender, machine learning sur HybrisGuillaume Kpotufe
 

Similar a De 20 000 à 4 millions d'utilisateurs : mode d'emploi (20)

Elastic Morocco user group meetup June
Elastic Morocco user group meetup JuneElastic Morocco user group meetup June
Elastic Morocco user group meetup June
 
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataAzure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
 
Alphorm.com Formation Elastic : Maitriser les fondamentaux
Alphorm.com Formation Elastic : Maitriser les fondamentauxAlphorm.com Formation Elastic : Maitriser les fondamentaux
Alphorm.com Formation Elastic : Maitriser les fondamentaux
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103
 
mix-it 2011
mix-it 2011mix-it 2011
mix-it 2011
 
Cache
CacheCache
Cache
 
Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avances
 
Journées SQL Server 2011 Extended Events
Journées SQL Server 2011  Extended Events Journées SQL Server 2011  Extended Events
Journées SQL Server 2011 Extended Events
 
LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.ppt
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec Storm
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
Indexation d'une base documentaire pour Liberation
Indexation d'une base documentaire pour LiberationIndexation d'une base documentaire pour Liberation
Indexation d'une base documentaire pour Liberation
 
Spark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystSpark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et Catalyst
 
Rapport tp2 j2ee
Rapport tp2 j2eeRapport tp2 j2ee
Rapport tp2 j2ee
 
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
 
Spring Batch
Spring BatchSpring Batch
Spring Batch
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
Yrecommender, machine learning sur Hybris
Yrecommender, machine learning sur HybrisYrecommender, machine learning sur Hybris
Yrecommender, machine learning sur Hybris
 

De 20 000 à 4 millions d'utilisateurs : mode d'emploi