Vai a

Confronto tra MySQL gestito autonomamente e Cloud SQL per MySQL

MySQL è uno dei database relazionali open source più popolari al mondo. Uno dei motivi della sua popolarità è la possibilità di ospitare e gestire il database in molti modi conformi ai requisiti del carico di lavoro di un utente. Un utente può scegliere di configurare il database in modo che sia autogestito on-premise, autogestito nelle macchine virtuali nel cloud o utilizzare l'offerta completamente gestita di un cloud provider. Questo articolo si concentra sull'opzione MySQL autogestita e sulla soluzione completamente gestita, Cloud SQL per MySQL, fornita da Google Cloud. Verranno trattati i vantaggi e gli svantaggi di ciascuna opzione.

MySQL autogestito

L'opzione MySQL autogestita significa che l'utente, nella maggior parte dei casi un amministratore di database, è responsabile della maggior parte delle attività relative alla configurazione, installazione, configurazione e manutenzione del database, al sistema operativo (OS), networking, archiviazione, istanza della macchina virtuale (VM) e all'hardware che ospita l'istanza e il server del database. Alcune di queste attività, come l'hardware, le istanze VM, l'archiviazione, il networking e le attività del sistema operativo, possono essere eseguite più facilmente sfruttando un fornitore di servizi cloud come Google Cloud. A prescindere dal fatto che un utente gestisca autonomamente un database on-premise o nel cloud, è responsabile di alcune importanti attività di gestione di database necessarie per un corretto funzionamento del sistema. Queste attività sono elencate di seguito.

  • Disponibilità: i componenti hardware e software non possono essere eseguiti. Tuttavia, la responsabilità di progettare il sistema in modo che sia tollerante rispetto agli errori hardware e software e garantisca la disponibilità continua del database, del server e dell'applicazione dipende dall'utente.  
  • Manutenzione dei database: nell'opzione MySQL autogestita, gli utenti devono mantenere aggiornati i vari livelli dello stack di applicazioni con le versioni più recenti del software e prendere decisioni in merito al supporto delle versioni di fine del ciclo di vita, non supportate o legacy dell'hardware, del sistema operativo e di altri software. Inoltre, gli utenti devono installare regolarmente software, sistema operativo e patch MySQL mantenendo il database operativo e senza interruzioni significative.
  • Scalabilità: poiché l'utilizzo delle applicazioni aumenta nel tempo, aumenta la necessità di migliorare le prestazioni del database. Allo stesso modo, per supportare un carico di lavoro o una base clienti di grandi dimensioni, è necessario fare lo scale up o lo scale out delle risorse hardware. Questa responsabilità ricade sull'utente nel caso dell'opzione MySQL autogestita. La scalabilità delle risorse hardware in un ambiente on-premise è un'attività complessa e molto dispendiosa in termini di tempo, che a volte comporta un tempo di inattività del sistema.
  • Sicurezza: negli ultimi tempi, la sicurezza è diventata l'aspetto più importante su più livelli del sistema di database, a partire dalla messa in sicurezza fisica dell'hardware fino alla configurazione di firewall di rete, alla protezione delle connessioni ai database e altro ancora. Si tratta di attività complesse che richiedono sforzi significativi e competenze specialistiche in caso di configurazione autogestita.
  • Monitoraggio: a parte l'installazione, l'impostazione e la configurazione di MySQL, gli utenti dovranno anche preoccuparsi di monitorare i vari componenti di tutti i livelli dello stack, come il monitoraggio a livello di hardware, sistema operativo, MySQL, e di adottare azioni correttive in caso di errori.

Il diagramma seguente mostra le responsabilità dell'utente quando opta per la configurazione autogestita. Anche se la gestione autonoma su Google Cloud riduce alcune attività relative a hardware, computing, networking e archiviazione, le responsabilità della gestione dei restanti livelli dello stack rimangono a carico dell'utente. L'amministratore del database e lo sviluppatore dell'applicazione devono comunque dedicare tempo, energia e risorse sufficienti alla gestione di MySQL.

Immagine che mostra tutte le responsabilità di un amministratore di database con hosting del database autogestito

Che cos'è Cloud SQL per MySQL?

Cloud SQL è un servizio di database completamente gestito che offre facilità d'uso per la configurazione, la manutenzione, la gestione e l'amministrazione dei database MySQL, PostgreSQL e SQL Server su Google Cloud. Cloud SQL gestisce tutti gli aspetti relativi a hardware, networking, sistema operativo, sicurezza, monitoraggio, manutenzione, disponibilità e scalabilità del database MySQL. Tutte queste responsabilità sono oscurate agli utenti, il che consente loro di concentrarsi sullo sviluppo delle applicazioni e a offrire valore ai propri clienti.

