sql >> Database >  >> NoSQL >> MongoDB

Hoe MongoDB op Heroku . te implementeren

MongoDB Atlas is eenvoudig en gratis in te stellen en te implementeren op Heroku. De MongoDB Atlas wordt gewoonlijk het multi-cloud datatoepassingsplatform genoemd. Het is een geïntegreerde data- en cloud-DB-service die de manier waarop gebruikers bouwen met data vereenvoudigt en versnelt.

Wanneer u begint met het bouwen van complexere cloud-native apps, is het selecteren van de juiste tools en services nogal overweldigend. Dat is echter niet het geval bij het kiezen van de beste cloud-DB-service, aangezien MongoDB Atlas uw beste oplossing is.

Aan de andere kant is Heroku een Platform as a Service (PaaS) dat ontwikkelaars de mogelijkheid biedt om apps in de cloud uit te voeren, te bouwen, te manipuleren en te bedienen. Heroku ondersteunt een groot aantal programmeertalen.

Deze artikelgids illustreert hoe u MongoDB op Heroku kunt implementeren. We zullen de MongoDB Atlas-versie gebruiken, omdat deze gemakkelijk kan worden geïntegreerd met de meeste Heroku-applicaties. Dit proces lijkt in eerste instantie misschien ingewikkeld, maar je zult je realiseren dat niets ingewikkeld is als je er diep in duikt. Het enige dat nodig is, is om uw MongoDB Atlas-clusterverbindingsreeks in te stellen op een bekende Heroku-configuratievariabele, en u bent klaar om te gaan.

De Atlas-editie is een volledig beheerde cloud MongoDB-service die MongoDB-clusterbeheer in de cloud automatiseert. Het biedt gebruikers automatisch schalen, geautomatiseerde back-ups, compleet suitebeheer, analytische tools en een multi-AZ-tolerantiefout. MongoDB Atlas is een van de meest geavanceerde DBaaS.

Volg de stappen die hierin worden beschreven om te leren hoe u MongoDB snel kunt opstarten en gebruiken. U kunt ook zien hoe u het MongoDB Atlas-cluster verbindt met de Heroku-apps door de uitgebreide handleiding in dit artikel te volgen.

Hoe MongoDB op Heroku te implementeren

Deze artikelgids gaat ervan uit dat u aan de volgende vereisten voldoet:

  1. Je bent goed bekend met MongoDB en hebt MongoDB-applicaties geschreven
  2. Je bent bekend met Heroku en hebt eerder Heroku-applicaties geïmplementeerd
  3. Je hebt de Heroku CLI geïnstalleerd
  4. Je bent bekend met Git en hebt het geïnstalleerd.

Laten we met de genoemde vereisten meer te weten komen over het hierboven besproken onderwerp.

MongoDB Atlas Cluster instellen

Eerst bekijken we hoe we de MongoDB Atlas Cluster in minder dan vijf stappen kunnen opzetten.

Stap 1:Een MongoDB Atlas-account aanmaken

Opmerking: Als je al een MongoDB-account hebt gemaakt met je e-mailadres, sla dan het registratieproces over en log in op je account.

Registreren voor een nieuw MongoDB Atlas-account is heel eenvoudig. U kunt ervoor kiezen om uw e-mailadres of uw Google-account te gebruiken om u te registreren.

Het proces is volledig gratis; daarom hoeft u zich geen zorgen te maken over extra kosten.

Volg deze link om u gratis te registreren voor een MongoDB Atlas-account. Vul uw gegevens in en klik op de knop 'Gratis aan de slag' om uw gratis Atlas-account te krijgen.

Zodra u een Atlas-account heeft, gaat u verder met de volgende stap

Stap 2:Uw project en organisatie maken

MongoDB Atlas zal u standaard vragen om een ​​organisatie en project aan te maken na het voltooien van het registratieproces. Vul snel de vereiste gegevens in om dit proces te voltooien en naar de volgende stap te gaan. De organisatie en het project zullen worden gebruikt om uw cluster in de toekomst te implementeren.

Stap 3:Cluster implementeren

