MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment déployer MongoDB sur Heroku

MongoDB Atlas est facile et gratuit à configurer et à déployer MongoDB sur Heroku. L'Atlas MongoDB est communément appelé la plate-forme d'application de données multi-cloud. Il s'agit d'un service intégré de données et de base de données cloud qui simplifie et accélère la manière dont les utilisateurs créent avec les données.

Lorsque vous commencez à créer des applications cloud natives plus complexes, la sélection des outils et des services appropriés a tendance à être assez écrasante. Cependant, ce n'est pas le cas lorsque vous choisissez le meilleur service de base de données cloud, car MongoDB Atlas est votre meilleure solution.

D'autre part, Heroku est une plate-forme en tant que service (PaaS) qui offre aux développeurs la possibilité d'exécuter, de créer, de manipuler et d'exploiter des applications sur le cloud. Heroku prend en charge une multitude de langages de programmation.

Ce guide d'article illustrera comment déployer MongoDB sur Heroku. Nous utiliserons la version MongoDB Atlas car elle s'intègre facilement à la plupart des applications Heroku. Ce processus peut sembler complexe au premier abord, mais vous réaliserez que rien n'est compliqué lorsque vous plongerez dedans. Tout ce dont vous avez besoin est de définir votre chaîne de connexion de cluster MongoDB Atlas sur une variable de configuration Heroku connue, et vous êtes prêt à partir.

L'édition Atlas est un service cloud MongoDB entièrement géré qui automatise la gestion du cluster MongoDB dans le cloud. Il offre aux utilisateurs une mise à l'échelle automatique, des sauvegardes automatisées, une gestion complète de la suite, des outils d'analyse et une tolérance de panne multi-AZ. MongoDB Atlas est l'un des DBaaS les plus sophistiqués.

Suivez les étapes fournies ici pour savoir comment installer MongoDB et l'exécuter rapidement. Vous pourrez également voir comment connecter le cluster MongoDB Atlas aux applications Heroku en suivant le guide détaillé fourni dans cet article.

Comment déployer MongoDB sur Heroku

Ce guide d'article suppose que vous disposez des conditions préalables suivantes :

  1. Vous maîtrisez bien MongoDB et avez écrit des applications MongoDB
  2. Vous maîtrisez Heroku et avez déjà déployé des applications Heroku
  3. Vous avez installé la CLI Heroku
  4. Vous maîtrisez Git et l'avez installé.

Avec les conditions préalables mentionnées, apprenons-en plus sur le sujet abordé ci-dessus.

Configuration du cluster Atlas MongoDB

Tout d'abord, nous verrons comment configurer le cluster MongoDB Atlas en moins de cinq étapes.

Étape 1 :Créer un compte MongoDB Atlas

Remarque : Si vous avez déjà créé un compte MongoDB avec votre adresse e-mail, ignorez le processus d'inscription et connectez-vous à votre compte.

L'enregistrement d'un nouveau compte MongoDB Atlas est très simple. Vous pouvez choisir d'utiliser votre adresse e-mail ou votre compte Google pour vous inscrire.

Le processus est entièrement gratuit; par conséquent, vous n'avez pas à vous soucier des frais supplémentaires.

Suivez ce lien pour créer gratuitement un compte MongoDB Atlas. Remplissez simplement vos coordonnées et cliquez sur le bouton "Commencer gratuitement" pour obtenir votre compte Atlas gratuit.

Une fois que vous avez un compte Atlas, passez à l'étape suivante

Étape 2 :Créer votre projet et votre organisation

MongoDB Atlas vous invitera par défaut à créer une organisation et un projet après avoir terminé le processus d'inscription. Remplissez rapidement les détails requis pour terminer ce processus et passer à l'étape suivante. L'organisation et le projet seront utilisés pour déployer votre cluster à l'avenir.

Étape 3 :Déployer le cluster

Dans cette phase, vous sélectionnerez un cluster parmi diverses options de cluster. Pour les besoins de ce guide d'article, nous utiliserons l'option "Cluster partagé", qui est l'option de cluster gratuite fournie par MongoDB Atlas. Sous l'option "Cluster partagé", cliquez sur "Créer".

