SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
ZENIKA MONGODB
TOUR
RETOUR
D’EXPÉRIENCE -
PROJET AMADEUS
BIOGRAPHIE
FRANÇOIS FORNACIARI
CONSULTANT – FORMATEUR
• Réalisation d’applications Web / RIA / OSGi
• Employeurs : Bull, Zenika (Manpower, Unibail, Amadeus)
• Conférences : JavaOne, ApacheCon, OSGi DevCon, Mix-IT,
JUG
• francois.fornaciari@zenika.com
• @fornacif
Zenika MongoDB Tour 03/07/2014 - 2
AMADEUS
• France Services fournit des solutions de
traitement des réservations pour l'industrie du voyage
• Clients d’Amadeus
• Des prestataires de voyages (compagnies traditionnelles et à
bas prix, hôteliers, croisiéristes, compagnies ferroviaires, de
ferry, de location de voitures et tour-opérateurs)
• Des agences de voyages (en ligne et hors ligne)
• Un modèle économique basé sur les transactions
Zenika MongoDB Tour 03/07/2014 - 3
CONTEXTE PROJET
PROBLÉMATIQUE
Un tour-opérateur français souhaite étendre la distribution de
ses prestations (villages vacances) au delà de son réseau
d’agences et de son propre site web
OBJECTIFS
Confier à Amadeus la distribution de son catalogue et de ses
offres vers différents partenaires internationaux
Zenika MongoDB Tour 03/07/2014 - 4
APERÇU DE LA SOLUTION
Zenika MongoDB Tour 03/07/2014 - 5
Tour-opérateur
français
Plateforme
d’inter-
médiation
Plateformes de
distributions
(Allemagne,
USA, France, …)
Agences de
voyages
QUELQUES CHIFFRES
Zenika MongoDB Tour 03/07/2014 - 6
PRODUITS : VILLAGES VACANCES
• Produits déclinés par
• Saison (été-hiver)
• Pays (marché)
• Actualisation des produits toutes les semaines
OFFRES : DISPONIBILITÉS ET TARIFS DES SÉJOURS
• Environ 5 000 000 offres chargées tous les jours
• A terme : stockage d’environ 100 000 000 offres
CHRONOLOGIE
Zenika MongoDB Tour 03/07/2014 - 7
22h00
Produits
Asie
23h00
Offres
Asie
01h00
Produits
Europe
02h00
Offres
Europe
03h00
Offres
Allemagne
04h00
Produits
Allemagne
06h00
Produits
Amérique
07h00
Offres
Amérique
08h00
Offres
USA
09h00
Produits
USA
Import
Export
CHOIX MONGODB
Zenika MongoDB Tour 03/07/2014 - 8
INSERTION ET RESTITUTION MASSIVE DE DONNÉES
 Capacité à mettre en cache de larges volumes de données
TOLÉRANCE AUX PANNES
 Utilisation de plusieurs nœuds MongoDB
MONTÉE EN CHARGE
 Possibilité d’utiliser les mécanismes de sharding
FORMAT DES DONNÉES EN ENTRÉE DE TYPE JSON
 Facilité de mapping des données sources
REQUÊTAGE COMPLEXE DES DONNÉES
 Clients multi-languages, framework d’agrégation
