Quelle que soit la technologie de base de données avec laquelle vous développez vos applications, son administration est un métier à part entière.

Dès lors qu'un projet atteint une taille significative, la charge de travail d'administration de la base de données requiert de plus en plus d'expertise et de temps de travail pour s'assurer que celle-ci tienne la charge.

C'est pourquoi de plus en plus d'entreprises font le choix avant de sous-traiter ce travail d'administration en faisant appel à des services de Database as a Service (DBaaS).

MongoDB Atlas: L’offre mongoDB sur le cloud

MongoDB Atlas est le service de base de données managé par les créateurs de cette base de données NoSQL.

Une haute disponibilité gérée par défaut

De par sa conception, MongoDB assure une haute disponibilité de votre base de données grâce à des replicaSets composés de plusieurs nœuds.

Chaque cluster, composé d'un nœud primaire et de plusieurs nœuds secondaires, permet aux applications d'avoir en permanence un serveur mongod prêt à répondre aux requêtes mongo.

MongoDB query: les requêtes à connaître
Découvrez les MongoDB queries essentielles pour utiliser MongoDB, avec exemples d’utilisations et explications pour les utiliser au mieux.

Lorsqu'un déploiement MongoDB, géré on-premise ou sur un cloud privé par l'entreprise, c'est à elle et ses équipes de s'assurer du déploiement et de la bonne configuration de ce replicaSet afin de pouvoir garantir la haute disponibilité.

Grâce à MongoDB Atlas, la haute disponibilité est assurée par défaut car chaque cluster est automatiquement configuré avec au minimum 3 nœuds.

Un déploiement sur un ou plusieurs fournisseur cloud

Grâce à MongoDB Atlas, vous pouvez choisir de distribuer vos données sur un ou plusieurs des trois grands fournisseurs cloud, à savoir AWS, Azure ou GCP.

Depuis l'interface Atlas, vous pouvez choisir le nombre de noeuds et leurs répartitions à travers les 3 cloud providers
Depuis l'interface Atlas, vous pouvez choisir le nombre de noeuds et leurs répartitions à travers les 3 cloud providers

Répartir ses données, ne serait-ce que vers un second fournisseur procure plusieurs avantages:

  • Vous vous prémunissez contre les défaillances éventuelles d'une région complète de votre fournisseur principal. Bien qu'il s'agisse d'un événement rare, cela s'est déjà produit pour tous les fournisseurs.
  • Vous accédez à des régions potentiellement non couvertes par votre fournisseur principal. Par exemple GCP ne dispose pas encore de data center en Afrique. Pour rester au plus proche, il faudrait baser votre nœud en Inde et vos utilisateurs subiraient une latence due à l'éloignement. En ajoutant un nœud chez Azure, vous pourrez ajouter une réplique en Afrique du Sud et proposer une meilleure expérience à vos utilisateurs de cette région.
  • Vous vous donnez l'accès à des produits cloud exclusifs à un certain cloud provider sans avoir à configurer manuellement une duplication des données. Par exemple, si vous avez conçu votre application et votre infrastructure sur AWS mais que vous souhaitez utiliser les produits d'IA de Google Cloud, vous pouvez définir des nœuds sur GCP afin de rendre vos données accessibles depuis GCP sans avoir à configurer un ETL pour dupliquer la donnée d'AWS vers GCP.
  • Vous gardez la possibilité de migrer d'un fournisseur à l'autre avec la simplicité d'un clic sur l'interface d'Atlas. Bien que ce cas ne soit pas significatif pour un développeur qui travaille sur son application en solo, les entreprises ayant de grosses dépenses en cloud négocient des contrats avec les fournisseurs. Avoir la capacité de changer rapidement de fournisseur ajoute du poids pour négocier ces contrats ou leurs prolongations.

Attention, cette fonctionnalité ne restreint pas l'écriture sur certains nœuds uniquement. En effet, certaines données sont soumises à des réglementations contraignant les applications à stocker la donnée dans une géographie et ne pas la sortir de ce territoire.

Si vous souhaitez limiter la répartition géographique des données, il faudra opter pour du Sharding Géographique.

Des performances maximisées

Les données à proximité des utilisateurs

À ce jour, MongoDB est le seul fournisseur à proposer un service managé DBaaS disponible sur les trois principaux fournisseurs cloud, AWS, GCP et Azure.

