MongoDB logo

MongoDB Atlas

MongoDB Atlas e' l'ambiente Cloud su cui vengono ospitati database MongoDB.

MongoDB e' uno dei piu' diffusi DB NoSQL grazie alla sua velocita', alla flessibilita, alla semplicita' di installazione ed utilizzo. MongoDB e' utilizzabile con tutti i piu' recenti linguaggi di programmazione ed dal nuovo ambiente Stitch. Stitch e' un nuovo paradigma di programmazione che consente di sviluppare applicazioni serverless che utilizzano la base dati MongoDB.

Questo documento presenta gli aspetti principali di MongoDB Atlas: Configurazione, Utilizzo, Stitch, ... Varie ed eventuali,

Configurazione

Per configurare MongoDB in Cloud si accede al sito https://www.mongodb.com/cloud/atlas.
E' necessario registrarsi per creare la propria utenza, cosa che richiede pochi minuti; la registrazione e' gratuita e non richiede dettagli economici (eg. niente carta di credito).

A questo punto e' possibile creare un nuovo cluster premendo il bottone "Build a New Cluster".
Vanno definite le caratteristiche del cluster configurando le sezioni:

Le scelte di default sono quelle piu' frequentemente usate... vediamo comunque le impostazioni piu' importanti.

E' possibile scegliere tra diversi Cloud dei principali fornitori (AWS di Amazon, GCP di Google, Azure di Microsoft). Tutti prevedono tier nelle varie Region tra cui l'Europa. Per provare il servizio e' possibile scegliere un tier gratuito:

MongoDB Atlas - Amazon AWS MongoDB Atlas - Google Cloud Platform MongoDB Atlas - Microsoft Azure

MongoDB Atlas - Latenza La scelta della Region e' importante per diminuire la latenza all'accesso. Noi italiani sceglieremo un datacenter in Europa [NdA in attesa delle previste prossime aperture in Italia].

Sono disponibili Tier con prestazioni e costi differenti. M0 e' un tier gratuito con RAM/CPU condivise e fino a 512MB di storage. Vi sono poi diverse configurazioni adatte ad ambienti di sviluppo dedicati fino ad arrivare ad ambienti adatti a deployment di produzione molto significativi: ambiente dedicato, 72 vCPU, 512GB RAM, 4TB storage SSD, 25Gb network, 128K max connections; naturalmente con un costo commisurato.

Premendo sul bottone Create Cluster in pochi minuti MongoDB e' disponibile.

Gia' fatto! MongoDB si puo' gia' utilizzare! Viene presentata la console con l'elenco dei cluster disponibili: MongoDB Atlas - Cloud Console

Tutti i Tier sono gestiti: basta qualche click si possono attivare backup, sharding, attivare il monitoraggio esteso, modificare la configurazione, ...
Selezionando il cluster appena creato si evidenziano i dettagli. Vi e' un'istanza Primary e due istanze Secondary come previsto dalla configurazione dei Replica Set: MongoDB Atlas - Cluster Console

Premendo il bottone CONNECT sono evidenziati i parametri per connettersi al DB...

Utilizzo

Utilizzare MongoDB in Cloud e' facile come se fosse in locale.

Vediamo come installare il client mongo su Mac ed accedere:

$ brew install mongodb/brew/mongodb-community-shell $ mongo "mongodb+srv://cluster0-babb0.mongodb.net/test" --username root connecting to: mongodb://cluster0-shard-00-00-babb0.mongodb.net.:27017,cluster0-shard-00-01-babb0.mongodb.net.:27017,cluster0-shard-00-02-babb0.mongodb.net.:27017/test?authSource=admin&gssapiServiceName=mongodb&replicaSet=Cluster0-shard-0&ssl=true 2019-03-10T20:33:18.704+0100 I NETWORK [js] Starting new replica set monitor for Cluster0-shard-0/cluster0-shard-00-00-babb0.mongodb.net.:27017,cluster0-shard-00-01-babb0.mongodb.net.:27017,cluster0-shard-00-02-babb0.mongodb.net.:27017 ... MongoDB Enterprise Cluster0-shard-0:PRIMARY> db.stats() { "db" : "test", "collections" : 13, "views" : 17, "objects" : NumberLong(69), "avgObjSize" : 999, ... MongoDB Enterprise Cluster0-shard-0:PRIMARY> db.serverStatus() { "host" : "cluster0-shard-00-00-babb0.mongodb.net:27017", "version" : "4.0.6", "process" : "mongod", "pid" : NumberLong(14516), "uptime" : 125364, ...

Se non si collega... avete dimenticato la password? avete impostato la IP whitelist? La sicurezza innanzi tutto!

Naturalmente e' possibile utilizzare anche un'interfaccia grafica come quella di NoSQLBooster. Ecco come appare un cluster appena creato: vi sono i tre nodi, il database admin, il database local... MongoDB Atlas - NoSQLBooster

Non riportiamo altro perche' utilizzare MongoDB e' molto semplice e non vi sono altre differenze rispetto ad un'installazione locale.