In deze fase kies je een cluster uit verschillende clustermogelijkheden. In het belang van deze artikelgids zullen we de optie "Gedeelde cluster" gebruiken, de gratis clusteroptie die wordt aangeboden door MongoDB Atlas. Klik onder de optie "Gedeeld cluster" op "Maken".

Op de volgende pagina wordt u gevraagd enkele opties voor uw cluster te selecteren, zoals hieronder aangegeven:

Cloudprovider en regio

Hier moet u kiezen waar uw cluster wordt geïmplementeerd. Het is essentieel om een ​​regio te selecteren die het dichtst bij uw toepassing ligt. In het ideale geval moet u een constante regio selecteren om latentiegerelateerde problemen te minimaliseren. We zullen deze regio gebruiken, "N. Virginia (us-east-1)”, met AWS als onze broncloudprovider voor deze handleiding. We hebben AWS gekozen als onze cloudprovider omdat we het op Heroku zullen implementeren en hun infrastructuur op AWS zullen hosten.

Clusterlaag

In deze subsectie ziet u de beschikbare clusterlagen voor de clusteroptie die we hebben gekozen, in dit geval de gedeelde clusteropties. Hier ziet u een vergelijking van RAM, opslag, basisprijs en vCPU. Deze vergelijkingen helpen u bij het selecteren van de juiste laag die geschikt is voor uw project. We laten het voor deze handleiding op de standaard "M0 Sandbox"-laag.

Aanvullende instellingen

Deze sectie is afhankelijk van het niveau dat u kiest. Afhankelijk van de laag die u selecteert, krijgt u mogelijk enkele aanvullende instellingen. Deze instellingen omvatten back-upopties en MongoDB-versies die moeten worden geïmplementeerd. Selecteer MongoDB versie 4.4 en laat de back-upoptie uitgeschakeld.

Clusternaam

Dit is de laatste optie. Hier zou het helpen als u uw cluster een naam geeft. Ik zal ons cluster "Leafix" noemen. Onthoud dat u het niet meer kunt wijzigen nadat u het cluster heeft gemaakt.

Opmerking:het is raadzaam om de geselecteerde opties te bekijken en de nodige wijzigingen aan te brengen voordat u het cluster maakt met behulp van de knop "Cluster maken".

Stap 4:Maak een DB-gebruiker voor uw nieuw aangemaakte cluster

MongoDB Atlas vereist dat clients zich authenticeren als MongoDB-databasegebruikers om toegang te krijgen tot clusters. Volg de gegeven stappen om een ​​DB-gebruiker voor uw cluster aan te maken.

  • Navigeer naar het gedeelte 'Databasetoegang'. Het bevindt zich onder het tabblad "Beveiliging" aan de linkerkant.
  • Klik op de optie "Een nieuwe databasegebruiker toevoegen".
  • Er verschijnt een prompt. Voer uw authenticatiemethode en gebruikersrechten voor de database in
  • Gebruik het "Wachtwoord" als uw authenticatiemethode en geef het wachtwoord en de gebruikersnaam op.

Opmerking: Het wordt ten zeerste aanbevolen om automatisch een sterk wachtwoord van Atlas te genereren om complicaties met betrekking tot onveiligheid te voorkomen. Nadat u het wachtwoord automatisch heeft gegenereerd, kopieert u het en slaat u het op een handige plaats op om het in de toekomst gemakkelijk terug te kunnen vinden. Deze stap is essentieel omdat we het wachtwoord nodig hebben bij het verbinden met het cluster.

  • Verleen de gebruiker de meeste rechten door de optie "Atlas admin" te selecteren.
  • Als u klaar bent, klikt u op "Gebruiker toevoegen" om een ​​DB-gebruiker aan te maken.

Stap 5:geautoriseerde IP-adressen clustertoegang verlenen

Dit is de laatste stap bij het opzetten van het MongoDB Atlas-cluster. In deze sectie worden de IP-adressen gekozen die ons toegang geven tot het Atlas-cluster. Volg de stappen die hierin worden vermeld om autorisatie te verlenen:

  1. Selecteer onder 'Beveiliging' de optie 'Netwerktoegang'.
  2. Kies vervolgens 'IP-adres toevoegen'.
  3. Selecteer "Toegang vanaf overal toestaan" en klik op de knop "Bevestigen" om het proces te voltooien.