ARCHITECTURE APPLICATIVE
Zenika MongoDB Tour 03/07/2014 - 9
Référentiel
des offres
& produits
Offres
Plateforme
d’intermédiation
Produits WWW
Batch
d’import
FTP
Batches
d’export
France
Allemagne
USA
API
Console d’admin
Autre...
Tour-
opérateur
COLLECTIONS MONGODB
Zenika MongoDB Tour 03/07/2014 - 10
• DONNÉES MÉTIER
• RÉFÉRENTIEL DE DONNÉES
• REPORTING
offres produits
pays équipements
TripAvisor
BATCH D’IMPORT
Zenika MongoDB Tour 03/07/2014 - 11
Scheduling des
batches
Lecture
• Fichier CSV par bloc
de lignes (chunk)
• Appel Web Services
Processing
• Enrichissement des
données
• Validation
Ecriture dans
BATCH D’EXPORT
Zenika MongoDB Tour 03/07/2014 - 12
Scheduling des
batches
Lecture
paginée depuis
Processing
• Enrichissement
des données
Ecriture
• CSV
• XML
ACTUALISATION DES DONNÉES
Zenika MongoDB Tour 03/07/2014 - 13
RECHARGEMENT DES DONNÉES
• Les données sont remplacées dans leur intégralité
quotidiennement
• Système de « bascule » à chaque fin d’exécution d’un batch
d’import
• Les nouvelles données ne sont distribuées que si le batch
s’exécute intégralement : transaction globale
PRINCIPE
temp_offers_europe
offers_europe db.temp_offers_europe.renameCollection("offers_europe")
RÉPLICATION DES DONNÉES
Zenika MongoDB Tour 03/07/2014 - 14
REPLICA SET DE 3 NŒUDS
PRINCIPE D’ÉLECTION DU NOUVEAU NŒUD PRIMAIRE
Primary Secondary Arbiterréplication
Primary
Primary Secondary Arbiter
Election (2-5s)
Arbiter
Secondary
WRITE CONCERN
ACKNOWLEDGED
Source : http://docs.mongodb.org/manual/core/write-concern/
VERSIONING DES DONNÉES
Zenika MongoDB Tour 03/07/2014 - 16
2 VERSIONS DE DONNÉES EN PARALLÈLE
offers_europe_2
offers_europe_1
Batch
d’import
Console
d’administration
Batch
d’export
API TripAdvisor
Zenika MongoDB Tour 03/07/2014 - 17
DRIVERS JAVA VIA LA BIBLIOTHÈQUE DATA MONGODB
• Ecriture simplifiée pour les requêtes simples (convention de
nommage)
• Utilisation de l’API Criteria pour les requêtes complexes
• Portage de la plupart des commandes / opérateurs du shell
MongoDB
• Exemple de requête
Query query = new Query();
query.addCriteria(Criteria.where("code").is(resortCode));
query.addCriteria(Criteria.where("lang").is(resortLang));
return mongoTemplate.findAll(query, Resort.class, "offers_europe");
CLIENT MONGODB
AGRÉGATIONS
Zenika MongoDB Tour 03/07/2014 - 18
CAS D’UTILISATION
• Récupération des chambres par hôtel et par période pour un
marché donné
PRODUIT : JSON SIMPLIFIÉ
{
"code" : "ABCD",
"countrySellingCode" : "10",
"period" : "14H",
"roomTypes" : [
{
"rooms" :
[
{ "code" : "B2", "label" : "Standard Room" },
{ "code" : "C2", "label" : "Deluxe Room" }
]
}
]
}
AGRÉGATIONS
Zenika MongoDB Tour 03/07/2014 - 19
[{RT1: [R1,R2]},
{RT2: [R3, R4]}]
[{RT1: [R1,R2]},
{RT3: [R5, R6]}]
{RT1: [R1,R2]} {RT2: [R3,R4]} {RT1: [R1,R2]} {RT3: [R5,R6]}
{R1} {R2} {R3}
P1
{R4} {R5} {R6}
P2
UnwindUnwind
AGRÉGATIONS
Zenika MongoDB Tour 03/07/2014 - 20
REQUÊTE
newAggregation(
match(
where("countrySellingCode").is(countrySellingCode)
),
unwind("roomTypes"),
unwind("roomTypes.rooms"),
group(fields().
and("resortCode", "code").
and("period", "period").
and("roomCode", "roomTypes.rooms.code").
and("roomLabel", "roomTypes.rooms.label")
)
);
REPORTING TRIPADVISOR
Zenika MongoDB Tour 03/07/2014 - 21
HISTORISATION DES APPELS À L’API
• Agrégation des appels durant 1 minute, puis mis à jour de la
collection
PRÉ-AGRÉGATION DES REQUÊTES
• Opérateur « upsert » pour historiser les dernières requêtes
reçues
• Exemple de structure d’un document
{count: 50, country: "FR", date: "17/06/2014"}
TESTS D’INTÉGRATION
Zenika MongoDB Tour 03/07/2014 - 22
PROCÉDURE
1. Démarrage d’une instance MongoDB « embedded »
2. Insertion des données
3. Lancement des tests
4. Vérification des résultats
OUTILS
• Flapdoodle Embedded MongoDB
• https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo
• Embed Mongo Maven plugin
• https://github.com/joelittlejohn/embedmongo-maven-plugin
PERFORMANCES
Zenika MongoDB Tour 03/07/2014 - 23
MÉTRIQUES MONGODB
• Logs des requêtes > à 100ms
• Commande serverStatus()
• Commande explain()
AXES D’OPTIMISATION
• Configuration des indexes
• Pagination des requêtes (attention à l’utilisation du skip)
• Mise en cache des résultats
• Projection sur une partie des propriétés d’un document
PERFORMANCES API TRIPADVISOR
Zenika MongoDB Tour 03/07/2014 - 24
MISE À DISPOSITION DES DONNÉES
• Service HTTP REST/JSON
• Instance MongoDB identique à celle utilisée par les batches
SLA
• Disponibilité du service 24h/24 7j/7
BENCHMARK
• Débit maximal établi à 600 requêtes/sec
• VM de benchmark : 1 CPU 2,1Ghz + 4Go RAM
• Taille « working set » : 1,5 Go
OUTILS DE DÉVELOPPEMENT
Zenika MongoDB Tour 03/07/2014 - 25
SHELL MONGODB
ROBOMONGO
ARCHITECTURE DE PRODUCTION
Zenika MongoDB Tour 03/07/2014 - 26
Plateforme
d’intermédiation
VM batch VM
MongoDB +
MySQL
VM APIs &
Console
VM
MongoDB +
MySQL
Apache
Tomcat
FTP
Apache
Tomcat
• Master
Accès à
MongoDB
• Slave
• Arbiter
EXPLOITATION MONGODB
Zenika MongoDB Tour 03/07/2014 - 27
HÉBERGEMENT EXTERNE
• Sous-traitance de l’exploitation de la solution
• Installation sur VM dédiées
• Fourniture des livrables et d’une procédure d’installation
• Sauvegarde quotidienne via mongodump
MONITORING
• Indicateurs système (CPU, RAM, I/O, Disque)
• Plugin MongoDB pour Cacti
• Vérification de la connexion depuis l’application
MONITORING
Zenika MongoDB Tour 03/07/2014 - 28
DÉMO
Zenika MongoDB Tour 03/07/2014 - 29
PROCHAINES ÉTAPES
Zenika MongoDB Tour 03/07/2014 - 32
INTÉGRATION NOUVEAUX MARCHÉS
• Augmentation de la RAM sur les VMs si nécessaire
• Sharding des données pour répartir la charge sur plusieurs
nœuds : découpage par zone
• Indexes TTL si MAJ partielles des offres (expiration)
EVOLUTIONS TECHNOLOGIQUES
• Migration vers MongoDB 2.6
• Étude intégration MMS
MERCI
Zenika MongoDB Tour 03/07/2014 - 33

