MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come distribuire MongoDB su Heroku

MongoDB Atlas è facile e gratuito da configurare e distribuire MongoDB su Heroku. L'atlante MongoDB è comunemente indicato come piattaforma di applicazione dati multi-cloud. È un servizio di database integrato e dati cloud che semplifica e accelera il modo in cui gli utenti creano con i dati.

Quando inizi a creare app cloud native più complesse, la selezione degli strumenti e dei servizi appropriati tende a essere piuttosto opprimente. Tuttavia, non è così quando si sceglie il miglior servizio di database cloud, poiché MongoDB Atlas è la soluzione migliore.

D'altra parte, Heroku è una Platform as a Service (PaaS) che offre agli sviluppatori la possibilità di eseguire, creare, manipolare e far funzionare app sul cloud. Heroku supporta una moltitudine di linguaggi di programmazione.

Questa guida all'articolo illustrerà come distribuire MongoDB su Heroku. Utilizzeremo la versione MongoDB Atlas poiché si integra facilmente con la maggior parte delle applicazioni Heroku. Questo processo potrebbe sembrare complesso all'inizio, ma ti renderai conto che nulla è complicato quando ti immergi in profondità. Tutto ciò che serve è impostare la stringa di connessione del cluster MongoDB Atlas su una variabile di configurazione Heroku nota e sei a posto.

L'edizione Atlas è un servizio MongoDB cloud completamente gestito che automatizza la gestione dei cluster MongoDB nel cloud. Offre agli utenti scalabilità automatica, backup automatici, gestione completa della suite, strumenti analitici e un errore di tolleranza multi-AZ. MongoDB Atlas è tra i DBaaS più sofisticati.

Segui i passaggi forniti qui per imparare come far funzionare MongoDB ed eseguirlo velocemente. Potrai anche vedere come connettere il cluster MongoDB Atlas alle app Heroku seguendo la guida approfondita fornita in questo articolo.

Come distribuire MongoDB su Heroku

Questa guida all'articolo presuppone che tu abbia i seguenti prerequisiti:

  1. Hai dimestichezza con MongoDB e hai scritto applicazioni MongoDB
  2. Hai dimestichezza con Heroku e hai già distribuito le applicazioni Heroku
  3. Hai installato la CLI di Heroku
  4. Hai dimestichezza con Git e l'hai installato.

Con i prerequisiti menzionati, impariamo di più sull'argomento discusso sopra.

Configurazione del cluster Atlas MongoDB

Per prima cosa, esamineremo come configurare il MongoDB Atlas Cluster in meno di cinque passaggi.

Fase 1:creazione di un account Atlas MongoDB

Nota: Se hai già creato un account MongoDB con il tuo indirizzo email, salta il processo di registrazione e accedi al tuo account.

La registrazione per un nuovo account Atlas MongoDB è molto semplice. Puoi scegliere di utilizzare il tuo indirizzo email o il tuo account Google per la registrazione.

Il processo è completamente gratuito; quindi, non devi preoccuparti di incorrere in costi aggiuntivi.

Segui questo link per registrarti gratuitamente per un account MongoDB Atlas. Inserisci i tuoi dati e fai clic sul pulsante "Inizia gratuitamente" per ottenere il tuo account Atlas gratuito.

Una volta che hai un account Atlas, vai al passaggio successivo

Fase 2:creazione del progetto e dell'organizzazione

MongoDB Atlas ti chiederà, per impostazione predefinita, di creare un'organizzazione e un progetto dopo aver completato il processo di registrazione. Inserisci rapidamente i dettagli richiesti per completare questo processo e passare al passaggio successivo. L'organizzazione e il progetto verranno utilizzati per distribuire il tuo cluster in futuro.

Fase 3:distribuisci il cluster

In questa fase, selezionerai un cluster da varie opzioni di cluster. Per il bene di questa guida all'articolo, utilizzeremo l'opzione "Cluster condiviso", che è l'opzione cluster gratuita fornita da MongoDB Atlas. Sotto l'opzione "Cluster condiviso", fai clic su "Crea".

Nella pagina successiva ti verrà chiesto di selezionare alcune opzioni per il tuo cluster, come evidenziato di seguito:

Fornitore cloud e regione

Qui ti viene richiesto di scegliere dove verrà distribuito il tuo cluster. È essenziale selezionare una regione più vicina alla tua applicazione. Idealmente, dovresti selezionare un'area costante per ridurre al minimo i problemi relativi alla latenza. Useremo questa Regione, “N. Virginia (us-east-1)", con AWS come nostro provider cloud di origine per questa guida. Abbiamo selezionato AWS come nostro provider cloud poiché distribuiremo su Heroku e ospiteremo la loro infrastruttura su AWS.

Livello cluster