En plaçant les données au plus près de vos utilisateurs, vous maximisez la performance de votre application en minimisant le temps de latence réseau entre votre serveur web et votre base de données.

Voici un exemple hypothétique des temps de réponses que peut avoir une base de donnée sans réplication
Voici un exemple hypothétique des temps de réponses que peut avoir une base de donnée sans réplication

Dans l'idéal, pour maximiser les performances, il faudrait disposer d'au moins un serveur web dans le même data center que votre application.

Grâce à MongoDB Atlas, nous sommes capables d'améliorer significativement les performances de son application en déployant des noeuds à travers le monde
En optimisant la localisation de ses serveurs et ses nœuds de base de données grâce à Atlas, on peut améliorer significativement les performances de son application.

Auto Scaling

Dans la vie d'une application, il y a toujours des phases de croissance et des phases de ralentissement.

L'avantage d'une infrastructure sur le cloud comme l'offre MongoDB Atlas est de pouvoir adapter, à la hausse comme à la baisse ses besoins en ressources.

Bien qu'il soit parfois possible d'anticiper une hausse de charge, comme les e-commerçants qui prévoient un pic de trafic lors du black friday, il y a des moments où le comportement des internautes est affecté par un événement non prévisible.

Vous vous souvenez probablement des indisponibilités qu'il y a eues chez Doctolib le 12 juillet 2021 lorsque le président Macron a annoncé la mise en place du passe sanitaire.

Dans ces cas de figure, MongoDB Atlas propose la fonctionnalité d'Auto Scaling.

Elle permet d'ajuster automatiquement votre cluster selon son niveau de sollicitation.

Lors de la configuration de votre cluster MongoDB Atlas, vous pouvez choisir d'activer l'option d'auto scaling
Lors de la configuration de votre cluster MongoDB Atlas, vous pouvez choisir d'activer l'option d'auto scaling.

Lorsque vous configurez votre cluster, vous avez l'option d'activer l'option d'Auto Scaling et de choisir s'il peut ajuster votre cluster à la hausse comme à la baisse, tout en imposant des tailles minimum et maximum.

De son côté, MongoDB Atlas va calculer le niveau d'utilisation du CPU et de la RAM de chacun des nœuds de votre cluster et si un d'entre eux subit une utilisation du CPU ou de sa RAM supérieure à 75% pendant une heure, il procédera à l'augmentation de vos ressources sur votre cluster.

Si en revanche votre activité se calme, Atlas va calculer la moyenne d'utilisation du CPU et de la RAM sur 24 heures et, si votre cluster n'a pas déjà été réduit dans ces dernières 24h et que l'utilisation des ressources est inférieure à 50%, il procédera automatiquement à la réduction de votre cluster vers le tiers inférieur.

Performance Advisor: Votre conseiller en temps réel

Ce n'est pas parce que MongoDB est une base de données NoSQL que les documents qui y sont stockés ne peuvent pas être structurés.

Afin que votre base de données MongoDB puisse être performante, vous êtes invités à avoir une stratégie de modélisation de vos données, via la répartition en collections, l'utilisation de schémas et la mise en place d'index.

Mongodb index: Utiliser les index pour de meilleures performances
Grâce aux MongoDB index, les requêtes sur vos documents peuvent être exécutés plus rapidement, rendant votre application plus performante.

Découvrez comment optimiser les performances de votre base de données MongoDB en découvrant les index.

Or cette structuration de vos données n'est pas forcément évidente à gérer lorsque votre application évolue et lorsque les utilisateurs font émerger de nouveaux besoins.

Afin d'assurer de bonnes performances, Atlas vous propose d'utiliser son outil de conseil à la performance afin de vous aider à créer les bons index suivant les requêtes entrantes, à définir un Shcema pour les documents et à archiver vos données.

Grâce au Performance Advisor sur Atlas, vous bénéficiez de conseils afin d'optimiser la création d'index
Grâce au Performance Advisor sur Atlas, vous bénéficiez de conseils afin d'optimiser la création d'index

Des services exclusifs

Au-delà du moteur de base de données open source, MongoDB a développé une suite d'outils afin de devenir une véritable plateforme de données au service des développeurs.