Dat is alles. U heeft uw MongoDB Atlas-cluster met succes ingesteld.

Opmerking :U wilt dit type IP-adrestoegang niet toestaan ​​in een productieomgeving vanwege beveiligingsproblemen. U moet het exacte IP-adres voor uw toepassing identificeren en het IP-adresbereik expliciet instellen. Dit proces is afgestemd op het verbeteren van de beveiliging van uw cluster.

Verbinding maken met uw cluster

Volg deze handleiding om verbinding te maken met uw nieuw gemaakte cluster:

  1. Klik in het gedeelte 'Gegevensopslag' in de navigatiebalk aan de linkerkant op 'Clusters'.
  2. Klik op het tabblad "Verbinden"
  3. Kies uw stuurprogrammaversie en kopieer vervolgens alleen de verbindingsreeks

Als u klaar bent, werkt u de verbindingsreeks bij. Nogmaals, vergeet niet uw gebruikersnaam en wachtwoord toe te voegen.

Een Heroku-account maken

Het aanmaken van een Heroku-account is heel eenvoudig. Bezoek eerst de officiële website van Heroku en meld je aan, net zoals we deden voor MongoDB Atlas. Nadat je je Heroku-account hebt voltooid, ga je verder en installeer je de Heroku CLI.

Installeer Heroku CLI

Het is van vitaal belang om ervoor te zorgen dat Git op uw Linux-besturingssysteem is geïnstalleerd, aangezien de Heroku CLI Git vereist. Git is een populair versiebeheersysteem dat door de meeste ontwikkelaars wordt gebruikt. Git installeren is heel eenvoudig. Open uw terminal en voer de onderstaande opdracht uit:

sudo apt-get install git-all

Uitvoer:

Dat commando zal Git in je Linux OS installeren. Voer daarna deze andere opdracht uit om Heroku op uw Linux-besturingssysteem te installeren:

sudo snap install --classic heroku

Uitvoer:

Geef de terminal de tijd om de opdracht uit te voeren en Heroku volledig te installeren.

Log in en maak een nieuwe applicatie op de Heroku-website

We denken dat je het artikel op de voet hebt gevolgd en dat je een Heroku-account hebt aangemaakt. Open dan je Heroku-dashboard. Voer de gegevens in die je hebt gebruikt om je Heroku-account aan te maken om in te loggen op je dashboard. Nadat u bent ingelogd, gaat u verder met de volgende stap om een ​​nieuwe toepassing aan te maken:

  1. Navigeer naar heroku.com/apps
  2. Selecteer Nieuw>Maak nieuwe app> Kies regio>Maak app.
  3. Wees geduldig terwijl de app wordt gemaakt.
  4. Zodra het proces is voltooid, wordt u doorgestuurd naar uw dashboard. Selecteer het gedeelte "Implementeren"

De Heroku-applicatie verbinden met lokale opslagplaatsen

Volg de implementatiehandleidingen in de implementatiesectie van dit artikel die u eerder hebt geselecteerd.

Log toch in bij Heroku in het gedeelte 'Deploy' dat we eerder hebben geselecteerd.

Voer de volgende opdrachten uit (ook gespecificeerd in de sectie Deploy) om verbinding te maken met Heroku en een nieuwe Dyno te bouwen vanuit de hoofdmap van uw server/project:

Opmerking: De punthaken “<> ” die in de onderstaande voorbeelden wordt gebruikt, duiden de door de gebruiker opgegeven identifier/parameter/argumentwaarden aan. Als u de opdrachten uitvoert, moet u ze weglaten.

# Heroku-afstandsbediening toevoegen

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

# Bekijk de beschikbare afstandsbedieningen.

# De verbinding met de nieuwe 'heroku' externe repository zou zichtbaar moeten zijn.

git remote -v

# Op de ontwikkelingstak, commit het meest recente werk.

git add .

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

git push origin <development-branch-name>

# Branches moeten uitgecheckt worden naar de master branch.

git checkout master

# Updates van de ontwikkelingstak worden samengevoegd.

