Zenika MongoDB Tour - REX Amadeus

980 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
980
Sur SlideShare
0
Issues des intégrations
0
Intégrations
50
Actions
Partages
0
Téléchargements
20
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Zenika MongoDB Tour - REX Amadeus

  1. 1. ZENIKA MONGODB TOUR RETOUR D’EXPÉRIENCE - PROJET AMADEUS
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 15. WRITE CONCERN ACKNOWLEDGED Source : http://docs.mongodb.org/manual/core/write-concern/
  16. 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. 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. 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. 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. 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. 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. 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. 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. 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. 25. OUTILS DE DÉVELOPPEMENT Zenika MongoDB Tour 03/07/2014 - 25 SHELL MONGODB ROBOMONGO
  26. 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. 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
  28. 28. MONITORING Zenika MongoDB Tour 03/07/2014 - 28
  29. 29. DÉMO Zenika MongoDB Tour 03/07/2014 - 29
  30. 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. 31. MERCI Zenika MongoDB Tour 03/07/2014 - 33

×