Le but est de permettre aux créateurs d'applications de se focaliser sur le code de celle-ci et d'itérer sur leurs fonctionnalités, plutôt que de passer du temps à mettre en lien différentes briques technologiques tels qu'un moteur de recherche et un broker de messagerie pour les lier.

Lorsqu'il s'agit de faire une requête précise sur un champ connu, faire une query find sur la base de données est suffisant. Dans ce cas de figure, nous cherchons les documents qui répondent à certains critères qui sont passés.

En revanche, lorsque nous avons besoin de faire une recherche plus globale, affectant potentiellement plusieurs champs d'un document, il faut faire appel à un moteur de recherche.

Appelée aussi le "Full Text Search", la recherche permet de chercher les éléments demandés dans plusieurs endroits de chaque document et va retourner une liste classée par ordre de pertinence.

Le moteur de recherche est également capable d'ignorer les mots de liaisons, appelés "stop words", de prendre en compte les synonymes, d'être tolérant aux fautes de frappe et aux fautes d'orthographe.

Atlas Search est le moteur de recherche intégré à votre cluster MongoDB
Atlas Search est le moteur de recherche intégré à votre cluster MongoDB

Atlas Search, basé sur le célèbre moteur open source Lucene, a été mis en service le 9 juin 2020 et est disponible pour tous les utilisateurs d'Atlas, même les utilisateurs sur le plan gratuit.

Atlas Search permet aux développeurs de s'affranchir de l'ajout d'un moteur de recherche tel qu'Algolia, MeiliSearch ou ElasticSearch, à leur stack.

Étant directement connecté à votre cluster, Atlas Search va automatiquement créer et maintenir à jour les index de recherche.

Côté développeur, l'opérateur $search est désormais disponible dans votre pipeline d'agrégation afin de faire vos recherches comme vous l'auriez fait via un moteur de recherche.

Comprendre l’aggregation mongo
Savoir faire des aggregation mongo est ce qui distingue un développeur débutant d’un confirmé. Découvrez les principales aggregation mongo et faites la diff

Découvrez comment manipuler vos données grâce aux pipelines d'agrégations MongoDB. Cliquez ici pour accéder au tutoriel

MongoDB Charts

La valeur d'une application est dans sa capacité à exploiter les données qu'elle peut contenir pour fournir un service à ses utilisateurs.

Pour analyser les données, les entreprises doivent acheter des licences auprès d'éditeurs d'outils de Business Intelligence ou demander aux développeurs de créer une interface graphique qui exploite ces données.

Toujours dans l'esprit de redonner du temps aux développeurs et aux créateurs d'applications, MongoDB Atlas propose une fonctionnalité de data vizualisation baptisée MongoDB Charts.

Exclusivement disponible sur Atlas, elle permet de générer des graphiques exploitant les données quelques secondes après leurs insertions sur la base de données MongoDB.

Ces graphiques peuvent être rendus accessible via l'interface Atlas et même être intégrés dans vos applications via iframe.

Atlas Data Lake

Grâce à Atlas Data Lake, vous pouvez stocker vos données dans des buckets AWS S3 tout en gardant la donnée accessible via des requêtes mongo via le driver ou via le mongo shell.

Vous découvrez MongoDB ? Cliquez-ici pour découvrir notre tuto concernant l'utilisation du Mongo Shell.

Mongo Shell: Les commandes à connaître pour manipuler MongoDB depuis le terminal
Le Mongo Shell permet d’effectuer des opérations sur sa base de données MongoDB plus rapidement Découvrez les commandes Mongo Shell à connaître

Atlas Data Lake permet aux utilisateurs de faire des requêtes sur des documents JSON, BSON, CSV, TSV, ORC, Avro et Parquet.

Ainsi, non seulement vos données vieillissantes peuvent être archivées dans un endroit où le stockage est moins onéreux, mais il rend aussi accessible des données provenant d'autres sources que de votre base de données.

En revanche, les requêtes allant interroger le Data Lake sont forcément plus lentes que les requêtes en base de données.

Gestion des sauvegardes automatisée

Les backups clouds

Grâce à MongoDB Atlas, des sauvegardes récurrentes de vos données sont faites, dans ce qu'on appelle des snapshots, et stockées directement sur Atlas.

Vous pouvez définir la fréquence ainsi que la durée de rétention de chaque snapshot.

L'utilisateur a également l'option de déclencher un snapshot à un instant T, soit à la main, soit via l'API d'administration.