Contenu connexe

Tendances

Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production MongoDB
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?Sébastien Prunier
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasPierre-Alban DEWITTE
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeMongoDB
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBMongoDB
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
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
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...Horacio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
Retour aux fondamentaux : Penser en termes de documents
Retour aux fondamentaux : Penser en termes de documentsRetour aux fondamentaux : Penser en termes de documents
Retour aux fondamentaux : Penser en termes de documentsMongoDB
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
MUG Nantes - MongoDB et son connecteur pour hadoop
MUG Nantes - MongoDB et son connecteur pour hadoopMUG Nantes - MongoDB et son connecteur pour hadoop
MUG Nantes - MongoDB et son connecteur pour hadoopBruno Bonnin
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSHoracio Gonzalez
 
NoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationNoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationMicrosoft Technet France
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPressChi Nacim
 

Tendances (20)

Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
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
 
REX : la webperf chez RueDuCommerce
REX : la webperf chez RueDuCommerceREX : la webperf chez RueDuCommerce
REX : la webperf chez RueDuCommerce
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
 
introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
Retour aux fondamentaux : Penser en termes de documents
Retour aux fondamentaux : Penser en termes de documentsRetour aux fondamentaux : Penser en termes de documents
Retour aux fondamentaux : Penser en termes de documents
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
MUG Nantes - MongoDB et son connecteur pour hadoop
MUG Nantes - MongoDB et son connecteur pour hadoopMUG Nantes - MongoDB et son connecteur pour hadoop
MUG Nantes - MongoDB et son connecteur pour hadoop
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
 
NoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationNoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisation
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPress
 

En vedette

Super marmite-pourquoi-choisir-mongodb
Super marmite-pourquoi-choisir-mongodbSuper marmite-pourquoi-choisir-mongodb
Super marmite-pourquoi-choisir-mongodbCyril Mougel
 
