Configurazione, backup e failover del database - Hosting di applicazioni Web in AWS Cloud

Configurazione, backup e failover del database

Molte applicazioni Web contengono una forma di persistenza, di solito sotto forma di database relazionale o non relazionale. AWS offre servizi di database relazionali e non relazionali. In alternativa, è possibile distribuire il proprio software di database in un'istanza EC2. La tabella seguente riepiloga queste opzioni, che vengono discusse più dettagliatamente in questa sezione.

Tabella 1. Soluzioni di database relazionali e non relazionali

Soluzioni di database relazionali Soluzioni NoSQL
Servizio di database gestito Amazon RDS for MySQL, Oracle, SQL Server, MariaDB, PostgreSQL, Amazon Aurora Amazon DynamoDB, Amazon Keyspaces, Amazon Neptune, Amazon QLDB, Amazon Timestream
Autogestito Hosting di un sistema di gestione di database relazionale (DBMS) in un'istanza Amazon EC2 Hosting di una soluzione di database non relazionale in un'istanza EC2

Amazon RDS

Amazon Relational Database Service (Amazon RDS) permette di accedere alle funzionalità di un familiare motore di database MySQL, PostgreSQL, Oracle e Microsoft SQL Server. Con Amazon RDS puoi usare il codice, le applicazioni e gli strumenti che già conosci. Amazon RDS applica automaticamente patch al software di database ed esegue i backup del database, archiviandoli per un periodo di conservazione definito dall'utente. Supporta anche il ripristino point-in-time (PITR). Hai così la flessibilità per dimensionare le risorse di calcolo o la capacità di archiviazione per l'istanza del database relazionale attraverso una singola chiamata API.

Le implementazioni Multi-AZ di Amazon RDS aumentano la disponibilità del database e proteggono il database da interruzioni non pianificate. Le repliche di lettura di Amazon RDS forniscono repliche di sola lettura del database, così da poter aumentare orizzontalmente la capacità rispetto alla distribuzione di un singolo database per i carichi di lavoro di database gravosi in lettura. Come per tutti i servizi AWS, non sono richiesti investimenti iniziali e si paga solo per le risorse usate.

Hosting di un sistema di gestione di database relazionale (RDBMS) in un'istanza Amazon EC2

Oltre all'offerta gestita di Amazon RDS, è possibile installare il sistema RDBMS desiderato (ad esempio MySQL, Oracle, SQL Server o DB2) in un'istanza EC2 e gestirlo personalmente. I clienti AWS che ospitano un database in Amazon EC2 possono usare diversi modelli di replica e primario/di standby, tra cui il mirroring per copie di sola lettura e il log shipping per slave passivi sempre disponibili.

Quando gestisci il software di database direttamente in Amazon EC2, devi considerare anche la disponibilità di risorse di archiviazione persistente e con tolleranza ai guasti. A tale scopo, è consigliabile che i database in esecuzione in Amazon EC2 usino volumi Amazon Elastic Block Store (Amazon EBS), analoghi a dispositivi NAS (Network-Attached Storage).

Per le istanze EC2 che eseguono un database, è consigliabile inserire tutti i dati e i registri del database nei volumi EBS. Questi rimarranno disponibili anche in caso di errore dell'host del database. Questa configurazione permette un semplice scenario di failover, in cui è possibile avviare una nuova istanza EC2 in caso di errore di un host e i volumi EBS esistenti possono essere collegati alla nuova istanza. Il database può quindi riprendere da dove si è interrotto.

I volumi EBS forniscono automaticamente ridondanza all'interno della zona di disponibilità. Se le prestazioni di un singolo volume EBS non sono sufficienti per le esigenze del database, i volumi possono essere sottoposti a striping per aumentare le prestazioni in termini di operazioni di input/output al secondo (IOPS) per il database.

Per carichi di lavoro impegnativi è anche possibile usare volumi EBS IOPS con provisioning, specificando il livello di IOPS richiesto. Se usi Amazon RDS, il servizio gestisce le risorse di archiviazione permettendoti così di concentrarti sulla gestione dei dati.

Database non relazionali

Oltre al supporto per i database relazionali, AWS offre anche diversi database non relazionali gestiti:

  • Amazon DynamoDB è un servizio di database NoSQL completamente gestito che combina prestazioni elevate e prevedibili con una scalabilità ottimale. Usando la AWS Management Console o l'API DynamoDB, è possibile dimensionare la capacità senza tempo di inattività né riduzione delle prestazioni. Poiché DynamoDB si occupa delle attività amministrative connesse alla gestione e al dimensionamento dei database distribuiti in AWS, non dovrai occuparti di provisioning dell'hardware, installazione e configurazione, replica, applicazione di patch software o dimensionamento dei cluster.

  • Amazon DocumentDB (con compatibilità con MongoDB) è un servizio di database creato appositamente per la gestione di dati JSON su larga scala, completamente gestito, eseguito in AWS e pronto per le aziende con elevata durabilità.

  • Amazon Keyspaces (per Apache Cassandra) è un servizio di database compatibile con Apache Cassandra, gestito, scalabile e a disponibilità elevata. Con Amazon Keyspaces è possibile eseguire i carichi di lavoro Cassandra in AWS usando lo stesso codice applicativo e gli stessi strumenti di sviluppo Cassandra già in uso.

  • Amazon Neptune è un servizio di database a grafo rapido, affidabile e completamente gestito che semplifica la costruzione e l'esecuzione di applicazioni che funzionano con set di dati altamente connessi. Il centro nevralgico di Amazon Neptune è un motore di database a grafo dedicato ad alte prestazioni, ottimizzato per archiviare miliardi di relazioni ed eseguire query sul grafo con una latenza di millisecondi.

  • Amazon Quantum Ledger Database (Amazon QLDB) (QLDB) è un database di libro mastro completamente gestito che fornisce un registro delle transazioni trasparente, immutabile e verificabile crittograficamente di proprietà di un'autorità attendibile centrale. QLDB permette di monitorare ogni cambiamento dei dati di un'applicazione e conserva una cronologia completa e verificabile delle modifiche nel corso del tempo.

  • Amazon Timestream è un servizio di database di serie temporali rapido, scalabile e serverless pensato per applicazioni IoT e operative. Questo servizio semplifica l'archiviazione e l'analisi di trilioni di eventi al giorno fino a 1.000 volte più rapidamente e a un decimo del costo rispetto ai database relazionali.

È inoltre possibile usare Amazon EC2 per ospitare altre tecnologie di database non relazionali.