plus de flexibilité et de scalabilité chez bouygues télécom grâce à mongodb

50
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB Pierre-Alban DEWITTE @__pad__ MongoDB Days Paris 18 novembre 2014

Upload: mongodb

Post on 29-Jun-2015

535 views

Category:

Technology


1 download

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

Page 1: 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 à MongoDB

Pierre-Alban DEWITTE@__pad__MongoDB Days Paris 18 novembre 2014

Page 2: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Bouygues Telecom

13 M de clients

Page 3: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

@__pad__

Page 4: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Merci!

Page 5: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Agenda

Plus de flexibilité et de scalabilité chez Bouygues Télécom

1.Problèmes existants2.Protoype3.Build4.Ce que nous avons appris

Page 6: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Agenda

1.Problèmes existants

Page 7: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Problèmes existants

ConsumerCustomers

Existing Sytem

CompagnyCustomers

LDAPaccess

Micropayment system

Identity and Oauth management system

Network Connexion system

ETL

Page 8: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Existing problems

Projet avec deux ans de retard

Adaptation du schéma très arduePerformance

Page 9: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Existing problems

Page 10: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Agenda

1.Problèmes existants

2.ProtoypeA.MongoDBB.TomcatC.Storm

Page 11: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Protoype - MongoDB

Schéma flexibleHaute disponibilitéCapacité à monter en chargeCout modéré du stockage permettant la duplication

Page 12: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

POC entre Tomcat et NodeJS

Pas de dispersion, focalisation sur MongoDB !

Protoype - Tomcat

Page 13: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Page 14: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Protoype - Storm

Système de traitement des données en parallèle

Page 15: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Protoype – Schéma global

ConsumerCustomer

MongoDB database

CompagnyCustomers

RESTMicropayment

system

Identity and Oauth management system

Network Connexion system

API

STORM

VOD Key

FAICustomer

Page 16: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Agenda

1.Problèmes existants2.Protoype

3.BuildA.Topologie StormB.Architecture MongoDBC.Schema design D.Approche DevOps

Page 17: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Topologie Storm

Customer files are pushed every night

Read file line by line

1

…DetectFile

SpoutProcessLine

Bolt

2

line

Page 18: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Topologie Storm

Page 19: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Topologie Storm

Emitting tuple for each set of functional

collections

ProcessLineBolt

4

OauthUpdaterBolt

IdentityUpdaterBoltTransform a line into a

document & check delta

3

Page 20: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Topologie Storm

Page 21: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Topologie Storm

Page 22: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Topologie Storm

Gestion des acquittements et des erreurs

ack(Object msgId) failed(Object msgId)

Page 23: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Topologie Storm

Rapidité de mise à l’échelle des traitements

batch

Page 24: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Architecture MongoDB

Customer collections

Reference collections

Customer (Photo) Customer (Delta)

Delta computation Delta filtering

Reference update Customers collection update

Consultation Services

Page 25: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

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

Page 26: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

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 ?

Page 27: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

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

Page 28: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Architecture MongoDB

Page 29: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Page 30: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design

Conception User- Name- Compagny- Billcycle- Payment

Mode

Acces Point- Name- Compagny- Billcycle- Payment

Mode

1

1..n

Conception

Page 31: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design

Developm

ent

Page 32: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design

Qualification

Page 33: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema designD

evelopment

Page 34: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design

« Ca marche !»

Qualification

Conception

Page 35: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema designSt

ress

Tes

t

Page 36: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design

ConceptionConception

Page 37: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design

ConceptionConception

Page 38: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design

Developm

ent

Page 39: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design

Developm

ent

Qualification

Conception

Stre

ss T

est

Page 40: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - Schema design and refactor

Parfait !

Developm

entConception

Stre

ss T

es

Page 41: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - DevOps

Page 42: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Build - DevOps

Coopération entre Dev et Ops

Page 43: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

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

Page 44: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

6 mois plus tard

Page 45: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

1 an plus tard

Page 46: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Agenda

1.Problèmes existants2.Protoype3.Build

4.Ce que nous avons appris

Page 47: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Ce que nous avons appris

Apache Tomcat Apache STORM

Plus de flexibilité et de scalabilité avec une solution

100% Open Source

Page 48: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

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

Page 49: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

Questions ?

@__pad__

Page 50: Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB

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