Amadeus
AmadeusAmadeus
AmadeusH Boy
 
MongoDB Shell Tips & Tricks
MongoDB Shell Tips & TricksMongoDB Shell Tips & Tricks
MongoDB Shell Tips & TricksMongoDB
 
BigData en France par Excelerate Systems
BigData en France par Excelerate Systems BigData en France par Excelerate Systems
BigData en France par Excelerate Systems Excelerate Systems
 
Construire des Applications Web Performantes - Rule Book Webinar
Construire des Applications Web Performantes - Rule Book WebinarConstruire des Applications Web Performantes - Rule Book Webinar
Construire des Applications Web Performantes - Rule Book WebinarAmazon Web Services
 
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réelMathieu DESPRIEE
 
MongoDB Management & Ansible
MongoDB Management & AnsibleMongoDB Management & Ansible
MongoDB Management & AnsibleMongoDB
 
#BigDataBx 1 - Présentation de la BI au BigData - Solocal Group
#BigDataBx 1 - Présentation de la BI au BigData - Solocal Group#BigDataBx 1 - Présentation de la BI au BigData - Solocal Group
#BigDataBx 1 - Présentation de la BI au BigData - Solocal GroupExcelerate Systems
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearchFadel Chafai
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQLLilia Sfaxi
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebHarrathi Mohamed
 
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache SparkPlateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache SparkALTIC Altic
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !Sébastien Prunier
 
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
Explorez vos données présentes dans MongoDB avec Apache ZeppelinExplorez vos données présentes dans MongoDB avec Apache Zeppelin
Explorez vos données présentes dans MongoDB avec Apache ZeppelinBruno Bonnin
 
Présentation mongoDB et mongoId
Présentation mongoDB et mongoIdPrésentation mongoDB et mongoId
Présentation mongoDB et mongoIdvtabary
 

En vedette (20)

Super marmite-pourquoi-choisir-mongodb
Super marmite-pourquoi-choisir-mongodbSuper marmite-pourquoi-choisir-mongodb
Super marmite-pourquoi-choisir-mongodb
 
Amadeus
AmadeusAmadeus
Amadeus
 
MongoDB Shell Tips & Tricks
MongoDB Shell Tips & TricksMongoDB Shell Tips & Tricks
MongoDB Shell Tips & Tricks
 
BigData en France par Excelerate Systems
BigData en France par Excelerate Systems BigData en France par Excelerate Systems
BigData en France par Excelerate Systems
 
Construire des Applications Web Performantes - Rule Book Webinar
Construire des Applications Web Performantes - Rule Book WebinarConstruire des Applications Web Performantes - Rule Book Webinar
Construire des Applications Web Performantes - Rule Book Webinar
 
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
 
MongoDB Management & Ansible
MongoDB Management & AnsibleMongoDB Management & Ansible
MongoDB Management & Ansible
 
#BigDataBx 1 - Présentation de la BI au BigData - Solocal Group
#BigDataBx 1 - Présentation de la BI au BigData - Solocal Group#BigDataBx 1 - Présentation de la BI au BigData - Solocal Group
#BigDataBx 1 - Présentation de la BI au BigData - Solocal Group
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearch
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
Multidomain MDM at Amadeus
Multidomain MDM at AmadeusMultidomain MDM at Amadeus
Multidomain MDM at Amadeus
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site Web
 
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache SparkPlateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB Administration
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !
 
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
Explorez vos données présentes dans MongoDB avec Apache ZeppelinExplorez vos données présentes dans MongoDB avec Apache Zeppelin
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
 
Présentation mongoDB et mongoId
Présentation mongoDB et mongoIdPrésentation mongoDB et mongoId
Présentation mongoDB et mongoId
 

Similaire à Zenika MongoDB Tour - REX Amadeus

