plus de flexibilité et de scalabilité chez bouygues télécom grâce à mongodb
DESCRIPTION
Comme de nombreux opérateur Bouygues télécom dispose d'un annuaire des services de ses clients. Ce système est critique pour réaliser les paiements sur facture des abonnées, s'authentifier sur sa boite de messagerie, regarder la télévision en streaming et bien d'autres services. Il y a quelque années une solution du marché avait été choisie. Après de nombreux problèmes - de performances et de trop grande rigidé du modèle - ce systême a été remplacé par un dévelopement spécifique architecturé autour de MongoDB, Apache Storm et Apache Tomcat. Cette présentation retrace l'histoire de cette refonte et les écueils rencontrés puis surmontés pour mettre en place un système disponible à 99,9% avec des sollicitations pouvant aller jusqu'à 3000 req/s. Nous parlerons de construction de modèle, de devops et aussi de topologie storm.TRANSCRIPT
Plus de flexibilité et de scalabilité chez
Bouygues Télécom grâce à MongoDB
Pierre-Alban DEWITTE@__pad__MongoDB Days Paris 18 novembre 2014
Bouygues Telecom
13 M de clients
@__pad__
Merci!
Agenda
Plus de flexibilité et de scalabilité chez Bouygues Télécom
1.Problèmes existants2.Protoype3.Build4.Ce que nous avons appris
Agenda
1.Problèmes existants
Problèmes existants
ConsumerCustomers
Existing Sytem
CompagnyCustomers
LDAPaccess
Micropayment system
Identity and Oauth management system
Network Connexion system
ETL
Existing problems
Projet avec deux ans de retard
Adaptation du schéma très arduePerformance
Existing problems
Agenda
1.Problèmes existants
2.ProtoypeA.MongoDBB.TomcatC.Storm
Protoype - MongoDB
Schéma flexibleHaute disponibilitéCapacité à monter en chargeCout modéré du stockage permettant la duplication
POC entre Tomcat et NodeJS
Pas de dispersion, focalisation sur MongoDB !
Protoype - Tomcat
Protoype - Storm
Système de traitement des données en parallèle
Protoype – Schéma global
ConsumerCustomer
MongoDB database
CompagnyCustomers
RESTMicropayment
system
Identity and Oauth management system
Network Connexion system
API
STORM
VOD Key
FAICustomer
Agenda
1.Problèmes existants2.Protoype
3.BuildA.Topologie StormB.Architecture MongoDBC.Schema design D.Approche DevOps
Build - Topologie Storm
Customer files are pushed every night
Read file line by line
1
…DetectFile
SpoutProcessLine
Bolt
2
line
Build - Topologie Storm
Build - Topologie Storm
Emitting tuple for each set of functional
collections
ProcessLineBolt
4
OauthUpdaterBolt
IdentityUpdaterBoltTransform a line into a
document & check delta
3
Build - Topologie Storm
Build - Topologie Storm
Build - Topologie Storm
Gestion des acquittements et des erreurs
ack(Object msgId) failed(Object msgId)
Build - Topologie Storm
Rapidité de mise à l’échelle des traitements
batch
Build - Architecture MongoDB
Customer collections
Reference collections
Customer (Photo) Customer (Delta)
Delta computation Delta filtering
Reference update Customers collection update
Consultation Services
Build - Architecture MongoDB
Choix de dupliquer les données Une collection est modélisée pour l’écriture ou la lectureLe traitement d’alimentation est garant de la cohérencePossibilité de reprocessOutillage de l’audit de cohérence
Build - Architecture MongoDB
Les questions lors de l’estimation de la volumétrie 1.Quels sont les cas d’utilisation ? 2.Quels sont leurs volumes ?3.Quelle est la modélisation associée ?4.Quelle est la proportion du document mise à jour en cas d’update ?
5.Quelle proportion des données doit être accessible de façon concurrente ?
6.Quelle est la durée de vie des données ?
Build - Architecture MongoDB
20 collections750 Go de données utiles9 serveurs « Data » physiques3 shards, sharding par hash2 To de RAM3 serveurs « Config » virtuels3 serveurs virtuels pour le backup
Architecture MongoDB
Build - Schema design
Conception User- Name- Compagny- Billcycle- Payment
Mode
Acces Point- Name- Compagny- Billcycle- Payment
Mode
1
1..n
Conception
Build - Schema design
Developm
ent
Build - Schema design
Qualification
Build - Schema designD
evelopment
Build - Schema design
« Ca marche !»
Qualification
Conception
Build - Schema designSt
ress
Tes
t
Build - Schema design
ConceptionConception
Build - Schema design
ConceptionConception
Build - Schema design
Developm
ent
Build - Schema design
Developm
ent
Qualification
Conception
Stre
ss T
est
Build - Schema design and refactor
Parfait !
Developm
entConception
Stre
ss T
es
Build - DevOps
Build - DevOps
Coopération entre Dev et Ops
Build - DevOps
Formation internes par l’équipe de développementRédaction d’un manuel d’exploitation dédiéExécution conjointe DEV et PROD des tests de pré-productionEcriture précoce des tests de performance
6 mois plus tard
1 an plus tard
Agenda
1.Problèmes existants2.Protoype3.Build
4.Ce que nous avons appris
Ce que nous avons appris
Apache Tomcat Apache STORM
Plus de flexibilité et de scalabilité avec une solution
100% Open Source
Ce que nous avons appris
1.Choisir sa bataille2.« Use the right tool for the right job »
3.Tester, échouer, recommencer
4.L’adoption passe par la formation
Questions ?
@__pad__
Photo credits100 m start : http://fr.wikipedia.org/wiki/100_m%C3%A8tres_%28athl%C3%A9tisme%29#mediaviewer/Fichier:Mens_100m_finals_British_Champs_and_Olympic_Trials.jpg by Paul Foot from Birmingham, UKQuestion mark block : https://www.flickr.com/photos/jarbo/9379813470 by Jared Cherup Pelleteuse orange : http://fr.123rf.com/photo_3669950_un-grand-pelleteuse-orange-stationne-a-un-chantier-de-construction.html by Stephen McsweenyPunaise : https://www.flickr.com/photos/24362608@N05/3501112978/sizes/l/in/photolist-f5R8g4-6kiVfR-6koahu-6ko7US-6ko8Qh-d9NUKU-nDi2eb-ffg13f-8h56wx-cgAcib-hchCtD-decZ4p-6kocrL-6kj2J6-5doxaw-gbTPmK-nCFBBq-672Snf-2sCzvw-e1zAjM-8voRbc-c9Rh1m-amFFGt-2iZNBq-cFSnFU-81Ckk4-2XHZAy-9Ggpfw-m8FfKz-8hW6r5-4xSuxC-awXsp4-5aVn7g-fbXVHZ-9GAPLX-9qr7uU-fcddgA-cP1EN7-np2q92-6V8oBT-cenSsb-cyzaEd-8h5a2F-6V2b3F-ch1RME-fJ52s3-9XthVN-kBs5mW-6qSPaF-5cA9Qb/ par dractrain94 Une longue vue qui louche : https://www.flickr.com/photos/la_bretagne_a_paris/3847733265/ par Yann Caradec NASA-Apollo8-Dec24-Earthrise : http://www.hq.nasa.gov/office/pao/History/alsj/a410/AS8-14-2383HR.jpg par NASA / Bill Anders