Vous serez invité à sélectionner quelques options pour votre cluster sur la page suivante, comme indiqué ci-dessous :

Fournisseur de cloud et région

Ici, vous devez choisir où votre cluster sera déployé. Il est essentiel de sélectionner une région la plus proche de votre application. Idéalement, vous devez sélectionner une région constante pour minimiser les problèmes liés à la latence. Nous utiliserons cette région, "N. Virginia (us-east-1) », avec AWS comme fournisseur de cloud source pour ce guide. Nous avons choisi AWS comme fournisseur de cloud car nous allons déployer sur Heroku et héberger leur infrastructure sur AWS.

Niveau de cluster

Dans cette sous-section, vous verrez les niveaux de cluster disponibles pour l'option de cluster que nous avons choisie, dans ce cas, les options de cluster partagé. Ici, vous verrez une comparaison de la RAM, du stockage, du prix de base des niveaux et du vCPU. Ces comparaisons vous aideront à sélectionner le niveau approprié pour votre projet. Nous le laisserons au niveau par défaut "M0 Sandbox" pour ce guide.

Paramètres supplémentaires

Cette section dépend du niveau que vous choisissez. Vous pouvez obtenir des paramètres supplémentaires en fonction du niveau que vous sélectionnez. Ces paramètres incluront les options de sauvegarde et les versions de MongoDB à déployer. Sélectionnez MongoDB version 4.4 et laissez l'option de sauvegarde désactivée.

Nom du cluster

C'est la dernière possibilité. Ici, il serait utile que vous nommiez votre cluster. J'appellerai notre cluster "Leafix". N'oubliez pas que vous ne serez pas autorisé à le modifier une fois que vous aurez créé le cluster.

Remarque :Il est conseillé de vérifier les options sélectionnées et d'apporter les modifications nécessaires avant de créer le cluster à l'aide du bouton "Créer un cluster".

Étape 4 :Créez un utilisateur de base de données pour votre cluster nouvellement créé

MongoDB Atlas exige que les clients s'authentifient en tant qu'utilisateurs de la base de données MongoDB pour accéder aux clusters. Suivez les étapes fournies pour créer un utilisateur de base de données pour votre cluster.

  • Accédez à la section "Accès à la base de données". Il se trouve sous l'onglet "Sécurité" sur le côté gauche.
  • Cliquez sur l'option "Ajouter un nouvel utilisateur de base de données".
  • Une invite apparaîtra. Entrez votre méthode d'authentification et les privilèges d'utilisateur de la base de données
  • Utilisez le "Mot de passe" comme méthode d'authentification et fournissez le mot de passe et le nom d'utilisateur.

Remarque : Il est fortement recommandé de générer automatiquement un mot de passe fort à partir d'Atlas pour éviter les complications liées à l'insécurité. Une fois que vous avez généré automatiquement le mot de passe, copiez-le et enregistrez-le dans un endroit pratique pour le récupérer facilement à l'avenir. Cette étape est essentielle car nous aurons besoin du mot de passe lors de la connexion au cluster.

  • Accordez à l'utilisateur le plus de privilèges en sélectionnant l'option "Atlas admin".
  • Une fois que vous avez terminé, cliquez sur "Ajouter un utilisateur" pour créer un utilisateur de base de données.

Étape 5 :Accordez l'accès au cluster d'adresses IP autorisées

Il s'agit de la dernière étape lors de la configuration du cluster MongoDB Atlas. Cette section choisira les adresses IP qui nous permettent d'accéder au cluster Atlas. Pour accorder l'autorisation, suivez les étapes mentionnées ici :

  1. Sous "Sécurité", sélectionnez "Accès au réseau".
  2. Ensuite, choisissez "Ajouter une adresse IP".
  3. Sélectionnez "Autoriser l'accès depuis n'importe où" et cliquez sur le bouton "Confirmer" pour terminer le processus.