git merge <development-branch-name>

git push heroku master

Heroku instellen om verbinding te maken met het MongoDB Atlas-cluster met behulp van configuratievariabelen

We hadden veel plezier bij het snel opzetten van ons Atlas-cluster, maar we denken dat je nog meer van deze sectie zult genieten!

Heroku-applicaties die door Atlas worden ondersteund, zijn eenvoudig op te bouwen. Maak een configuratie-var op toepassingsniveau die de verbindingsreeks van uw cluster bevat. U kunt veilig toegang krijgen tot die configuratie-var binnen uw toepassing zodra deze is ingesteld!

Zo doe je het:

Stap 1:Open de Heroku CLI en log in.

heroku login

Met deze opdracht gaat u naar de Heroku-inlogpagina in uw webbrowser. Klik op de knop "Inloggen" als u al bent aangemeld. U kunt ook de vlag -i gebruiken om u aan te melden vanaf de opdrachtregel.

Stap 2:maak een kopie van mijn demo-app

Ik heb een prototype Node-applicatie gemaakt die MongoDB Atlas gebruikt en die ik graag wil publiceren naar Heroku om deze les voort te zetten. Kloon het en ga dan naar de volgende map:

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

cd mongodb-atlas-heroku-leaflix-demo

Uitvoer:

Stap 3:Bouw een Heroku-app

heroku create leaflix

Uitvoer:

Zoals je kunt zien, heb ik mijn leaflix een naam gegeven.

Verkrijg uw Atlas Cluster-verbindingsreeks

Ga terug naar het dashboard van uw Atlas-cluster om onze verbindingsreeks op te halen.

  • Selecteer 'Verbinden' in het vervolgkeuzemenu.
  • Selecteer 'Verbind uw applicatie' in het vervolgkeuzemenu.

De verbindingsreeks die we nodig hebben om verbinding te maken met ons cluster, vindt u hier. Noteer de verbindingsreeks.

Plak de verbindingsreeks in een editor; we zullen enkele wijzigingen aanbrengen voordat we het toewijzen aan een Heroku-configuratievariabele.

Atlas heeft eenvoudig de gebruikersnaam van de databasegebruiker die we eerder hebben gemaakt, zoals je kunt zien. Vervang het "wachtwoord" door het wachtwoord van uw persoonlijke databasegebruiker en "dbname" door "sample_mflix", de voorbeeldgegevensset die onze demo-app zal gebruiken om de verbindingsreeks te voltooien en geldig te maken.

Opmerking:als u het wachtwoord voor uw databasegebruiker niet hebt, genereer er dan automatisch een en gebruik het in de verbindingsreeks. Als u het opnieuw automatisch genereert, vergeet dan niet om het bij te werken! Ga naar Databasetoegang> Klik op "Bewerken" bij de databasegebruiker waarvoor u het wachtwoord wilt vinden> Stel uw wachtwoord opnieuw in> Genereer automatisch een ander veilig wachtwoord.

Maak een MONGODB_URI-configuratievariabele

Nu we het correct hebben gemaakt, is het tijd om onze verbindingsreeks op te slaan in een Heroku-configuratievariabele. Stel de MONGODB_URI-configuratievariabele in op onze verbindingsreeks:

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

Hier zijn een paar belangrijke punten om in gedachten te houden:

  • Deze opdracht bestaat uit slechts één regel.
  • Omdat de indeling van onze verbindingsreeks speciale tekens bevat, moet deze tussen aanhalingstekens staan.

Zo simpel is het! U heeft de verbindingsreeks van uw Atlas-cluster toegevoegd aan een Heroku-configuratievariabele, zodat u deze veilig kunt openen nadat uw app is geïmplementeerd in Heroku.

Opmerking: U kunt deze configuratie-var ook invoeren op het tabblad "Instellingen" van het Heroku-dashboard voor uw app. Ga naar Leaflix> Instellingen in je apps. Klik op de knop "Config Vars onthullen" in het gedeelte Config Vars en voer daar uw config var in.

De laatste stap is om de code van uw toepassing te wijzigen om toegang tot deze variabelen toe te staan.

De Heroku config var-waarden gebruiken om uw app te verbinden met een MongoDB Atlas-cluster