Grâce à ces nombreuses copies vous pourrez récupérer vos données à partir de l'une d'entre elles si jamais il y avait un besoin de restaurer votre base de données.

Le backup en continu

Atlas propose également l'option du backup continu. Celui-ci permet d'activer une option de restauration à la minute près.

Cette méthode de restauration est également appelée Point In Time Restore (PITR).

Le backup continu permet aux développeurs et administrateurs de base de données de pouvoir revenir à un instant précis, à la minute près, avant que l'opération ayant corrompu les données ait eu lieu.

Manager son infrastructure MongoDB Atlas

Manager une infrastructure à la main est une idée terrifiante pour toute équipe Ops ayant la responsabilité d'applications en production. Le risque d'erreur humaine ou d'oubli est simplement trop grand.

En revanche, devoir gérer de l'infrastructure via du code ou des lignes de commandes lorsqu'on découvre une technologie est nettement moins pratique que via une interface utilisateur.

Via l'interface utilisateur MongoDB Atlas

L'interface utilisateur Atlas est parfaite pour découvrir le service de base de données MongoDB managé. Il est également parfait pour assurer des tâches ponctuelles ou avoir une vue rapide de son cluster ou d'un de ses composants.

Via l'API MongoDB Atlas

Dans l'administration d'une infrastructure, certaines actions doivent pouvoir se faire de manière programmatiques plutôt que par des opérations manuelles.

C'est pourquoi, MongoDB Atlas propose l'Atlas Administration API.

Grâce à cet API, vous pourrez gérer votre cluster depuis une ou plusieurs applications en y faisant les mêmes opérations que si vous étiez sur l'interface web d'Atlas.

curl --quest POST
'https://cloud.mongodb.com/api/atlas/V1.0/groups/{{group-id}}/clusters'\
...
--data-raw '{
  "name":"myCluster",
  "providerSettings": {
    "providerName": "GCP",
    "instanceSizeName": "M30",
    "regionName": "EU_WEST_1"
  }
}'

En plus de l'API d'administration, Atlas propose également une Data API, permettant aux développeurs d'accéder et de modifier la donnée directement via des requêtes HTTP, via leur code ou via Postman.

Via MongoCLI

MongoDB offre également une CLI pour manipuler votre cluster via votre terminal.

la CLI mongo permet de manager un cluster directement en ligne de commande, pratique pour les opérations de CI/CD

la CLI mongo permet de manager un cluster directement en ligne de commande, pratique pour les opérations de CI/CD

La MongoCLI est un outil pour les développeurs qui souhaitent manipuler leur cluster plus rapidement depuis leur terminal.

Par contre il nécéssite tout de même de l'input utilisateur , le rendant pas nécéessairement pratique pour être mis en place dans un pipeline d'intégration ou de déploiement continu.

Via Terraform

Terraform est l'outil d'Infrastructure as Code développé par la société HashiCorp.

Très utilisé dans les écosystèmes matures des grandes entreprises et des scale-ups, il permet de remonter une infrastructure directement à l'exécution d'un script.

Terraform permet de créer des builds reproductibles via des scripts versionnés, applicables dans un process DevOps de déploiement continu.

MongoDB a créé un provider permettant de manager son infrastructure Atlas via terraform, de la même façon qu'on l'aurait fait pour n'importe quel autre service cloud.

Pourquoi Automatiser la gestion de son cluster Atlas ?

Dans un environnement cloud où l'infrastructure est managée, devoir automatiser la gestion de son cluster Atlas peut paraître aller à l'encontre du principe d'un service managé.

Après tout, une fois qu'on a mis en place le cluster, c'est à Atlas de s'assurer qu'il soit toujours disponible.

Automatiser Atlas via les API ou via Terraform peut vous permettre de :

  • Intégrer l'implémentation d'environnements de tests ou de pré-production dans votre CI/CD.
  • L'implémentation de changements sur plusieurs clusters

La sécurité au cœur de MongoDB Atlas

Sécuriser les données qui sont hébergées sur son cluster est une fonctionnalité essentielle que doit offrir tout service de base de données managé.

Chiffrement des données de bout en bout

La plupart des bases de données ainsi que les entreprises proposant des services managés vont proposer le chiffrement des données.