C'est tout. Vous avez configuré avec succès votre cluster MongoDB Atlas.

Remarque :Vous ne souhaitez pas autoriser ce type d'accès à l'adresse IP dans un environnement de production en raison de problèmes de sécurité. Vous devez identifier l'adresse IP exacte de votre application et définir explicitement la plage d'adresses IP. Ce processus est conçu pour améliorer la sécurité de votre cluster.

Connexion à votre cluster

Pour vous connecter à votre cluster nouvellement créé, suivez ce guide :

  1. Dans la section "Stockage des données" de la barre de navigation de gauche, cliquez sur "Clusters".
  2. Cliquez sur l'onglet "Se connecter"
  3. Choisissez la version de votre pilote, puis copiez uniquement la chaîne de connexion

Une fois que vous avez terminé, mettez à jour la chaîne de connexion. Encore une fois, n'oubliez pas d'ajouter votre nom d'utilisateur et votre mot de passe.

Création d'un compte Heroku

Créer un compte Heroku est très simple. Tout d'abord, visitez le site officiel de Heroku et inscrivez-vous comme nous l'avons fait pour MongoDB Atlas. Après avoir terminé votre compte Heroku, continuez et installez la CLI Heroku.

Installer la CLI Heroku

Il est essentiel de vous assurer que Git est installé sur votre système d'exploitation Linux car la CLI Heroku nécessite Git. Git est un système de contrôle de version populaire couramment utilisé par la plupart des développeurs. L'installation de Git est très simple. Ouvrez votre terminal et exécutez la commande ci-dessous :

sudo apt-get install git-all

Sortie :

Cette commande installera Git dans votre système d'exploitation Linux. Après cela, exécutez cette autre commande pour installer Heroku sur votre système d'exploitation Linux :

sudo snap install --classic heroku

Sortie :

Donnez au terminal le temps d'exécuter la commande et d'installer Heroku entièrement.

Connectez-vous et créez une nouvelle application sur le site Web Heroku

Nous pensons que vous avez suivi l'article de près et que vous avez créé un compte Heroku. Si tel est le cas, ouvrez votre tableau de bord Heroku. Entrez les détails que vous avez utilisés lors de la création de votre compte Heroku pour vous connecter à votre tableau de bord. Une fois connecté, passez à l'étape suivante pour créer une nouvelle application :

  1. Accédez à heroku.com/apps
  2. Sélectionnez Nouveau>Créer une nouvelle application>Choisissez la région>Créer une application.
  3. Soyez patient pendant la création de l'application.
  4. Une fois le processus terminé, vous serez redirigé vers votre tableau de bord. Sélectionnez la section "Déployer"

Connecter l'application Heroku aux référentiels locaux

Suivez les guides de déploiement fournis dans la section de déploiement de cet article que vous avez précédemment sélectionnée.

Néanmoins, connectez-vous à Heroku dans la section "Déployer" que nous avons sélectionnée précédemment.

Exécutez les commandes suivantes (également spécifiées dans la section Déployer) pour vous connecter à Heroku et créer un nouveau Dyno à partir du répertoire racine de votre serveur/projet :

Remarque : Les crochets "<> ” utilisé dans les exemples ci-dessous désignent les valeurs d'identifiant/paramètre/argument fournies par l'utilisateur. Lorsque vous exécutez les commandes, vous devez les laisser de côté.

# Ajouter une télécommande Heroku

heroku git:remote -a <name-of-the-newly-created-app>

# Jetez un œil aux télécommandes disponibles.

# La connexion au nouveau référentiel distant "heroku" doit être visible.

git remote -v

# Sur la branche de développement, validez le travail le plus récent.

git add .

git commit -m 'Write a clear, meaningful commit message here.'

git push origin <development-branch-name>

# Les branches doivent être extraites dans la branche principale.

git checkout master

# Les mises à jour de la branche de développement sont fusionnées.

git merge <development-branch-name>

git push heroku master

Configuration de Heroku pour se connecter au cluster MongoDB Atlas à l'aide de variables de configuration

