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.
15. Protoype – Schéma global
Consumer
Customer
MongoDB
database
Compagny
Customers
REST
Micropayment
system
Identity and Oauth
management system
Network
Connexion system
API
STORM
VOD Key
FAI
Customer
19. Build - Topologie Storm
Emitting tuple for each
set of functional
collections
ProcessLine
Bolt
4
Oauth
UpdaterBolt
Identity
UpdaterBoltTransform a line into a
document & check delta
3
25. Build - Architecture MongoDB
Choix de dupliquer les données
Une collection est modélisée pour l’écriture
ou la lecture
Le traitement d’alimentation est garant de la
cohérence
Possibilité de reprocess
Outillage de l’audit de cohérence
26. 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 ?
27. Build - Architecture MongoDB
20 collections
750 Go de données utiles
9 serveurs « Data » physiques
3 shards, sharding par hash
2 To de RAM
3 serveurs « Config » virtuels
3 serveurs virtuels pour le backup
43. Build - DevOps
Formation internes par l’équipe de
développement
Rédaction d’un manuel d’exploitation dédié
Exécution conjointe DEV et PROD des tests de
pré-production
Ecriture précoce des tests de performance
47. Ce que nous avons appris
Apache Tomcat Apache STORM
Plus de flexibilité et de
scalabilité avec une solution
100% Open Source
48. Ce que nous avons appris
1.Choisir sa bataille
2.« Use the right tool for the
right job »
3.Tester, échouer,
recommencer
4.L’adoption passe par la
formation
50. Photo credits
100 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, UK
Question 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 Mcsweeny
Punaise : 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
Notas do Editor
Part of Bouygues group, mostly know in us for COLAS firm building and maintaining train railway
Fourth french operator
13 Million customers
Leader in 4G deployment
Go POC !
You all know MongoDB !
Team like to try new things, why not used node ?
Go quick
BREAKKKKKKKKKKKKKK
3000 req/s
95% req < 100ms
500 000 customers
loaded in less than 2 hours
Scaling with a 100% open source stack it is possible !
We reach MongoDB and it was fine