U zult merken dat we onze Atlas-clusterverbindingsreeks hard hebben gecodeerd in onze demo-applicatie. We moeten onze code herwerken om de eerder gegenereerde Heroku-configuratievariabele te gebruiken.

Omgevingsvariabelen worden gebruikt om config vars bloot te stellen aan de code van uw toepassing. De taal die u kiest om toegang te krijgen tot deze variabelen, bepaalt hoe u ze opent; in Java zou u bijvoorbeeld System.getenv('key') . gebruiken oproepen, en in Ruby gebruikt u ENV[‘key’] oproepen.

Wetende dat onze applicatie is geschreven in Node, kunnen we de variabele process.env in Node.js gebruiken om verbinding te maken met ons Atlas-cluster. Verander de uri-constante in het server.js-bestand in:

const uri = process.env.MONGODB_URI;

Dat besluit onze discussie. Onze applicatie zal veilig toegang krijgen tot onze Atlas-clusterverbindingsreeks zodra deze is geïmplementeerd, omdat we deze hebben toegevoegd als een Heroku-configuratievar.

Sla het bestand op, voer de wijziging door en implementeer het vervolgens in Heroku.

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

git push heroku master

Uw applicatie is nu geïmplementeerd! Met deze opdracht kunt u controleren of er ten minste één instantie van Leaflix actief is:

heroku ps:scale web=1

U weet dat er ten minste één exemplaar actief is als u een melding krijgt met de melding:"Scaling dyno's ... klaar, momenteel draait het web op 1:gratis."

Navigeer ten slotte naar de website van uw app. U kunt dit doen door u aan de onderstaande stappen te houden:

heroku open

Wanneer u op de knop "Lacht nodig?" knop, zal onze software een film selecteren op basis van de categorie "Comedy" in het genres-gebied. Als alles in orde is, zou je zoiets als dit moeten zien:in dit voorbeeld wordt de dataset sample_mflix gebruikt, die rechtstreeks uit ons Atlas-cluster komt.

IP-adressen configureren voor Heroku in MongoDB Atlas

Ons cluster is al operationeel en onze app is nu live op Heroku!

We hebben ons cluster opgezet om verbindingen vanaf elk IP-adres te accepteren om ons door de artikelgids te leiden. Je zou de toegang tot je applicatie liever alleen beperken, en er zijn een paar opties op Heroku om dit te doen.

De eerste optie is om een ​​add-on te gebruiken om uw applicatie een statisch uitgaand IP-adres te geven dat u kunt gebruiken om de toegang in Atlas te beperken. Enkele voorbeelden zijn hier te vinden.

Een andere optie is om Heroku Private Spaces te gebruiken en de statische uitgaande IP's van de ruimte te gebruiken. Dit is een duurdere keuze, maar het elimineert een extra add-on.

Er zijn verschillende documenten en artikelen die beweren dat u AWS- of Heroku IP-bereiken kunt gebruiken om toegang te verlenen tot IP's die afkomstig zijn uit uw AWS-gebied of Heroku Dynos in die regio's. Hoewel dit denkbaar is, wordt het niet geadviseerd omdat dergelijke bereiken in de loop van de tijd kunnen veranderen. Dus in plaats daarvan raden we aan een van de twee hierboven genoemde benaderingen te gebruiken.

U kunt de IP-adressen voor uw toepassing gebruiken om uw firewall in Atlas te configureren zodra u deze heeft.

Verwijder alle bestaande IP-bereiken uit uw Atlas-cluster en voeg ze toe aan uw toelatingslijst. U kunt dit doen door de procedure te volgen die we hebben gebruikt om "IP-adressen toe te voegen en de bestaande IP-bereiken te verwijderen."

Dat is alles! Je hebt MongoDB succesvol geïmplementeerd op Heroku


  1. Hoe kan ik slechts één database opslaan in Redis?

  2. Hoe voer ik een id-arrayquery uit in Mongoose?

  3. Benaderingen voor back-up en noodherstel in HBase

  4. Wanneer gebruik je een sleutel/waarde-archief zoals Redis in plaats van/naast een SQL-database?