Nous nous sommes beaucoup amusés à mettre en place rapidement notre cluster Atlas, mais nous pensons que vous apprécierez encore plus cette section !

Les applications Heroku basées sur Atlas sont simples à créer. Créez une variable de configuration au niveau de l'application qui contient la chaîne de connexion de votre cluster. Vous pouvez accéder en toute sécurité à cette variable de configuration dans votre application une fois qu'elle a été configurée !

Voici comment procéder :

Étape 1 :Ouvrez la CLI Heroku et connectez-vous.

heroku login

Cette commande vous amène à la page de connexion Heroku de votre navigateur Web. Cliquez sur le bouton "Connexion" si vous êtes déjà connecté. Vous pouvez également utiliser le drapeau -i pour vous connecter à partir de la ligne de commande.

Étape 2 : Créer une copie de mon application de démonstration

J'ai construit un prototype d'application Node qui utilise MongoDB Atlas et que j'aimerais publier sur Heroku pour continuer cette leçon. Clonez-le, puis rendez-vous dans le répertoire suivant :

git clone https://github.com/adriennetacke/mongodb-atlas-heroku-leaflix-demo.git

cd mongodb-atlas-heroku-leaflix-demo

Sortie :

Étape 3 :Créer une application Heroku

heroku create leaflix

Sortie :

Comme vous pouvez le voir, j'ai donné un nom à mon leaflix.

Obtenez votre chaîne de connexion Atlas Cluster

Veuillez retourner au tableau de bord de votre cluster Atlas pour récupérer notre chaîne de connexion.

  • Sélectionnez "Se connecter" dans le menu déroulant.
  • Sélectionnez "Connecter votre application" dans le menu déroulant.

La chaîne de connexion dont nous aurons besoin pour nous connecter à notre cluster se trouvera ici. Notez la chaîne de connexion.

Collez la chaîne de connexion dans un éditeur ; nous apporterons quelques modifications avant de l'affecter à une variable de configuration Heroku.

Atlas a facilement inclus le nom d'utilisateur de l'utilisateur de la base de données que nous avons précédemment créé, comme vous pouvez le voir. Remplacez le « mot de passe » par le mot de passe de l'utilisateur de votre base de données personnelle et « dbname » par « sample_mflix », qui est l'exemple d'ensemble de données que notre application de démonstration utilisera pour compléter la chaîne de connexion et la rendre valide.

Remarque :Si vous ne connaissez pas le mot de passe de votre utilisateur de base de données, générez-en un automatiquement et utilisez-le dans la chaîne de connexion. Si vous le générez à nouveau, n'oubliez pas de le mettre à jour ! Accédez à Accès à la base de données > Cliquez sur "Modifier" sur l'utilisateur de la base de données pour lequel vous souhaitez trouver le mot de passe > Réinitialisez votre mot de passe > Générez automatiquement un autre mot de passe sécurisé.

Créer une variable de configuration MONGODB_URI

Maintenant que nous l'avons correctement créé, il est temps d'enregistrer notre chaîne de connexion dans une variable de configuration Heroku. Définissez la variable de configuration MONGODB_URI sur notre chaîne de connexion :

heroku config:set MONGODB_URI="mongodb+srv://yourUsername:[email protected]/sample_mflix?retryWrites=true&w=majority"

Voici quelques points clés à garder à l'esprit :

  • Cette commande se compose d'une seule ligne.
  • Étant donné que le format de notre chaîne de connexion contient des caractères spéciaux, il doit être placé entre guillemets.

C'est aussi simple que ça! Vous avez ajouté avec succès la chaîne de connexion de votre cluster Atlas à une variable de configuration Heroku, ce qui vous permet d'y accéder en toute sécurité après le déploiement de votre application sur Heroku.

Remarque : Vous pouvez également saisir cette variable de configuration dans l'onglet "Paramètres" du tableau de bord Heroku pour votre application. Accédez à Leaflix> Paramètres dans vos applications. Cliquez sur le bouton « Reveal Config Vars » dans la section Config Vars et saisissez-y votre config var.