Il diagramma seguente è simile al diagramma qui sopra, che mostra le attività di gestione dei vari livelli del database MySQL, con l'unica differenza che tutte le attività gestire da Cloud SQL per conto dell'utente sono illustrate in blu.

Immagine per l'hosting di database completamente gestito

Oltre a gestire le numerose attività descritte sopra, Cloud SQL offre varie funzionalità e soluzioni non disponibili in modo nativo in un ambiente autogestito. Di seguito sono elencate alcune delle funzionalità principali offerte da Cloud SQL.

Affidabilità: il backup e il ripristino sono le attività più importanti nella gestione del database. Cloud SQL offre il backup automatico e i backup on demand, che possono essere utilizzati per ripristinare il database a un momento specifico in caso di danneggiamento, disastro o modifiche indesiderate ai dati. 

Disponibilità: Cloud SQL offre alta disponibilità creando istanze di più server che ospitano il database in più zone con la funzionalità di failover automatico per fornire un'alta la disponibilità in caso di errore di una VM o di un data center. Cloud SQL garantisce una disponibilità superiore al 99,95% in ogni parte del mondo.

Oltre alla funzionalità ad alta disponibilità, Cloud SQL offre anche un team SRE (Site Reliability Engineering) 24 ore su 24, 7 giorni su 7, responsabile di assicurare l'affidabilità delle istanze del database Cloud SQL per MySQL su Google Cloud.

Le repliche di lettura tra regioni sono un'altra funzionalità che può essere utilizzata come meccanismo di ripristino di emergenza in caso di errori. Consente a un utente di visualizzare rapidamente il database interessato in un altro sito (regione) con un impatto minimo sull'attività. 

Scalabilità: Cloud SQL offre la creazione di repliche di lettura MySQL, come istanze aggiuntive di sola lettura di MySQL nella stessa regione o in regioni remote per gestire le richieste delle repliche e dell'istanza principale, migliorando così le prestazioni di lettura. Le repliche di lettura possono essere utilizzate anche per la generazione di report e possono essere distrutte dopo il soddisfacimento delle esigenze aziendali.

Cloud SQL consente di scalare le risorse (CPU, memoria e archiviazione) e di fare lo scale down delle risorse sull'istanza MySQL con tempi di inattività minimi. Invece, nel caso di una configurazione autogestita, queste attività complicate richiedono sforzi, competenze e pianificazione significativi. 

Sicurezza: i server di database Cloud SQL per MySQL si trovano nei data center protetti di Google Cloud, garantendo il massimo livello di sicurezza. Inoltre, Google Cloud offre connettività privata con Virtual Private Cloud e accesso alla rete controllato dagli utenti con protezione firewall, che garantisce che i server di database degli utenti vadano oltre la portata dei soggetti malintenzionati.

Un altro aspetto della sicurezza è la conformità alle normative sulla sicurezza. Cloud SQL è conforme a numerosi regolamenti riconosciuti come SSAE 16, ISO 27001, PCI DSS e HIPAA. 

Cloud SQL offre la possibilità di gestire gli utenti e il loro accesso al database tramite l'integrazione IAM. Questa integrazione gestisce l'autorizzazione e l'autenticazione per gli utenti di Google Cloud e fornisce un accesso granulare a determinate risorse Google Cloud, impedendo l'accesso non autorizzato al database. Inoltre, Cloud SQL semplifica il controllo di identità e accessi fornendo ruoli predefiniti progettati per controllare l'accesso alle risorse di Cloud SQL

Un'altra funzionalità di sicurezza di Cloud SQL è la crittografia dei dati at-rest e in transito, garantendo che nessun utente non autorizzato possa accedere ai dati utente.

Cloud SQL offre una funzionalità di convalida delle password per gli utenti del database, che consente ai clienti di definire i criteri relativi alle password per la complessità, la lunghezza minima e l'intervallo di modifica delle password e per l'utilizzo del nome utente nella password a livello di istanza. I clienti possono anche definire i criteri per i giorni di scadenza della password, il numero di tentativi di accesso non riusciti e i requisiti di modifica della vecchia password a livello di singolo utente. Queste funzionalità di Cloud SQL forniscono best practice per la conformità dei requisiti di sicurezza e riducono il rischio di accesso non autorizzato ai dati critici.