[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...Microsoft Technet France
 
Cas d'usage MongoDB chez Voyages-sncf.com
Cas d'usage MongoDB chez Voyages-sncf.comCas d'usage MongoDB chez Voyages-sncf.com
Cas d'usage MongoDB chez Voyages-sncf.comPierre Gentile
 
L'expérience client au centre de la donnée @AirFrance
L'expérience client au centre de la donnée @AirFranceL'expérience client au centre de la donnée @AirFrance
L'expérience client au centre de la donnée @AirFranceMongoDB
 
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...Worteks
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 
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
 
Saas Libre
Saas LibreSaas Libre
Saas Libregrolland
 
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
 
2014 applications web sur Azure
2014 applications web sur Azure2014 applications web sur Azure
2014 applications web sur AzureJulien Plée
 
Les nouveautés de Microsoft BizTalk Server 2013
Les nouveautés de Microsoft BizTalk Server 2013Les nouveautés de Microsoft BizTalk Server 2013
Les nouveautés de Microsoft BizTalk Server 2013Microsoft
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5davrous
 
Monter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMonter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMicrosoft Technet France
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016Antoine Rey
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA Cellenza
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysChristophe Villeneuve
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureMicrosoft
 
What's new in MongoDB 3.6
What's new in MongoDB 3.6What's new in MongoDB 3.6
What's new in MongoDB 3.6MongoDB
 

Similaire à Zenika MongoDB Tour - REX Amadeus (20)

[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
 
12-Factor
12-Factor12-Factor
12-Factor
 
Retour d'experience projet AngularJS
Retour d'experience projet AngularJSRetour d'experience projet AngularJS
Retour d'experience projet AngularJS
 
Cas d'usage MongoDB chez Voyages-sncf.com
Cas d'usage MongoDB chez Voyages-sncf.comCas d'usage MongoDB chez Voyages-sncf.com
Cas d'usage MongoDB chez Voyages-sncf.com
 
L'expérience client au centre de la donnée @AirFrance
L'expérience client au centre de la donnée @AirFranceL'expérience client au centre de la donnée @AirFrance
L'expérience client au centre de la donnée @AirFrance
 
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
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)
 
Saas Libre
Saas LibreSaas Libre
Saas Libre
 
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
 
2014 applications web sur Azure
2014 applications web sur Azure2014 applications web sur Azure
2014 applications web sur Azure
 
Les nouveautés de Microsoft BizTalk Server 2013
Les nouveautés de Microsoft BizTalk Server 2013Les nouveautés de Microsoft BizTalk Server 2013
Les nouveautés de Microsoft BizTalk Server 2013
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
Monter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMonter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows Azure
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
 
What's new in MongoDB 3.6
What's new in MongoDB 3.6What's new in MongoDB 3.6
What's new in MongoDB 3.6
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 

Zenika MongoDB Tour - REX Amadeus

  • 2. BIOGRAPHIE FRANÇOIS FORNACIARI CONSULTANT – FORMATEUR • Réalisation d’applications Web / RIA / OSGi • Employeurs : Bull, Zenika (Manpower, Unibail, Amadeus) • Conférences : JavaOne, ApacheCon, OSGi DevCon, Mix-IT, JUG • francois.fornaciari@zenika.com • @fornacif Zenika MongoDB Tour 03/07/2014 - 2
  • 3. AMADEUS • France Services fournit des solutions de traitement des réservations pour l'industrie du voyage • Clients d’Amadeus • Des prestataires de voyages (compagnies traditionnelles et à bas prix, hôteliers, croisiéristes, compagnies ferroviaires, de ferry, de location de voitures et tour-opérateurs) • Des agences de voyages (en ligne et hors ligne) • Un modèle économique basé sur les transactions Zenika MongoDB Tour 03/07/2014 - 3
  • 4. CONTEXTE PROJET PROBLÉMATIQUE Un tour-opérateur français souhaite étendre la distribution de ses prestations (villages vacances) au delà de son réseau d’agences et de son propre site web OBJECTIFS Confier à Amadeus la distribution de son catalogue et de ses offres vers différents partenaires internationaux Zenika MongoDB Tour 03/07/2014 - 4
  • 5. APERÇU DE LA SOLUTION Zenika MongoDB Tour 03/07/2014 - 5 Tour-opérateur français Plateforme d’inter- médiation Plateformes de distributions (Allemagne, USA, France, …) Agences de voyages
  • 6. QUELQUES CHIFFRES Zenika MongoDB Tour 03/07/2014 - 6 PRODUITS : VILLAGES VACANCES • Produits déclinés par • Saison (été-hiver) • Pays (marché) • Actualisation des produits toutes les semaines OFFRES : DISPONIBILITÉS ET TARIFS DES SÉJOURS • Environ 5 000 000 offres chargées tous les jours • A terme : stockage d’environ 100 000 000 offres
  • 7. CHRONOLOGIE Zenika MongoDB Tour 03/07/2014 - 7 22h00 Produits Asie 23h00 Offres Asie 01h00 Produits Europe 02h00 Offres Europe 03h00 Offres Allemagne 04h00 Produits Allemagne 06h00 Produits Amérique 07h00 Offres Amérique 08h00 Offres USA 09h00 Produits USA Import Export
  • 8. CHOIX MONGODB Zenika MongoDB Tour 03/07/2014 - 8 INSERTION ET RESTITUTION MASSIVE DE DONNÉES  Capacité à mettre en cache de larges volumes de données TOLÉRANCE AUX PANNES  Utilisation de plusieurs nœuds MongoDB MONTÉE EN CHARGE  Possibilité d’utiliser les mécanismes de sharding FORMAT DES DONNÉES EN ENTRÉE DE TYPE JSON  Facilité de mapping des données sources REQUÊTAGE COMPLEXE DES DONNÉES  Clients multi-languages, framework d’agrégation
  • 9. ARCHITECTURE APPLICATIVE Zenika MongoDB Tour 03/07/2014 - 9 Référentiel des offres & produits Offres Plateforme d’intermédiation Produits WWW Batch d’import FTP Batches d’export France Allemagne USA API Console d’admin Autre... Tour- opérateur
  • 10. COLLECTIONS MONGODB Zenika MongoDB Tour 03/07/2014 - 10 • DONNÉES MÉTIER • RÉFÉRENTIEL DE DONNÉES • REPORTING offres produits pays équipements TripAvisor
  • 11. BATCH D’IMPORT Zenika MongoDB Tour 03/07/2014 - 11 Scheduling des batches Lecture • Fichier CSV par bloc de lignes (chunk) • Appel Web Services Processing • Enrichissement des données • Validation Ecriture dans
  • 12. BATCH D’EXPORT Zenika MongoDB Tour 03/07/2014 - 12 Scheduling des batches Lecture paginée depuis Processing • Enrichissement des données Ecriture • CSV • XML
  • 13. ACTUALISATION DES DONNÉES Zenika MongoDB Tour 03/07/2014 - 13 RECHARGEMENT DES DONNÉES • Les données sont remplacées dans leur intégralité quotidiennement • Système de « bascule » à chaque fin d’exécution d’un batch d’import • Les nouvelles données ne sont distribuées que si le batch s’exécute intégralement : transaction globale PRINCIPE temp_offers_europe offers_europe db.temp_offers_europe.renameCollection("offers_europe")
  • 14. RÉPLICATION DES DONNÉES Zenika MongoDB Tour 03/07/2014 - 14 REPLICA SET DE 3 NŒUDS PRINCIPE D’ÉLECTION DU NOUVEAU NŒUD PRIMAIRE Primary Secondary Arbiterréplication Primary Primary Secondary Arbiter Election (2-5s) Arbiter Secondary
  • 15. WRITE CONCERN ACKNOWLEDGED Source : http://docs.mongodb.org/manual/core/write-concern/
  • 16. VERSIONING DES DONNÉES Zenika MongoDB Tour 03/07/2014 - 16 2 VERSIONS DE DONNÉES EN PARALLÈLE offers_europe_2 offers_europe_1 Batch d’import Console d’administration Batch d’export API TripAdvisor
  • 17. Zenika MongoDB Tour 03/07/2014 - 17 DRIVERS JAVA VIA LA BIBLIOTHÈQUE DATA MONGODB • Ecriture simplifiée pour les requêtes simples (convention de nommage) • Utilisation de l’API Criteria pour les requêtes complexes • Portage de la plupart des commandes / opérateurs du shell MongoDB • Exemple de requête Query query = new Query(); query.addCriteria(Criteria.where("code").is(resortCode)); query.addCriteria(Criteria.where("lang").is(resortLang)); return mongoTemplate.findAll(query, Resort.class, "offers_europe"); CLIENT MONGODB
  • 18. AGRÉGATIONS Zenika MongoDB Tour 03/07/2014 - 18 CAS D’UTILISATION • Récupération des chambres par hôtel et par période pour un marché donné PRODUIT : JSON SIMPLIFIÉ { "code" : "ABCD", "countrySellingCode" : "10", "period" : "14H", "roomTypes" : [ { "rooms" : [ { "code" : "B2", "label" : "Standard Room" }, { "code" : "C2", "label" : "Deluxe Room" } ] } ] }
  • 19. AGRÉGATIONS Zenika MongoDB Tour 03/07/2014 - 19 [{RT1: [R1,R2]}, {RT2: [R3, R4]}] [{RT1: [R1,R2]}, {RT3: [R5, R6]}] {RT1: [R1,R2]} {RT2: [R3,R4]} {RT1: [R1,R2]} {RT3: [R5,R6]} {R1} {R2} {R3} P1 {R4} {R5} {R6} P2 UnwindUnwind
  • 20. AGRÉGATIONS Zenika MongoDB Tour 03/07/2014 - 20 REQUÊTE newAggregation( match( where("countrySellingCode").is(countrySellingCode) ), unwind("roomTypes"), unwind("roomTypes.rooms"), group(fields(). and("resortCode", "code"). and("period", "period"). and("roomCode", "roomTypes.rooms.code"). and("roomLabel", "roomTypes.rooms.label") ) );
  • 21. REPORTING TRIPADVISOR Zenika MongoDB Tour 03/07/2014 - 21 HISTORISATION DES APPELS À L’API • Agrégation des appels durant 1 minute, puis mis à jour de la collection PRÉ-AGRÉGATION DES REQUÊTES • Opérateur « upsert » pour historiser les dernières requêtes reçues • Exemple de structure d’un document {count: 50, country: "FR", date: "17/06/2014"}
  • 22. TESTS D’INTÉGRATION Zenika MongoDB Tour 03/07/2014 - 22 PROCÉDURE 1. Démarrage d’une instance MongoDB « embedded » 2. Insertion des données 3. Lancement des tests 4. Vérification des résultats OUTILS • Flapdoodle Embedded MongoDB • https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo • Embed Mongo Maven plugin • https://github.com/joelittlejohn/embedmongo-maven-plugin
  • 23. PERFORMANCES Zenika MongoDB Tour 03/07/2014 - 23 MÉTRIQUES MONGODB • Logs des requêtes > à 100ms • Commande serverStatus() • Commande explain() AXES D’OPTIMISATION • Configuration des indexes • Pagination des requêtes (attention à l’utilisation du skip) • Mise en cache des résultats • Projection sur une partie des propriétés d’un document
  • 24. PERFORMANCES API TRIPADVISOR Zenika MongoDB Tour 03/07/2014 - 24 MISE À DISPOSITION DES DONNÉES • Service HTTP REST/JSON • Instance MongoDB identique à celle utilisée par les batches SLA • Disponibilité du service 24h/24 7j/7 BENCHMARK • Débit maximal établi à 600 requêtes/sec • VM de benchmark : 1 CPU 2,1Ghz + 4Go RAM • Taille « working set » : 1,5 Go
  • 25. OUTILS DE DÉVELOPPEMENT Zenika MongoDB Tour 03/07/2014 - 25 SHELL MONGODB ROBOMONGO
  • 26. ARCHITECTURE DE PRODUCTION Zenika MongoDB Tour 03/07/2014 - 26 Plateforme d’intermédiation VM batch VM MongoDB + MySQL VM APIs & Console VM MongoDB + MySQL Apache Tomcat FTP Apache Tomcat • Master Accès à MongoDB • Slave • Arbiter
  • 27. EXPLOITATION MONGODB Zenika MongoDB Tour 03/07/2014 - 27 HÉBERGEMENT EXTERNE • Sous-traitance de l’exploitation de la solution • Installation sur VM dédiées • Fourniture des livrables et d’une procédure d’installation • Sauvegarde quotidienne via mongodump MONITORING • Indicateurs système (CPU, RAM, I/O, Disque) • Plugin MongoDB pour Cacti • Vérification de la connexion depuis l’application
  • 29. DÉMO Zenika MongoDB Tour 03/07/2014 - 29
  • 30. PROCHAINES ÉTAPES Zenika MongoDB Tour 03/07/2014 - 32 INTÉGRATION NOUVEAUX MARCHÉS • Augmentation de la RAM sur les VMs si nécessaire • Sharding des données pour répartir la charge sur plusieurs nœuds : découpage par zone • Indexes TTL si MAJ partielles des offres (expiration) EVOLUTIONS TECHNOLOGIQUES • Migration vers MongoDB 2.6 • Étude intégration MMS
  • 31. MERCI Zenika MongoDB Tour 03/07/2014 - 33