In questa sottosezione, vedrai i livelli di cluster disponibili per l'opzione cluster che abbiamo scelto, in questo caso, le opzioni cluster condivise. Qui vedrai un confronto tra RAM, spazio di archiviazione, prezzo base dei livelli e vCPU. Questi confronti ti aiuteranno a selezionare il livello corretto adatto al tuo progetto. Lasceremo il livello predefinito "M0 Sandbox" per questa guida.

Impostazioni aggiuntive

Questa sezione dipende dal livello scelto. Potresti ottenere alcune impostazioni aggiuntive a seconda del livello selezionato. Queste impostazioni includeranno opzioni di backup e versioni di MongoDB da distribuire. Seleziona MongoDB versione 4.4 e lascia l'opzione di backup disattivata.

Nome del gruppo

Questa è l'ultima opzione. Qui sarebbe utile se avessi chiamato il tuo cluster. Chiamerò il nostro gruppo "Leafix". Ricorda che non ti sarà permesso cambiarlo una volta creato il cluster.

Nota:è consigliabile rivedere le opzioni selezionate e apportare le modifiche necessarie prima di creare il cluster utilizzando il pulsante "Crea cluster".

Fase 4:crea un utente DB per il cluster appena creato

MongoDB Atlas richiede che i client si autentichino come utenti del database MongoDB per accedere ai cluster. Segui i passaggi forniti per creare un utente DB per il tuo cluster.

  • Vai alla sezione "Accesso al database". Si trova nella scheda "Sicurezza" sul lato sinistro.
  • Fai clic sull'opzione "Aggiungi un nuovo utente del database".
  • Apparirà un messaggio. Inserisci il tuo metodo di autenticazione e i privilegi utente del database
  • Utilizza la "Password" come metodo di autenticazione e fornisci la password e il nome utente.

Nota: Si consiglia vivamente di generare automaticamente una password complessa da Atlas per evitare complicazioni legate all'insicurezza. Dopo aver generato automaticamente la password, copiala e salvala in un posto comodo per recuperarla facilmente in futuro. Questo passaggio è fondamentale poiché richiederemo la password durante la connessione al cluster.

  • Concedi all'utente il maggior numero di privilegi selezionando l'opzione "Amministratore Atlas".
  • Al termine, fai clic su "Aggiungi utente" per creare un utente DB.

Passaggio 5:Concedi l'accesso al cluster di indirizzi IP autorizzati

Questo è il passaggio finale durante la configurazione del cluster MongoDB Atlas. Questa sezione sceglierà gli indirizzi IP che ci consentono di accedere al cluster Atlas. Per concedere l'autorizzazione, segui i passaggi indicati di seguito:

  1. In "Sicurezza", seleziona "Accesso alla rete".
  2. Successivamente, scegli "Aggiungi indirizzo IP".
  3. Seleziona "Consenti accesso da qualsiasi luogo" e fai clic sul pulsante "Conferma" per completare il processo.

È tutto. Hai impostato correttamente il tuo cluster Atlas MongoDB.

Nota :non si desidera consentire a questo tipo di accesso all'indirizzo IP in un ambiente di produzione a causa di problemi di sicurezza. È necessario identificare l'indirizzo IP esatto per la propria applicazione e impostare in modo esplicito l'intervallo di indirizzi IP. Questo processo è personalizzato per migliorare la sicurezza del tuo cluster.

Connessione al tuo cluster

Per connetterti al tuo cluster appena creato, segui questa guida:

  1. Nella sezione "Archiviazione dati" della barra di navigazione a sinistra, fai clic su "Cluster".
  2. Fai clic sulla scheda "Connetti".
  3. Scegli la versione del tuo driver, quindi copia solo la stringa di connessione

Al termine, aggiorna la stringa di connessione. Ancora una volta, non dimenticare di aggiungere il tuo nome utente e password.

Creazione di un account Heroku

Creare un account Heroku è molto semplice. Per prima cosa, visita il sito Web ufficiale di Heroku e iscriviti proprio come abbiamo fatto per MongoDB Atlas. Dopo aver completato il tuo account Heroku, procedi e installa la CLI Heroku.

Installa Heroku CLI

È fondamentale assicurarsi di avere Git installato sul sistema operativo Linux poiché Heroku CLI richiede Git. Git è un popolare sistema di controllo della versione comunemente usato dalla maggior parte degli sviluppatori. Installare Git è molto semplice. Apri il tuo terminale ed esegui il comando seguente:

sudo apt-get install git-all

Risultato:

Quel comando installerà Git nel tuo sistema operativo Linux. Successivamente, esegui questo altro comando per installare Heroku sul tuo sistema operativo Linux:

sudo snap install --classic heroku

Risultato:

Dai al terminale il tempo di eseguire il comando e installare completamente Heroku.

Accedi e crea una nuova applicazione sul sito Web di Heroku

Riteniamo che tu abbia seguito da vicino l'articolo e che tu abbia creato un account Heroku. In tal caso, apri la dashboard di Heroku. Inserisci i dettagli che hai utilizzato per creare il tuo account Heroku per accedere alla tua dashboard. Dopo aver effettuato l'accesso, procedi al passaggio successivo per creare una nuova applicazione:

  1. Vai a heroku.com/apps
  2. Seleziona Nuovo>Crea nuova app> Scegli regione>Crea app.
  3. Sii paziente durante la creazione dell'app.
  4. Al termine del processo, verrai reindirizzato alla tua dashboard. Seleziona la sezione "Distribuisci"

Collegamento dell'applicazione Heroku ai repository locali

Segui le guide alla distribuzione fornite nella sezione relativa alla distribuzione di questo articolo che hai selezionato in precedenza.

Tuttavia, accedi a Heroku nella sezione "Distribuisci" che abbiamo selezionato in precedenza.

Esegui i seguenti comandi (specificati anche nella sezione Distribuzione) per connetterti a Heroku e creare un nuovo Dyno dalla directory principale del tuo server/progetto:

Nota: Le parentesi angolari “<> ” utilizzato negli esempi seguenti denota i valori di identificatore/parametro/argomento forniti dall'utente. Quando esegui i comandi, dovresti lasciarli fuori.

# Aggiungi telecomando Heroku

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

# Dai un'occhiata ai telecomandi disponibili.

# La connessione al nuovo repository remoto "heroku" dovrebbe essere visibile.

git remote -v

# Nel ramo di sviluppo, impegna il lavoro più recente.

git add .

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

git push origin <development-branch-name>

# Le filiali devono essere ritirate presso la filiale principale.

git checkout master

# Gli aggiornamenti dal ramo di sviluppo vengono uniti.

git merge <development-branch-name>

git push heroku master

Configurazione di Heroku per la connessione al MongoDB Atlas Cluster utilizzando le variabili di configurazione

Ci siamo divertiti molto a configurare rapidamente il nostro cluster Atlas, ma pensiamo che questa sezione ti piacerà ancora di più!

Le applicazioni Heroku supportate da Atlas sono semplici da creare. Costruisci una var di configurazione a livello di applicazione che contenga la stringa di connessione del tuo cluster. Puoi accedere in sicurezza a quella config var all'interno della tua applicazione una volta che è stata configurata!

Ecco come lo fai:

Fase 1:apri l'interfaccia a riga di comando di Heroku e accedi.

heroku login

Questo comando ti porta alla pagina di accesso di Heroku nel tuo browser web. Fai clic sul pulsante "Accedi" se hai già effettuato l'accesso. Puoi anche utilizzare il flag -i per accedere dalla riga di comando.

Passaggio 2:crea una copia della mia app demo

Ho costruito un prototipo di applicazione Node che utilizza MongoDB Atlas e che vorrei pubblicare su Heroku per continuare questa lezione. Clonalo, quindi vai alla seguente directory:

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

cd mongodb-atlas-heroku-leaflix-demo

Risultato:

Fase 3:crea un'app Heroku

heroku create leaflix

Risultato:

Come puoi vedere, ho dato un nome alla mia leaflix.

Ottieni la tua stringa di connessione Atlas Cluster

Torna alla dashboard del tuo cluster Atlas per recuperare la nostra stringa di connessione.

  • Seleziona "Connetti" dal menu a discesa.
  • Seleziona "Collega la tua applicazione" dal menu a discesa.

La stringa di connessione di cui avremo bisogno per connetterci al nostro cluster si troverà qui. Annota la stringa di connessione.

Incolla la stringa di connessione in un editor; apporteremo alcune modifiche prima di assegnarlo a una variabile di configurazione di Heroku.

Atlas ha facilmente incluso il nome utente dell'utente del database che abbiamo creato in precedenza, come puoi vedere. Sostituisci la "password" con la password dell'utente del database personale e "dbname" con "sample_mflix", che è il set di dati di esempio che la nostra app demo utilizzerà per completare la stringa di connessione e renderla valida.

Nota:se non si dispone della password per l'utente del database, generarne una automaticamente e utilizzarla nella stringa di connessione. Se lo generi di nuovo automaticamente, ricorda di aggiornarlo! Vai su Accesso al database> Fai clic su "Modifica" sull'utente del database per il quale desideri trovare la password> Reimposta la password> Genera automaticamente un'altra password sicura.

Crea una variabile di configurazione MONGODB_URI

Ora che l'abbiamo creato correttamente, è ora di salvare la nostra stringa di connessione in una variabile di configurazione di Heroku. Imposta la variabile di configurazione MONGODB_URI sulla nostra stringa di connessione:

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