Cloud SQL consente inoltre di controllare le azioni e le operazioni sul database MySQL utilizzando un plug-in per gli audit log. L'audit log fornisce insight sull'autore, il tipo e l'oggetto di un'azione e su quando è stata eseguita. Il controllo del database consente di monitorare azioni specifiche degli utenti nel database, come aggiornamenti delle tabelle, query di lettura, concessioni di privilegi utente e altro. 

Osservabilità: Cloud SQL offre varie soluzioni per il monitoraggio e un elenco sempre più aggiornato di metriche pronte all'uso, che forniscono insight sullo stato del database. Gli utenti possono utilizzare le metriche per creare avvisi per informare gli amministratori dello stato del database. 

Cloud SQL offre inoltre funzionalità come Query Insights e motori per suggerimenti, che consentono agli utenti di risolvere i problemi e identificare i colli di bottiglia nelle prestazioni di una query o di un carico di lavoro. È difficile replicare queste funzionalità in un ambiente MySQL autogestito.

Integrazione: Cloud SQL offre una facile connettività di rete e l'integrazione con altri servizi all'interno di Google Cloud, come Google Kubernetes Engine, Compute Engine e Cloud Run, che semplificano lo sviluppo di soluzioni perfettamente integrate. Cloud SQL offre anche l'integrazione nativa con BigQuery e Looker che possono essere utilizzati per l'elaborazione analitica dei dati disponibili in Cloud SQL.

Patching: come servizio gestito, Cloud SQL aggiorna automaticamente le istanze per garantire che l'hardware e il sistema operativo sottostanti siano affidabili, performanti, sicuri e aggiornati. La maggior parte di questi aggiornamenti viene eseguita mentre l'istanza Cloud SQL è in esecuzione. Tuttavia, alcuni aggiornamenti di sistema potrebbero richiedere una breve interruzione del servizio, per cui gli utenti possono definire dei periodi di manutenzione per l'attività di upgrade. 

Upgrade delle versioni: Cloud SQL fornisce anche un processo automatizzato di upgrade della versione del database (MySQL). Gli utenti possono anche eseguire l'upgrade della versione principale effettuando la migrazione dei dati a un'istanza di versione superiore.  

Come creare un'istanza di un database MySQL in Cloud SQL per MySQL?

Vantaggi e svantaggi di MySQL autogestito

Vantaggi

  1. Possibilità di utilizzare qualsiasi fork MySQL dell'ecosistema MySQL, come MariaDB o Percona, per configurare MySQL.
  2. Flessibilità nella configurazione e nell'impostazione di MySQL, in quanto gli utenti hanno il controllo completo dell'istanza, delle risorse e del sistema operativo. Inoltre, gli utenti possono utilizzare il sistema operativo che preferiscono, configurarlo come vogliono e configurare MySQL secondo le loro esigenze, senza alcuna limitazione.
  3. Gli utenti non sono vincolati dalle limitazioni di Cloud SQL, come le dimensioni massime di archiviazione di 64 TB. Gli utenti possono superare il limite di 64 TB di spazio di archiviazione e utilizzare un'infrastruttura di computing molto più elevata per ospitare MySQL.
  4. Gli utenti hanno accesso completo all'istanza MySQL, inclusi i privilegi SUPER e l'accesso completo al sistema operativo, comprese le autorizzazioni per simulare le identità.
  5. Gli utenti hanno la possibilità di configurare topologie di alta disponibilità e replica in base alle proprie esigenze, anche se non sono supportate in Cloud SQL.  

Svantaggi

  1. Gli utenti sono responsabili della gestione di complesse operazioni hardware, di rete e dei data center in un ambiente on-premise. Anche quando gestiscono autonomamente MySQL nel cloud, gli utenti devono affrontare la complessità dell'impostazione, della configurazione di dischi permanenti e di istanze e occuparsi della progettazione e della gestione dei cluster ad alta disponibilità, nonché della sicurezza, del ripristino di emergenza e della scalabilità.
  2. Mantenere aggiornate le versioni dei database e dei sistemi operativi e i sistemi hardware con le patch più recenti per evitare bug e vulnerabilità della sicurezza può comportare costi, risorse, complessità e tempi di inattività significativi.
  3. Oltre alla configurazione del database, gli utenti devono configurare e gestire la sicurezza a tutti i livelli, non solo per il database stesso. Ad esempio, devono assicurare la crittografia delle connessioni in transito tramite SSL e mantenere aggiornati i certificati, criptare i dati at-rest e gestire l'accesso ai database per gli utenti e gli account di servizio.
  4. Per assicurare la disponibilità dell'istanza, è necessario monitorare vari livelli del sistema del database per verificare che non ci siano errori. Gli utenti devono spendere risorse aggiuntive per l'impostazione e la configurazione degli strumenti di monitoraggio. È necessario definire gli avvisi per inviare una notifica in caso di errori e adottare misure correttive per correggere eventuali errori.
  5. Gli utenti hanno bisogno di dedicare molto tempo, risorse e impegno alla configurazione e alla gestione dei database invece di concentrarsi sullo sviluppo delle applicazioni.

