Il s'agit du dernier webinaire de la série « Retour aux fondamentaux » qui a pour but de vous présenter la base de données MongoDB. Ce webinaire vous guide à travers le déploiement en production.
2. Back to Basics 2016 : Webinar 6
Déploiement en production
Rémi Forest
Senior Solution Architect
3. 3
Rappel des épisodes précédents
• Webinar 1 – Introduction à NoSQL
– Les différents types de bases NoSQL
– MongoDB comme base orientée Documents
• Webinar 2 – Votre première application MongoDB
– Création de database et de collections
– CRUD, indexes et explain
• Webinar 3 – Schema Design
– Modélisation de données avec MongoDB
• Webinar 4 – GeoSpatial and Text Indexes
• Webinar 5 – Introduction à l’Aggregation Framework
4. 4
Déploiement en production
• Prendre un projet en phase de développement et le mettre à disposition des
utilisateurs finaux
• Du point de vue de la base de données, il faut garantir :
– Le monitoring
– Les performances
– La disponibilité de l’application
– Sauvegardes et disaster recovery
– La sécurité
8. 8
Mongo shell
• Différentes commandes pour avoir des informations sur l’état de la base.
– db.serverStatus()
– db.stats()
– db.hostInfo()
– rs.status()
10. 10
MongoDB Ops / Cloud Manager
– Déploiements en un clic, upgrades, tâches d’administration
… jusqu’à 90% de gain de temps vs. des opérations
manuelles
– Monitoring avec alerting, charts et tableaux de bord pour
plus de 100 métriques.
– Gestion des sauvegardes / restaurations avec “point-in-time
recovery” et support des clusters shardés
18. 18
Quand faut-il considérer le sharding ?
• Dès qu’une ressource constitue un goulet d’étranglement sur une machine
ou un replica set:
• RAM
• Disk IO
• Storage
• Concurrence
20. 20
Partitionnement des données
• Définition d’une clé de sharding
• La clé de sharding permet de partitionner l’espace des données présentes
• La clé de sharding doit exister dans tous les documents
21. 21
Distribution des données
• 1 seul chuck à l’origine
• Taille max par défaut : 64MB
• Dès qu’un chunk dépasse 64MB, MongoDB split et migre les chunks
automatiquement
22. 22
Qu’est-ce qu’un shard ?
• Un shard est un élément d’un cluster qui contient une partie des données de la base
• Un shard peut être un serveur stand-alone ou un replica set
32. 32
Outils et techniques
• Copie des fichiers
• Files system snapshot
• mongodump & mongorestore
• Ops / Cloud Manager
33. 33
Sauvegarde niveau fichier
• Copie de fichier (lent) ou file system snapshot (plus rapide)
• Attention à la cohérence des données !
• Sauvegarde “offline” uniquement :
– Arrêt des services
– db.fsyncLock() / db.fsyncUnlock() pour figer le disque (attention aux effets
de bord)
– Backup d’un serveur secondaire (recommandé)
• Gestion complexe pour les environnements shardés
34. 34
mongodump / mongorestore
• Création d’un fichier .bson
• Stockage sur disque ou sur le réseau
• Utilisation de --oplog pour une sauvegarde à chaud
• Dump depuis un serveur secondaire recommandé
• Attention à la cohérence des shards pour les clusters !
35. 35
Backup avec Ops / Cloud Manager
Replica Set Ops / Cloud Manager
Hidden
Replica
Block
Store
Continuous
backup Snapshots
36. 36
Recovery
• Restauration depuis une sauvegarde
– Snapshot / mongodump / Cloud Manager
– Redémarrage du noeud
• Resynchronisation à partir d’un autre noeud
– Copie des fichiers
– Synchronisation via réseau
38. 38
Data Security
• Utilisez systématiquement SSL pour toutes les connexions
• Créez des users, passwords et access roles pour toutes les databases
• Utilisez le chiffrement si vos bases contiennent des données sensibles
• Utilisez les fonctions d’audit si vous avez besoin d’assurer une traçabilité
• Ne rendez pas vos bases accessibles depuis n’importe où !
MIIEowIBAAKCAQEAzfaU58nhc1moUquCDTbXbwkXKmc3LIBGqd4FmCeV4cM+GIh1RVtKGan4d+XT
Ga6OkyFZn9wW/cug831AokFBn3CJYzrkGHR8dDvGN/G0jIS8ftnVl/r69weYphF/nd9Nu6J0cwzn
r1XY0sv+3vlfnNXTRtEiIYyI20fsWrvjDO/IDksE14XCHQxQC6cSJ4YuoD+X+5FncmZnEPIMBLoZ
W1SeTTYp+VSKkB7MnBQH+Bi711G5FuW7OekskUI/96TMr8GYA9gavBlgUmSHmADrTayXEe6KtgIf
N5byP3QJH8Cmi6VsLzmdTG8SPYu5N+0lzdDkisDdmCUTBgXkedaa6QIDAQABAoIBAGImUtmOdBij
LjqPLr+bVdi9DUQQwdM8IfCLNEFJA/z9LNdGGBSAJ3TJcfW5GPtRGvJ0XyB2IqK5ai7+jlGEJYCU
gXQ/OTmKMVC2t4Qrc+3Ox4Dv0ADIAta70Pu6tQUHyCRVi4bULIh6sYPq4L9jOTQlFbTWrpwsO3+7
659lkBK2SfUFh4p5h1zUujtjAF4qAH8CqerMNiMl0ZAmkmQPPRqiLVstGVG4RPJnaNug2EUlQYgZ
BH3+QFchLLIKZimY8EnRE0rSptUirzZej1BLgaPolt6kqajWm5GMxBbQwnEkk/dc5BMyD0wJsZTg
ezF+tJwQwWHqxKqYRQPaF0FOtgECgYEA+yxgSmDSqws6X4SnqwLFOWu+7dwJCGF0mrTXI8HHNA0D
mVymMJJQE3QGTSa0zHVsQ+cJ5ZM1Jrc+5lJMT1j2mfSObJFSHnBglXllb1utUsxv225UgK1q5mFy
lxXIVy1ZBs4qE9CaPnrJtSME7LmoV/sGnu1/aYXXaq1J2XXpFEECgYEA0evMaUwO7BkbQLvf3wG3
r1XY0sv+3vlfnNXTRtEiIYyI20fsWrvjDO/IDksE14XCHQxQC6cSJ4YuoD+X+5FncmZnEPIMBLoZ
W1SeTTYp+VSKkB7MnBQH+Bi711G5FuW7OekskUI/96TMr8GYA9gavBlgUmSHmADrTayXEe6KtgIf
N5byP3QJH8Cmi6VsLzmdTG8SPYu5N+0lzdDkisDdmCUTBgXkedaa6QIDAQABAoIBAGImUtmOdBij
LjqPLr+bVdi9DUQQwdM8IfCLNEFJA/z9LNdGGBSAJ3TJcfW5GPtRGvJ0XyB2IqK5ai7+jlGEJYCU
gXQ/OTmKMVC2t4Qrc+3Ox4Dv0ADIAta70Pu6tQUHyCRVi4bULIh6sYPq4L9jOTQlFbTWrpwsO3+7
659lkBK2SfUFh4p5h1zUujtjAF4qAH8CqerMNiMl0ZAmkmQPPRqiLVstGVG4RPJnaNug2EUlQYgZ
BH3+QFchLLIKZimY8EnRE0rSptUirzZej1BLgaPolt6kqajWm5GMxBbQwnEkk/dc5BMyD0wJsZTg
ezF+tJwQwWHqxKqYRQPaF0FOtgECgYEA+yxgSmDSqws6X4SnqwLFOWu+7dwJCGF0mrTXI8HHNA0D
mVymMJJQE3QGTSa0zHVsQ+cJ5ZM1Jrc+5lJMT1j2mfSObJFSHnBglXllb1utUsxv225UgK1q5mFy
MIIEowIBAAKCAQEAzfaU58nhc1moUquCDTbXbwkXKmc3LIBGqd4FmCeV4cM+GIh1RVtKGan4d+XT
Ga6OkyFZn9wW/cug831AokFBn3CJYzrkGHR8dDvGN/G0jIS8ftnVl/r69weYphF/nd9Nu6J0cwzn
40. 40
Les différentes options de déploiement en production
• La plus simple – hardware et management assurés par MongoDB
– MongoDB Atlas
• Un peu moins simple – infrastructure de management gérée par MongoDB,
vous fournissez les serveurs (potentiellement dans le cloud)
– MongoDB Cloud Manager
• Un peu plus compliqué – vous gérez tout, mais avec de bons outils
– MongoDB Ops Manager
• Le plus compliqué – faire tout, tout seul, à la main
– https://docs.mongodb.com
41. 41
En résumé
• Dimensionnez votre infrastructure en fonction de votre working set
• Privilégiez l’utilisation de replica sets
• Shardez uniquement quand vous en avez besoin, pas avant !
• Attention au choix de la clé de sharding
• Choisissez une solution de sauvegarde adaptée à votre besoin
• Soyez attentifs à la sécurité !
• En plus :
– Utilisez toujours les dernières releases de MongoDB
– Consultez-nous avant de passer en production ! La majorité des
problèmes sont liés à un manque d’expérience.
From mainframes, to RAC Oracle servers... People solved problems by adding more resources to a single machine.
Large scale operation can be combined with high performance on commodity hardware through horizontal scaling
Build
- Document oriented database maps perfectly to object oriented languages
Scale
- MongoDB presents clear path to scalability that isn't ops intensive
- Provides same interface for sharded cluster as single instance
Indexes should be contained in working set.
The data we write stays written and can survive disk, rack, power and data centre failures. Is resilient to underlying data corruption.