Che cos'è il monitoraggio dei database cloud?
Il monitoraggio dei database nel cloud si riferisce al monitoraggio dei database eseguiti nel cloud. In genere viene gestito attraverso vari controlli, utilizza avvisi per informare gli amministratori del cloud di potenziali problemi e monitora le prestazioni per ottimizzare l'efficienza dei database cloud. Esistono molte soluzioni di database cloud che possono e devono essere monitorate, ma qui ci concentreremo su quelle offerte dai tre principali fornitori di cloud, AWS, Azure e Google. Queste soluzioni possono essere eseguite in un cloud pubblico o privato e in un ambiente ibrido o completamente cloud. In pratica, una parte importante del monitoraggio del cloud è il monitoraggio dei database del cloud.
Il monitoraggio dei database cloud non distingue sostanzialmente il luogo in cui i database sono impostati o fisicamente ubicati, ma include qualsiasi tipo di database che viene fornito in un cloud. Pertanto, sia i database nativi del cloud che quelli eseguiti in macchine virtuali rientrano nell'ambito del monitoraggio dei database cloud. Tra poco spiegheremo la differenza tra i due. Per ora, è sufficiente stabilire che il monitoraggio dei database cloud comporta la raccolta e l'analisi delle metriche e dei registri delle istanze di database, il monitoraggio del loro stato di salute, l'identificazione di potenziali problemi o colli di bottiglia e l'ottimizzazione delle loro prestazioni.
Quali sono le differenze tra database tradizionali e cloud-native?
Prima di passare al monitoraggio vero e proprio di questi ultimi, è necessario spiegare le differenze tra database classici e database cloud. Google fornisce una buona definizione di cosa sia un database cloud:
Un database cloud è un database costruito per essere eseguito in un ambiente cloud pubblico o ibrido per aiutare a organizzare, archiviare e gestire i dati all'interno di un'organizzazione. I database cloud possono essere offerti come database-as-a-service (DBaaS) o distribuiti su una macchina virtuale (VM) basata sul cloud. su una macchina virtuale (VM) basata sul cloud e autogestita da un team IT interno.
La definizione di Google non distingue quindi tra un "database cloud" e un "database nativo cloud", ma solo tra i database che vengono eseguiti nel cloud e quelli che non lo sono. Altre definizioni fanno una distinzione. In queste, i database cloud sono i tipi di database che possono, ma non solo, essere gestiti su un servizio cloud, mentre i database cloud native sono quelli specificamente progettati e costruiti per sfruttare le capacità e i vantaggi delle architetture e delle tecnologie cloud native. Entrambi possono e vengono utilizzati in un cloud, ma i secondi sono stati concepiti fin dall'inizio per operare solo in un cloud.
I database cloud-nativi sono più strettamente definiti come sviluppati utilizzando i principi cloud-nativi, che enfatizzano la containerizzazione, i microservizi, la scalabilità, la resilienza e l'agilità.
Il monitoraggio dei database cloud si concentra su entrambi i tipi di database cloud, nativi e non. Gli strumenti di monitoraggio dei database cloud funzionano in modo diverso a seconda del tipo di database da monitorare, in particolare distinguendo tra quello implementato da un team IT e quello fornito da un fornitore cloud come servizio gestito. Entrambi possono essere monitorati da questi strumenti, indipendentemente da come vogliamo definirli, database nativi del cloud o semplicemente "cloud". Il monitoraggio è tutt'altro che identico, ma in linea di massima le metriche da raccogliere sono le stesse.
Quali database cloud esistono?
Nell'informatica esistono diversi tipi di database e lo stesso vale per il cloud. Una spiegazione approfondita di ciascuno di essi esula ampiamente dallo scopo di questo articolo. È sufficiente fornire una breve definizione dei vari tipi, per capire meglio quali database vengono offerti dai fornitori di cloud e perché ce ne sono così tanti.
Il sistema di gestione dei database relazionali (RDMS) è stato il tipo dominante per oltre 4 decenni. Oracle, MySQL, Microsoft SQL Server, PostgreSQL, SQLite, MariaDB e molti altri rientrano in questa categoria e sono disponibili come database SQL nel cloud. I database basati su SQL non sono gli unici RDMS, SQL è semplicemente il linguaggio di interrogazione più utilizzato nei database relazionali.
Gli RDMS sono orientati alle tabelle, mentre una delle loro alternative, gli Object-oriented Database Management System (OODMS), si basa invece sugli oggetti, combinando i database con le funzionalità dei linguaggi di programmazione orientati agli oggetti. Oggi sono molto meno diffusi degli RDMS e non sono facilmente offerti dai fornitori di cloud.
Più popolari sono invece i database NoSQL, database non relazionali che utilizzano un modello diverso, non basato su tabelle come il resto della famiglia SQL. Ogni database NoSQL fa parte di una delle oltre una dozzina di sottocategorie, a seconda del modello di dati che segue. Tra i database cloud sono comuni quelli di tipo Key-Value (Couchbase, Redis, Memcached, Amazon DynamoDB, Azure Cosmos DB e altri), Wide Column Store (Cassandra, Google Cloud Datastore, Azure Cosmos DB, Amazon DynamoDB) e Graph (Apache Graph, Azure Cosmos DB, Oracle Property Graph, RedisGraph, SAP HANA). Come si può notare, un singolo database può supportare più di un modello di dati.
Questi modelli sono stati scelti dalle soluzioni di database cloud più diffuse, ovvero quelle di AWS, Azure e GCP. Questo elenco non è assolutamente esaustivo, in quanto esistono numerosi tipi e sottotipi di database, sia all'interno che all'esterno dei servizi cloud. Ai fini di questa guida, ci siamo limitati a discutere di tutti i database che non sono disponibili come database cloud da nessun altro fornitore al di fuori dei "tre grandi" cloud.
Database cloud di AWS
AWS implementa diversi tipi di database, che coprono un'ampia gamma di casi d'uso. Nel monitoraggio dei database AWS è quindi possibile monitorare una grande varietà di database diversi. In genere, però, questi database vengono eseguiti tramite Amazon RDS (Relational Database Service), che supporta i database MariaDB, Microsoft SQL Server, MySQL, PostgreSQL e Oracle. Amazon RDS genera metriche che possono essere raccolte da un dashboard AWS, come Cloudwatch, o da uno strumento esterno di monitoraggio dei database AWS. Per il monitoraggio delle prestazioni dei database, il dashboard AWS Database Performance Insight è il servizio integrato per controllare le metriche e impostare gli allarmi relativi alle prestazioni dei database.
Database AWS SQL
Per quanto riguarda i database gestiti, la principale offerta di Amazon è Aurora. Un motore di database completamente gestito, compatibile con MySQL e PostgreSQL. Quindi, come per Amazon RDS, sempre nell'ambito dei database relazionali. Essendo un database cloud-native, Amazon Aurora può essere monitorato principalmente, ma non esclusivamente, attraverso Amazon CloudWatch.
Il monitoraggio dei database AWS non comprende solo i database propriamente detti, ma anche i sistemi che raccolgono dati in generale. Ad esempio, Amazon Redshift è un data warehouse utilizzato dalle aziende per raccogliere dati da più fonti e analizzarli in un unico luogo. Redshift è un data warehouse in cluster completamente gestito e privo di server che, per quanto riguarda il monitoraggio dei database cloud, non è molto diverso dalle istanze di database vere e proprie. Poiché dietro le quinte Amazon Redshift è un cluster di database basati su SQL, le metriche per il monitoraggio sono le stesse di qualsiasi altro servizio di database relazionale in cloud.
Database AWS NoSQL
I database NoSQL hanno il loro posto nel cloud AWS con Amazon DynamoDB. Il monitoraggio di un'istanza DynamoDB si effettua semplicemente con Amazon CloudWatch o, come di consueto, con uno dei numerosi strumenti di monitoraggio dei database di terze parti esistenti.
Amazon ElastiCache per Memcached e Amazon MemoryDB per Redis sono servizi di data store in-memory, costruiti per ottenere le massime prestazioni. Compatibili con Redis o Memcached, altamente scalabili e affidabili, esistono per alimentare applicazioni in tempo reale che richiedono fino a centinaia di milioni di operazioni al secondo. Se la tua organizzazione ha esigenze simili, il monitoraggio di ElastiCache o di MemoryDB per Redis è di fondamentale importanza per garantire il raggiungimento e il mantenimento dei livelli prestazionali previsti per tutta la durata di vita delle tue applicazioni.
Amazon DocumentDB è un database più tipico, con compatibilità con MongoDB, database nativo del cloud per carichi di lavoro MongoDB. Simile è Amazon Keyspaces, un altro servizio di database completamente gestito, compatibile con il database Cassandra invece che con MongoDB. Entrambi sono serverless e facilmente monitorabili attraverso CloudWatch o i comuni strumenti di monitoraggio dei database cloud.
Un sottoinsieme dei database NoSQL è costituito dai database a grafico (GDB). Questi utilizzano strutture di dati simili a grafici, mettendo in relazione gli elementi di dati nello store con una collezione di nodi e bordi, con questi ultimi che rappresentano le relazioni tra i nodi. Amazon Neptune è un database di questo tipo, completamente gestito e cloud-native.
Amazon Timestream è un tipo di database cloud leggermente diverso. Si tratta di un database di serie temporali che memorizza e analizza punti di dati di serie temporali. Di solito si tratta di punti di telemetria o provenienti da dispositivi IoT (Internet of Things), che creano fino a trilioni di voci relative al tempo. Per tali livelli di granularità e scalabilità, è evidente che il monitoraggio di questo tipo di database è fondamentale.
Database cloud di Azure
Azure offre una serie di database cloud più mirati rispetto ad AWS. Un minor numero di scelte può significare una minore flessibilità, ma non necessariamente una minore potenza o efficienza. Le principali soluzioni di database cloud di Azure sono Azure SQL (anche come istanza gestita) e SQL Server per macchine virtuali. Entrambe si basano sul motore di database Microsoft SQL Server e prevedono una serie di livelli di utilizzo in termini di calcolo e servizio (come l'utilizzo di storage e I/O). Azure SQL può essere completamente gestito, utilizzato come singola istanza o in un pool elastico (una raccolta di singoli database che condividono un insieme di risorse).
Database SQL di Azure
Per quanto riguarda i database SQL nel cloud, Azure offre la possibilità di eseguire un'istanza completamente gestita di alcuni database che non sono Microsoft SQL Server. PostgreSQL, MySQL e MariaDB sono supportati da Azure, con particolare attenzione alla migrazione dei database on-premise al servizio cloud.
Un'adeguata gestione dei database cloud-nativi su Azure significa scegliere Azure Cosmos DB. Costruito per essere efficientemente scalabile, è un database distribuito completamente gestito e senza server che supporta PostgreSQL, MongoDB e Apache Cassandra. Non si tratta quindi di un semplice database SQL nel cloud. Se la tua organizzazione utilizza un database Oracle on-premises, Azure supporta la migrazione al servizio cloud.
Database non relazionali di Azure
Per quanto riguarda i servizi di archiviazione dati, Azure offre Azure Cache for Redis. Una soluzione completamente gestita, in-memory e altamente scalabile per alimentare applicazioni in tempo reale e carichi di lavoro pesanti.
Indipendentemente dal tipo di database scelto, il monitoraggio dei database Azure include tutti quelli elencati finora. Sono disponibili numerosi widget di monitoraggio (chiamati Insights) da inserire in Azure Monitor, lo strumento principale integrato nel cloud Azure per il monitoraggio dei database Azure e altro ancora. Può essere utilizzato come punto di partenza e per dare una rapida occhiata allo stato di salute dei database cloud, ma per un monitoraggio più potente e personalizzabile si consiglia di utilizzare uno dei tanti strumenti di monitoraggio dei database cloud, come Checkmk.
Database cloud di Google
Google Cloud Platform, il servizio cloud di Google, è dotato di una serie di database cloud che sono oggetto del monitoraggio dei database di Google Cloud. I database SQL cloud e i database non relazionali coesistono su GCP per offrire una serie abbastanza ampia di scelte di database.
Database SQL di Google
Google Cloud SQL è il database principale da scegliere se avete bisogno di un database SQL nel cloud. Offre database gestiti MySQL, PostgreSQL e SQL Server da ospitare sulla piattaforma Google Cloud. È il pane quotidiano dei database su GCP, la prima scelta ovvia per i carichi di lavoro moderati e per i casi d'uso più comuni.
Se è necessario qualcosa di più, Google offre AlloyDB. Si tratta di un database completamente gestito, compatibile con PostgreSQL per i carichi di lavoro più impegnativi dei database aziendali. È stato appositamente progettato per offrire prestazioni molto più elevate rispetto a un tipico database PostgreSQL, fino a 4 volte più veloce, come sostiene Google.
Una scelta ibrida alternativa è Cloud Spanner. Si tratta di un database distribuito cloud-native che offre elevata scalabilità, sharding automatico e disponibilità estrema. Cloud Spanner cerca di combinare i vantaggi delle strutture di database relazionali con la scala orizzontale non relazionale. È un tipo di database altamente flessibile, dotato di un'interfaccia PostgreSQL compatibile. Solitamente scelto per operazioni sensibili alle prestazioni, come i registri finanziari globali, il gioco d'azzardo e le soluzioni di pagamento, Cloud Spanner è una scelta particolare per un database cloud.
Su GCP è anche possibile, più semplicemente, lift & shift un database Oracle da una sede locale al cloud con una soluzione ad hoc chiamata Oracle on Bare Metal. Può replicare il tuo set up locale di più tipi di database Oracle, fornendo hardware specializzato per sostenere i carichi di lavoro necessari con bassa latenza.
Pratiche chiave per il monitoraggio dei database cloud
Lasciando il regno dei database relazionali, il database cloud NoSQL di base su GCP è Firestore. Un tempo chiamato Datastore, è un database cloud nativo basato su documenti che rappresenta una scelta universale per carichi di lavoro moderati. Completamente gestito, scalabile e senza server, Firestore è generalmente adatto a qualsiasi attività, come database cloud non specializzato. Se si desidera una maggiore potenza, Google Cloud Bigtable è un database simile, ma garantisce una latenza inferiore, una scalabilità illimitata e una disponibilità molto più elevata. È compatibile con Apache HBase, un database non relazionale open source, ed è facile passare da esso.
Parte del monitoraggio dei database di Google Cloud non sono solo i tipici database, ma anche raccolte di dati simili. Google BigQuery appartiene a una di queste, un data warehouse. BigQuery è come AWS Redshift, orientato a carichi di lavoro di elaborazione in tempo reale, analisi dei dati e attività di apprendimento automatico.
I servizi di caching in-memory non potevano mancare su GCP e Memorystore per Redis e Memcached è supportato su Google Cloud. Caratterizzato da bassa latenza e alte prestazioni, Memorystore è presente su tutti i 3 grandi cloud provider ed è utile per alimentare applicazioni che richiedono milioni di piccole operazioni al minuto, come news feed, chat, social, app web e mobile e altro ancora.
Quali metriche sono importanti nel monitoraggio dei database cloud?
Il monitoraggio dei database cloud comprende diversi tipi di database, che abbracciano vari servizi cloud, come appena visto. Questi esportano il loro set di metriche, che spesso si sovrappongono ma non completamente. Pertanto, quando si esegue il monitoraggio di un database cloud, esistono lievi differenze a seconda del tipo esatto di database che si sta monitorando. Le differenze aumentano quando si monitorano database distribuiti su cloud diversi. Il tipo e il nome di una metrica possono essere molto diversi da quelli di un altro cloud, riferiti allo stesso tipo di database.
Come minimo, è necessario controllare alcune metriche per garantire l'efficienza, la salute e possibilmente la sicurezza di ogni database del cloud. L'utilizzo della CPU e della memoria, il numero di connessioni al database, il numero di richieste di I/O in sospeso in attesa di accedere al disco e il traffico in entrata e in uscita dall'istanza del database sono fondamentali per il monitoraggio delle prestazioni del database. Questi dati non dovrebbero mai essere ignorati. Anche le operazioni di lettura su disco, lo storage locale utilizzato, la latenza e il throughput di lettura e il numero di operazioni di scrittura al secondo sono estremamente utili e disponibili per il monitoraggio in tutti i database cloud.
Sia che si debbano monitorare i database di Google Cloud, sia che si debbano monitorare i database di Azure, sia che ti affidi a un ambiente AWS per i tuoi database, le metriche chiave da monitorare sono in fondo quelle appena citate.
Cosa monitorare nei database cloud?
Il monitoraggio dei database cloud implica la raccolta di più controlli e metriche per essere sufficientemente completo. Si tratta di un monitoraggio delle prestazioni dei database cloud, per avere database al massimo della loro efficienza, e di un monitoraggio della sicurezza dei database cloud, per garantire che non avvengano accessi non autorizzati. Per questo motivo, quando si monitora un database cloud è necessario prendere in considerazione molte metriche e dati.
La salute del database è il primo passo. Controllare che i database siano attivi e raggiungibili non deve essere considerato un'ovvietà. Qualsiasi strumento di monitoraggio dei database può avvisare quando un database è inattivo o diventa inaccessibile. È poi importante monitorare le dimensioni di ciascun database, per prevedere i requisiti di archiviazione e i potenziali problemi di scalabilità. I backup devono essere eseguiti regolarmente e le loro operazioni devono essere attentamente monitorate. Questo include il ripristino.
Monitoraggio delle prestazioni dei database
Il monitoraggio delle prestazioni dei database è il fulcro dell'intero monitoraggio. Gli amministratori del cloud farebbero bene a tenere costantemente sotto controllo metriche come l'utilizzo della CPU e della memoria, la latenza, il throughput delle query e l'I/O del disco, come minimo. Se tutti questi dati sono normali e la connettività è verde, si può presumere che non ci siano problemi immediati con i database. Può valere la pena di esaminare più in dettaglio anche le prestazioni delle query. Le query che richiedono molto tempo per essere eseguite, l'utilizzo degli indici e, nel caso dei database SQL cloud, il piano di esecuzione delle query sono informazioni degne di essere monitorate per mantenere alta l'efficienza dei database. Monitorare le tendenze di tutte queste metriche, se possibile, per identificare le tendenze di utilizzo e pianificare il ridimensionamento delle risorse del database in base alle necessità.
La maggior parte delle soluzioni di database cloud esporta i propri log per il monitoraggio. Tenete d'occhio i registri degli errori di ogni database cloud per individuare eventuali eccezioni. Un buon sistema di allerta può aiutare a informare immediatamente gli amministratori del cloud di qualsiasi nuovo problema.
Monitoraggio della sicurezza dei database
Infine, la sicurezza dei database cloud deve essere garantita da un accurato monitoraggio dei database cloud. Le attività sospette o i tentativi di accesso non autorizzati devono essere monitorati attentamente per proteggere i database dalle violazioni della sicurezza. I dati a riposo e in transito dovrebbero idealmente essere crittografati, per soddisfare i requisiti standard di sicurezza e conformità. Esaminare i registri di audit per tracciare l'attività di ogni utente del database, in modo da rilevare potenziali violazioni della sicurezza. Questi sono i controlli di base che riguardano la sicurezza dei database cloud, ma non sono affatto gli unici.
Strumenti di monitoraggio dei database cloud disponibili
Tutti e tre i grandi fornitori di cloud offrono strumenti per monitorare i loro ambienti, compresi i database. In tutti questi strumenti è possibile includere alcune dashboard in uno strumento principale di monitoraggio del cloud per raccogliere i dati provenienti dai database. Funzionano in modo simile l'uno all'altro, ma si differenziano chiaramente per il modo in cui vengono presentate le informazioni e per i tipi e i nomi delle metriche utilizzate.
Il principale strumento di monitoraggio dei database cloud offerto da AWS è CloudWatch. Per il servizio AWS RDS esiste uno strumento specifico chiamato Amazon RDS Performance Insight. Azure ha uno strumento principale simile, Azure Monitor, che viene utilizzato per implementare tutti i tipi di monitoraggio sulla sua piattaforma cloud. Esistono estensioni specifiche per ogni tipo di database supportato da Azure. Per GCP, Google Cloud Monitoring integra le metriche provenienti da tutti i vari database presenti sulla piattaforma di Google.
Tutti questi strumenti sono direttamente disponibili una volta che si dispone di un account su uno di questi servizi cloud. Hanno un costo, in quanto il loro utilizzo richiede l'impiego di storage, rete e calcolo, che viene quindi addebitato. Pertanto, si tratta di strumenti di monitoraggio dei database cloud solo nominalmente gratuiti, in quanto, pur essendo liberi di essere utilizzati, consumano risorse che devono essere pagate.
Strumenti di monitoraggio dei database cloud di terze parti
La situazione è un po' diversa con le soluzioni di terze parti per il monitoraggio dei database cloud: nella maggior parte dei casi offrono il monitoraggio sia dei database on-premise che di quelli cloud, offrendo una soluzione più completa rispetto agli strumenti di AWS, Azure o GCP. Nella maggior parte dei casi questi strumenti sono nati per monitorare i database on-premises e successivamente hanno aggiunto il supporto per quelli cloud. Il supporto per il monitoraggio dei database in esecuzione su server locali è generalmente migliore rispetto agli strumenti dei grandi fornitori di cloud che sono molto più orientati al cloud.
Gli strumenti di terze parti possono risultare più economici, con livelli gratuiti più generosi. Questo dipende in larga misura da software a software e occorre prestare molta attenzione ai costi di tutte le soluzioni di monitoraggio dei database. Le alternative di terze parti sono spesso pagate dagli host o dai servizi da monitorare, piuttosto che dalla quantità effettiva di risorse utilizzate. Mentre il monitoraggio degli host può certamente rivelarsi costoso, i servizi possono essere meno onerosi. Checkmk segue il modello di monitoraggio dei servizi, con un generoso livello gratuito perfetto per i nuovi utenti, per imparare lo strumento e per aggiornare l'abbonamento solo una volta convinti della sua utilità.
Il monitoraggio dei database nel cloud è un'attività complessa che è solo parzialmente coperta dagli strumenti integrati dei fornitori di cloud. Questi sono sufficienti per i casi d'uso più tipici e quando sono necessarie poche personalizzazioni. Quando l'infrastruttura cloud cresce, o quando si solleva e si sposta un'infrastruttura on-premise piuttosto complicata, questi strumenti mostrano i loro limiti. Gli strumenti di monitoraggio dei database cloud esterni, come quelli offerti da Checkmk, possono andare ben oltre questi limiti e rappresentare una soluzione di monitoraggio completa, sia per le piccole imprese che per le aziende.
FAQ
La maggior parte delle soluzioni di cloud database prevede un livello di utilizzo gratuito che consente di effettuare test e operazioni di uso limitato. Sia AWS che Azure e GCP offrono tali livelli. Altri fornitori di database offrono database cloud gratuiti fino a determinati limiti di spazio di archiviazione, larghezza di banda utilizzata e numero di sessioni/utenti. Se è necessario un numero maggiore di dati, è necessario pagare un abbonamento o una licenza.
Un database cloud-native è un database progettato per sfruttare i vantaggi delle architetture cloud. I database cloud-native sono ottimizzati per utilizzare i principi cloud-native come la containerizzazione, i microservizi, la scalabilità, l'alta disponibilità e l'agilità.