Vantaggi e svantaggi di Cloud SQL per MySQL

Vantaggi

  1. Cloud SQL per MySQL offre un'interfaccia facile da usare per la creazione, la gestione, l'accesso e il monitoraggio del database MySQL per sviluppatori e tecnici, anche per coloro che non hanno alcuna esperienza di database. Per iniziare rapidamente, Cloud SQL offre anche un modo semplice per eseguire la migrazione dei database MySQL esistenti da sistemi on-premise o da altri cloud a Cloud SQL per MySQL di Google Cloud.
  2. Cloud SQL per MySQL offre un ricco insieme di funzionalità necessarie per l'hosting di database MySQL per varie applicazioni, dai database per i micrositi alle grosse applicazioni aziendali di grande criticità, alle applicazioni di gioco e ai dati per casi d'uso di analisi. Utilizzando queste funzionalità avanzate, gli utenti possono creare applicazioni a elevata affidabilità e scalabilità.
  3. Cloud SQL condivide la responsabilità della sicurezza con gli utenti. Cloud SQL garantisce la sicurezza ai livelli inferiori di infrastruttura e rete consentendo agli utenti di concentrarsi sulla configurazione e sullo sviluppo di applicazioni di livello più elevato. 
  4. Cloud SQL offre varie funzionalità di sicurezza, come plug-in di convalida delle password e creazione di audit log che non sono facilmente disponibili nelle versioni community e sono difficili da implementare in ambienti autogestiti. Cloud SQL semplifica queste funzionalità e le rende immediatamente disponibili per gli utenti.
  5. Cloud SQL offre vari modi per interagire con il database. Gli utenti possono utilizzare GUI, interfaccia a riga di comando e API per personalizzare le operazioni in base alle proprie esigenze con il minimo sforzo.
  6. Cloud SQL offre una facile integrazione con altre soluzioni e prodotti come BigQuery, consentendo lo sviluppo di soluzioni analitiche con il minimo sforzo.
  7. Cloud SQL si assume la responsabilità dell'affidabilità dell'istanza di database con la sua infrastruttura ad alta disponibilità, le soluzioni di riparazione automatica e, soprattutto, i team SRE disponibili 24 ore su 24, 7 giorni su 7.
  8. Gli utenti dedicano meno tempo e fatica alle attività operative del database e possono invece concentrarsi sullo sviluppo delle applicazioni e quindi aumentare la loro capacità di fornire soluzioni in grado di soddisfare le loro esigenze aziendali in modo più efficiente.
  9. Oltre ad aiutarti a gestire il database, Cloud SQL offre anche suggerimenti e consigli per migliorare le prestazioni dei database utilizzando funzionalità quali Query Insights e motori per suggerimenti. Queste funzionalità rendono l'hosting e la gestione di database su cloud semplici, sicuri ed economici.
  10. Cloud SQL offre servizi di assistenza clienti per semplificare e ottimizzare il supporto necessario per eventuali problemi o richieste relativi ai database.

Svantaggi

  1. I fork MySQL dell'ecosistema MySQL, come MariaDB e Percona, non sono supportati in Cloud SQL. 
  2. Alcune funzionalità di MySQL non sono supportate. Scopri di più sulle funzionalità non supportate.
  3. In Cloud SQL sono supportati tipi di macchina con un massimo di 624 GB di RAM e 96 CPU. È supportato uno spazio di archiviazione fino a 64 TB. Se il database richiede una capacità maggiore, oggi l'opzione autogestita è l'unica disponibile.

Google Cloud offre un database MySQL gestito che è stato creato per soddisfare le tue esigenze aziendali, dal ritiro del data center on-premise all'esecuzione di applicazioni SaaS, fino alla migrazione dei sistemi aziendali principali.