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

Preview:

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.

Citation preview

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 existants

2.Protoype

3.Build

4.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 ardue

Performance

Existing problems

Agenda

1.Problèmes existants

2.ProtoypeA.MongoDB

B.Tomcat

C.Storm

Protoype - MongoDB

Schéma flexible

Haute disponibilité

Capacité à monter en charge

Cout 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 existants

2.Protoype

3.BuildA.Topologie Storm

B.Architecture MongoDB

C.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 updateCustomers

collection update

Consultation Services

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

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 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

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

Develo

pm

ent

Build - Schema design

Qualification

Build - Schema designD

evelop

men

t

Build - Schema design

« Ca marche !»

Qualification

Conception

Build - Schema designSt

ress

Tes

t

Build - Schema design

ConceptionConception

Build - Schema design

ConceptionConception

Build - Schema design

Develo

pm

ent

Build - Schema design

Develo

pm

ent

Qualification

Conception

Stre

ss T

est

Build - Schema design and refactor

Parfait !

Develo

pm

ent

Conception

Stre

ss T

es

Build - DevOps

Build - DevOps

Coopération entre Dev et Ops

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

6 mois plus tard

1 an plus tard

Agenda

1.Problèmes existants

2.Protoype

3.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 bataille

2.« Use the right tool for the

right job »

3.Tester, échouer,

recommencer

4.L’adoption passe par la

formation

Questions ?

@__pad__

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, 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

Recommended