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: pierre-alban-dewitte

Post on 02-Jul-2015

512 views

Category:

Software


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

2.Protoype

3.Build

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

Performance

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

B.Tomcat

C.Storm

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

Protoype - MongoDB

Schéma flexible

Haute disponibilité

Capacité à monter en charge

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

2.Protoype

3.BuildA.Topologie Storm

B.Architecture MongoDB

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

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 lecture

Le traitement d’alimentation est garant de la

cohérence

Possibilité de reprocess

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

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

Develo

pm

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

evelop

men

t

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

Develo

pm

ent

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

Build - Schema design

Develo

pm

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 !

Develo

pm

ent

Conception

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

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 existants

2.Protoype

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

2.« 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 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