Ecco alcuni punti chiave da tenere a mente:

  • Questo comando è costituito da una sola riga.
  • Poiché il formato della nostra stringa di connessione contiene caratteri speciali, deve essere racchiuso tra virgolette.

E 'così semplice! Hai aggiunto correttamente la stringa di connessione del tuo cluster Atlas a una variabile di configurazione di Heroku, consentendoti di accedervi in ​​modo sicuro dopo che la tua app è stata distribuita su Heroku.

Nota: Puoi anche inserire questa var di configurazione nella scheda "Impostazioni" di Heroku Dashboard per la tua app. Vai su Leaflix> Impostazioni nelle tue app. Fai clic sul pulsante "Reveal Config Vars" nella sezione Config Vars e inserisci lì la tua config var.

Il passaggio finale consiste nel modificare il codice della tua applicazione per consentire l'accesso a queste variabili.

Utilizzo dei valori di Heroku config var per connettere la tua app a un cluster Atlas MongoDB

Noterai che abbiamo codificato la nostra stringa di connessione del cluster Atlas nella nostra applicazione demo. Dobbiamo rielaborare il nostro codice per utilizzare la variabile di configurazione Heroku generata in precedenza.

Le variabili di ambiente vengono utilizzate per esporre le variabili di configurazione al codice dell'applicazione. La lingua scelta per accedere a queste variabili determinerà come accedervi; ad esempio, in Java, utilizzeresti System.getenv('key') chiamate e in Ruby useresti ENV['key'] chiamate.

Sapendo che la nostra applicazione è scritta in Node, possiamo usare la variabile process.env in Node.js per connetterci al nostro cluster Atlas. Modifica la costante uri nel file server.js in:

const uri = process.env.MONGODB_URI;

Questo conclude la nostra discussione. La nostra applicazione accederà in modo sicuro alla nostra stringa di connessione del cluster Atlas una volta distribuita perché l'abbiamo aggiunta come var di configurazione di Heroku.

Salva il file, esegui il commit della modifica e quindi distribuiscilo su Heroku.

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

git push heroku master

La tua applicazione è stata ora distribuita! Usando questo comando, puoi ricontrollare che almeno un'istanza di Leaflix sia in esecuzione:

heroku ps:scale web=1

Saprai che almeno un'istanza è attiva e funzionante se ricevi un avviso che dice "Ridimensionamento dei banchi dinamici... fatto, attualmente in esecuzione sul Web a 1:gratuito".

Infine, vai al sito web della tua app. Puoi farlo attenendoti ai passaggi seguenti:

heroku open

Quando premi "Hai bisogno di una risata?" pulsante, il nostro software selezionerà un film in base alla categoria "Commedia" nell'area dei generi. Se tutto è in ordine, dovresti vedere qualcosa del genere:in questo esempio viene utilizzato il set di dati sample_mflix, che proviene direttamente dal nostro cluster Atlas.

Configurazione degli indirizzi IP per Heroku in MongoDB Atlas

Il nostro cluster è già operativo e la nostra app è ora disponibile su Heroku!

Abbiamo impostato il nostro cluster per accettare connessioni da qualsiasi indirizzo IP per farci passare la guida all'articolo. Preferiresti limitare l'accesso esclusivamente alla tua applicazione e ci sono alcune opzioni su Heroku per farlo.

La prima opzione consiste nell'utilizzare un componente aggiuntivo per fornire alla tua applicazione un indirizzo IP statico in uscita che puoi utilizzare per limitare l'accesso in Atlas. Alcuni esempi possono essere trovati qui.

Un'altra opzione è utilizzare Heroku Private Spaces e utilizzare gli IP statici in uscita dello spazio. Questa è una scelta più costosa, ma elimina un componente aggiuntivo aggiuntivo.

Esistono vari documenti e articoli che affermano che puoi utilizzare gli intervalli IP di AWS o Heroku per fornire l'accesso agli IP originari della tua area AWS o di Heroku Dynos in quelle regioni. Sebbene ciò sia concepibile, non è consigliato perché tali intervalli possono alterarsi nel tempo. Quindi, suggeriamo invece di utilizzare uno dei due approcci sopra elencati.

Puoi utilizzare gli indirizzi IP della tua applicazione per configurare il firewall in Atlas una volta che li hai.

Rimuovi eventuali intervalli IP esistenti dal tuo cluster Atlas, quindi aggiungili all'elenco di autorizzazioni. Puoi farlo seguendo la procedura che abbiamo utilizzato per "Aggiungere indirizzi IP ed eliminare gli intervalli IP esistenti".

È tutto! Hai distribuito con successo MongoDB su Heroku