Stitch

Stitch e' l'ambiente Cloud che consente di sviluppare applicazioni serverless che operano su MongoDB. MongoDB Atlas - Stitch

Si tratta di un nuovo paradigma applicativo che consente di realizzare servizi in rete tra loro distinti senza richiedere alcun server fisico o virtuale.

MongoDB Atlas - Stitch main page

MongoDB Atlas - Stitch menu Una caratteristica delle applicazioni Serverless e' che non e' necessario attivare un tier per rispondere alle chiamate. Il costo del servizio dipende dal numero di richieste e dai trasferimenti occorsi. Attualmente su Atlas fino a 25GB e 100GBs il servizio e' gratuito.

Un'applicazione Stitch viene realizzata in modo dichiarativo indicando quali sono gli oggetti a cui fa riferimento. Ad esempio le Rules definiscono su Stitch quali collection MongoDB sono accessibili e con quali diritti (eg. Read, Write): MongoDB Atlas - Rules

I Triggers sono le azioni da intraprendere quando avviene una modifica sui dati, e' possibile agganciarsi a servizi esterni (eg. mandare messaggi), definire funzioni, ...
I Services di Stitch possono essere richiamati da Clients diversi come applicazioni Web, applicazioni Java su Android, Swift per iOS.

Poiche' in queste cose un esempio vale piu' di mille parole ecco un'applicazione Web completa [NdA consente di registrare i commenti alle degustazioni]:

<html> <head> <script src="https://s3.amazonaws.com/stitch-sdks/js/bundles/4/stitch.js"></script> <script> // Inizializza l'applicazione const client = stitch.Stitch.initializeDefaultAppClient("winestiches-babb0"); const mongodb = client.getServiceClient( stitch.RemoteMongoClient.factory, "mongodb-atlas" ); // Si aggancia ad un database MongoDB const db = mongodb.db("degusta"); // Avvio dell'applicazione: connessione come utente anonimo function displayOnLoad() { client.auth .loginWithCredential(new stitch.AnonymousCredential()) .then(displayComments) .catch(console.error); } // Visualizza i commenti function displayComments() { db.collection("assaggio") .find({}, {limit: 1000}) .toArray() .then(docs => { const html = docs.map(doc => `<div>🍷 ${doc.comment}</div>`); document.getElementById("comments").innerHTML = html; }); } // Inserisce un commento function addComment() { const newComment = document.getElementById("new_comment"); console.log("add comment", client.auth.user.id) db.collection("assaggio") .insertOne({ owner_id : client.auth.user.id, comment: newComment.value }) .then(displayComments); newComment.value = ""; } </script> </head> <body onload="displayOnLoad()"> <h3>Diario DiVino</h3> <div id="content"> I like to write about wines because I want to be... happy! </div> <hr> <div id="comments"></div> <hr> Inserisci le note sulla tua degustazione: <input id="new_comment"><input type="submit" onClick="addComment()"> </body> </html>

A parte le fasi dichiarative e di connessione iniziale la parte di programmazione e' davvero compatta e quindi si puo' essere molto produttivi nello sviluppo del software.

Sicurezza

MongoDB Atlas - Security Negli ambienti in Cloud gli aspetti di sicurezza sono molto importanti.

MongoDB Atlas utilizza configurazioni e suggerisce impostazioni sicure... ma occorre comunque attenzione.

Dalla console si configurano le utenze, i ruoli e l'IP Whitelist per l'accesso. E' inoltre possibile configurare in peering la propria VPC (Virtual Private Cloud).

Atlas fornisce alcune impostazioni Enterprise sulla sicurezza [NdA con costo supplementare anche se limitato].
L'encryption at-rest e' gia' attiva per default ma puo' essere integrata con AWS Key Management Service or Azure Key Vault per maggior sicurezza.
E' possibile attivare il Database Auditing.
E' possibile attivare l'autenticazione e la profilazione LDAP.

Anche su Stitch sono presenti diverse possibilita' di autenticazione (eg. Anonymous vs Email/Password ...) e specifiche protezioni verso i dati (eg. Rules) adatte all'utilizzo in Cloud.

Da ultimo, ma assolutamente non per ultimo, vanno sempre utilizzate password sicure!

MongoDB Atlas - Menu

Varie ed eventuali

Per una descrizione piu' completa sulle funzionalita' di MongoDB si rimanda ai documenti MongoDB 4.0 ed Introduzione a MongoDB.

Sono molte le funzionalita' disponibili su Atlas che non abbiamo descritto in questo breve documento. Sicuramente molto interessante sono i recentissimi Charts richiamabili dal menu principale di Atlas: MongoDB Atlas - Charts

Atlas fornisce la versione piu' recenti di MongoDB; la storia delle versioni di MongoDB e' riassunta in questo paginetta.


Titolo: MongoDB Atlas
Livello: Medio (2/5)
Data: 31 Ottobre 2018
Versione: 1.0.1 - 14 Febbraio 2019 ❤️ San Valentino
Autore: mail [AT] meo.bogliolo.name