La dernière étape consiste à modifier le code de votre application pour autoriser l'accès à ces variables.

Utilisation des valeurs var de configuration Heroku pour connecter votre application à un cluster MongoDB Atlas

Vous remarquerez que nous avons codé en dur notre chaîne de connexion au cluster Atlas dans notre application de démonstration. Nous devons retravailler notre code pour utiliser la variable de configuration Heroku précédemment générée.

Les variables d'environnement sont utilisées pour exposer les variables de configuration au code de votre application. La langue que vous choisissez pour accéder à ces variables déterminera comment vous y accédez; par exemple, en Java, vous utiliseriez System.getenv(‘key’) appels, et dans Ruby, vous utiliseriez ENV[‘key’] appels.

Sachant que notre application est écrite en Node, nous pouvons utiliser la variable process.env dans Node.js pour nous connecter à notre cluster Atlas. Remplacez la constante uri dans le fichier server.js par :

const uri = process.env.MONGODB_URI;

Cela conclut notre discussion. Notre application accédera en toute sécurité à notre chaîne de connexion de cluster Atlas une fois déployée, car nous l'avons ajoutée en tant que variable de configuration Heroku.

Enregistrez le fichier, validez la modification, puis déployez-le sur Heroku.

git commit -am "fix: refactor hard-coded connection string to Heroku config var"

git push heroku master

Votre application est maintenant déployée ! À l'aide de cette commande, vous pouvez revérifier qu'au moins une instance de Leaflix est en cours d'exécution :

heroku ps:scale web=1

Vous saurez qu'au moins une instance est opérationnelle si vous recevez un avis indiquant :"Dynos de mise à l'échelle… terminé, fonctionne actuellement sur le Web à 1 :gratuit".

Enfin, accédez au site Web de votre application. Pour ce faire, suivez les étapes ci-dessous :

heroku open

Lorsque vous appuyez sur le bouton "Besoin de rire?" bouton, notre logiciel sélectionnera un film en fonction de la catégorie « Comédie » dans la zone des genres. Si tout est en ordre, vous devriez voir quelque chose comme ceci :le jeu de données sample_mflix est utilisé dans cet exemple, qui provient directement de notre cluster Atlas.

Configuration des adresses IP pour Heroku dans MongoDB Atlas

Notre cluster est déjà opérationnel, et notre application est désormais en ligne sur Heroku !

Nous avons configuré notre cluster pour accepter les connexions de n'importe quelle adresse IP afin de parcourir le guide de l'article. Vous préférez limiter l'accès à votre application uniquement, et il existe quelques options sur Heroku pour le faire.

La première option consiste à utiliser un module complémentaire pour donner à votre application une adresse IP sortante statique que vous pouvez utiliser pour restreindre l'accès dans Atlas. Quelques exemples peuvent être trouvés ici.

Une autre option consiste à utiliser les espaces privés Heroku et à utiliser les adresses IP sortantes statiques de l'espace. C'est un choix plus coûteux, mais il élimine un module complémentaire supplémentaire.

Il existe divers documents et articles qui prétendent que vous pouvez utiliser des plages d'adresses IP AWS ou Heroku pour fournir un accès aux adresses IP provenant de votre zone AWS ou Heroku Dynos dans ces régions. Bien que cela soit concevable, cela n'est pas conseillé car ces plages peuvent changer avec le temps. Nous vous suggérons donc plutôt d'utiliser l'une des deux approches répertoriées ci-dessus.

Vous pouvez utiliser la ou les adresses IP de votre application pour configurer votre pare-feu dans Atlas une fois que vous les avez.

Supprimez toutes les plages d'adresses IP existantes de votre cluster Atlas, puis ajoutez-les à votre liste d'autorisation. Vous pouvez le faire en suivant la procédure que nous avons utilisée pour "Ajouter des adresses IP et supprimer les plages d'adresses IP existantes".

C'est tout! Vous avez déployé avec succès MongoDB sur Heroku