Appelé également encryption, le chiffrement des données est appliqué sur les données stockées sur la base de données, mais également lorsqu'elle est en transit entre la base et l'application.

Cependant, afin de pouvoir réaliser les opérations, la plupart des bases de données gardent de la donnée décryptée dans la RAM du serveur de base de données.

Les développeurs doivent alors choisir entre gérer eux-mêmes l'encryption au niveau de l'application ou de ne rien faire et s'exposer à une faille de sécurité.

MongoDB, dans sa version proposée dans Atlas, propose de facto d'encrypter la donnée depuis le driver dans l'application, jusqu'à la base de données.

En choisissant et configurant une clé d'encryption, vous pouvez définir les champs contenant de la donnée sensible à encrypter et ces données ne quitteront jamais votre application avant d'avoir été chiffrés.

Cette technologie, appelée Client-Side Field Level Encryption permet aux développeurs de ne pas avoir à gérer l'encryption au niveau de l'application, de garder la donnée requetable et de garder la donnée chiffrée, même en RAM dans le serveur de base de données.

Une fois encryptée via le Client-Side FLE, la donnée est rendue illisible dans votre cluster Atlas. Ainsi, les administrateurs des bases de données ne peuvent pas se connecter via l'interface utilisateur et aller lire les champs encryptés dans les bases de données du cluster.

Cluster isolé dans un VPC

Quel que soit le (ou les) fournisseur(s) cloud que vous choisirez pour votre cluster Atlas, votre cluster sera déployé dans un réseau privé virtuel (VPC) dédié.

Cela empêche toute connexion venant de l'extérieur.

Pour vous connecter à votre base de données, que ce soit via un client Mongo dans votre application, ou depuis le mongo shell depuis votre poste, il faudra ouvrir une porte d'entrée vers votre VPC Atlas.

Pour ce faire, plusieurs solutions s'offrent à vous. La première est d'ajouter à la whitelist des IP votre IP personnelle (pour vous connecter depuis votre machine) ainsi que les IP que peut avoir votre serveur d'application.

Une seconde option, pour vos applications déjà sur le cloud, est d'ouvrir une connexion entre vos réseaux privés virtuels via le VPC Peering.

Enfin, si vous êtes sur AWS, vous avez la possibilité de créer un Private Link.

Clés d'encryptions

Avec MongoDB, et plus particulièrement la version proposée sur Atlas, les données sont en permanence chiffrées.

Grâce à Atlas, vous êtes en mesure d'apporter votre propre clé d'encryption depuis le KMS du fournisseur cloud de votre choix.

Certains font même le choix de séparer la gestion des clés d'encryption sur un fournisseur cloud différent de celui qui héberge les données. Par exemple, vous pourriez avoir votre KMS sur Azure tout en hébergeant votre cluster Atlas sur GCP et ou AWS.

Audit de l'activité

Dans le cadre de suspicion d'activités frauduleuse ou d'audit de conformité, il est parfois nécessaire de pouvoir retracer les requêtes qui ont été jouées sur votre cluster.

Grâce à Atlas, vous pouvez auditer les actions qui ont été faites sur le cluster
Grâce à Atlas, vous pouvez auditer les actions qui ont été faites sur le cluster

Dans la version proposée par MongoDB Atlas, vous avez accès à un système d'audit permettant de retracer les actions faites par chaque utilisateur ou chaque application.

Grâce à Atlas, vous pouvez auditer les actions qui ont été faites sur le cluster

Grâce à ce système d'audit détaillé, vous pouvez auditer l'ensemble des clusters déployé sur un projet Atlas.

Les logs peuvent également être téléchargés depuis l'interface web de MongoDB Atlas ou depuis l'API d'administration.

Pourquoi privilégier Atlas à un déploiement On-Premise ?

Atlas a été conçu pour faciliter la vie des développeurs et abstraire au maximum le travail d'Ops autour de l'infrastructure de la base de données ainsi que d'autres produits y étant liés.

Grâce à MongoDB Atlas, les développeurs sont en mesure d'être bien plus productifs et de se focaliser sur le développement de fonctionnalités différenciantes plutôt que de faire de l'administration de base de données.

Qu'il s'agisse d'un projet perso nécessitant une base de données gratuite (M0) ou un projet d'entreprise ayant un budget à 7 chiffres, Atlas est capable de fournir cette simplicité à tous les projets.