Amazon RDS gestire un database relazionale in cloud computing
da Davide Riboldi · pubblicato il 8 luglio, 2014 · modificato il 20 luglio, 2016

Amazon Relational Database Service (Amazon RDS) è un servizio web che semplifica l’implementazione, la gestione e la scalabilità di un database relazionale all’interno del cloud computing che riguarda gli Amazon Web Services. Molte applicazioni web usano un database che risiede nella stessa macchina dell’applicazione, questo per un’ambiente non scalabile e che necessita di potenza modesta può andare bene, ma se le condizioni dovessero cambiare, bisogna utilizzare un database esterno che come vedremo rende l’ambiente più scalabile e più semplice dal punto di vista sistemistico.

Alcuni vantaggi

Questo servizio si fa carico di molti aspetti legati alla gestione e alla manutenzione dei database relazionali, operazioni che a volte possono risultare difficoltose. Da un punto di vista sistemistico viene semplificata tutta la parte di configurazione e annullata tutta la complessità che riguarda l’installazione del software di database, il quale può avere diverse caratteristiche se utilizzato in sistemi operativi differenti. Tramite Amazon RDS ci troviamo tutto pronto all’uso e non ci dobbiamo preoccupare quasi di niente. Nella documentazione ufficiale troviamo elencati i seguenti vantaggi:

  • Quando si acquista un server bisogna tenere in considerazione la quantità di CPU, la memoria, lo storage e il IOPS. Con Amazon RDS tutto ciò che riguarda la parte del database può essere gestito separatamente ed è possibile scalare le risorse in modo del tutto indipendente. Se ad esempio si necessita di CPU, di IOPS o più spazio disco è sufficiente allocare le risorse di cui si necessita solo nel servizio RDS.
  • Amazon RDS gestisce i salvataggi, le patch software, la rilevazione automatica di malfunzionamenti e il recovery. Tutte operazioni che eseguite in ambiente privato richiedono complesse configurazioni e l’installazione di software aggiuntivi.
  • Tramite questo servizio è possibile avere backup automatici che vengono eseguiti in base alle proprie necessità, è anche possibile creare degli snapshot che permettono un’operazione di ripristino molto veloce e affidabile.
  • È possibile ottenere un’elevata disponibilità utilizzando un’istanza primaria e una secondaria sincrona, la quale è possibile eseguire solo quando si verificano alcuni problemi. Possono essere usate anche repliche di solo lettura per le performance.
  • È possibile utilizzare diversi database SQL e scegliere quelli con i quali si ha più familiarità: MySQL, PostgreSQL, Oracle e Microsoft SQL server.
  • Oltre alla sicurezza del pacchetto database, è possibile controllare chi può accedere ai database RDS utilizzando AWS IAM per definire utenti e permessi. È inoltre possibile proteggere i nostri database mettendoli in un cloud privato virtuale.

Uno dei pochi svantaggi di un database esterno è la sua latenza, infatti a differenza di un database locale bisogna aggiungere al tempo di risposta anche la trasmissione di rete, però in realtà questo apparente svantaggio in un’ambiente complesso si trasforma in un grande vantaggio che migliora in maniera significativa anche le perfomance.

Istanze DB (database)

La struttura di base di Amazon RDS è chiamata istanza DB che consiste in un’ambiente isolato di database nel cloud. Una istanza di database può contenere più database creati dall’utente, ed è possibile accedervi utilizzando gli stessi strumenti e le applicazioni che si utilizzano con un’istanza di database stand-alone. È possibile creare e/o modificare un’istanza di database tramite una riga di comando (Amazon CLI), utilizzando le API proprie di Amazon RDS o la classica interfaccia su AWS Management console.

Ogni istanza DB gestisce un motore diverso di database, attualmente sono supportati MySQL, PostgreSQL, Oracle e Microsoft SQL Server. Ogni motore di database supporta le proprie caratteristiche ed ogni versione può includere particolari specifici. Inoltre, ogni motore di database ha una serie di parametri chiamati (DB parameters group) che controllano il comportamento del database che si deve gestire.

Amazon RDS

La capacità di memoria e di calcolo di un’istanza è determinata dalla sua instance class. È possibile selezionare la classe che meglio soddisfa le proprie esigenze, se queste dovessero cambiare nel tempo, è possibile modificare le istanze senza intervenire nella configurazione delle proprie applicazioni. Ovviamente le classi disponibili hanno dei prezzi differenti che potete consultare nella sezione dei costi di Amazon RDS.

Per ogni istanza DB, è possibile selezionare da 5 GB a 3 TB di capacità associata. Ogni instance class ha requisiti minimi e massimi di storage per le istanze DB che vengono create. È importante avere sufficiente storage di modo che i database abbiano spazio per crescere e che le funzioni del motore abbiano spazio per i contenuti e i log. Lo storage di un’istanza è disponibile in due tipologie: standard e IOPS. Lo storage standard viene allocato su volumi Amazon EBS e connessi all’istanza DB, mentre IOPS utilizza volumi ottimizzati e uno stack di configurazione che fornisce capacità aggiuntive.

È possibile eseguire un’istanza DB in un cloud privato virtuale utilizzando il servizio Virtual Private Cloud (VPC) di Amazon. Quando si utilizza un cloud privato virtuale, si ha il controllo sul proprio ambiente di rete virtuale: è possibile selezionare il proprio intervallo di indirizzi IP, creare subnet e configurare il routing e le access control list. Le funzionalità di base di Amazon RDS sono le stesse sia in un’ambiente VPC che no. Non c’è nessun costo aggiuntivo per eseguire l’istanza in ambiente VPC.

Regioni geografiche

Come tutti i servizi di Amazon AWS è possibile scegliere la regione geografica su cui devono essere attivi i nostri servizi, quindi anche per Amazon RDS e le istanze DB che dovremmo avviare sarà possibile scegliere le regioni e le zone di disponibilità. Su questo argomento abbiamo dedicato un’articolo specifico chiamato “Infrastruttura AWS” che vi consiglio di leggere per gli eventuali approfondimenti.

In ogni caso è possibile dire che ogni regione geografica è suddivisa in più zone che vengono chiamate: zone di disponibilità. Ogni zona è stata progettata per lavorare in piena autonomia e in maniera indipendente anche nel caso in cui altre zone subiscano un guasto. Le zone di disponibilità all’interno di una singola regione comunicano tra di loro con una rete a bassa latenza per permettere soluzioni avanzate di disponibilità.

È possibile eseguire più istanze di database in diverse zone di disponibilità utilizzando l’opzione chiamata Multi-AZ. Quando si utilizza questa opzione, Amazon RDS crea e mantiene una replica sincrona in stand-by di un’istanza di database in una differente zona di disponibilità. L’istanza di database primaria viene replicata in modo sincrono attraverso le zone di disponibilità legate alla regione selezionata in modo da fornire una ridondanza dei dati, un supporto al failover, eliminare i blocchi di I/O e ridurre al minimo i picchi di latenza durante le operazioni di backup del database.

Security Group

Un security group controlla l’accesso alle istanze di database permettendo l’accesso ad intervalli di indirizzi IP o ad istanze EC2 specifiche. Amazon RDS utilizza tre tipi di security groups: DB, VPC e EC2. In altre parole il primo controlla l’accesso alle istanze DB che non sono in una VPC, il secondo controlla gli accessi alle istanze DB che sono all’interno di una VPC e il terzo controlla l’accesso ad un’istanza EC2.

DB Parameter Groups

È possibile gestire la configurazione di un DB engine utilizzando il DB Parameter Group che contiene i parametri di configurazione di un motore di database che possono essere applicati ad una o più istanze dello stesso tipo. Se nel momento stesso della creazione di un’istanza DB non si specifica un gruppo di parametri, Amazon RDS applicherà un DB Parameter Group di default. Il gruppo di default contiene le impostazioni predefinite per il motore di database selezionato e le “classi istanza” associate alle istanze DB.

Amazon RDS

In questa schermata vi riporto i parametri legati ad una istanza MySQL e come potete vedere è come gestire un file my.cfg in configurazione standard, l’unica diversità è che non tutti i parametri sono modificabili, infatti sono bloccati per far funzionare il nostro database su una istanza virtuale che girerà in ambiente AWS.

Calcolo dei costi

Quando si utilizza Amazon RDS si paga solo per quello che si utilizza e non ci sono tariffe minime di configurazione o attivazione, praticamente quello che abbiamo visto per tutti gli altri servizi. I costi vengono fatturati in base ai seguenti criteri:

Instance class: il costo si basa sulla classe dell’istanza che verrà utilizzata (es. micro, small, large, xlarge) su standard, memory optimized e micro/small instances.

Running time: i costi vengono addebitati per instance-hour, che equivale ad una singola istanza in esecuzione per un’ora. Ad esempio, sia un’unica istanza in esecuzione per due ore, che due istanze in esecuzione per un’ora consumano due instance-hour.

Storage size: lo spazio disco che viene assegnato all’istanza di database viene fatturato per GB al mese. Se si aumenta lo spazio disco nel mese la fattura sarà proporzionata.

I/O requests per month: il numero totale di richieste di storage I/O eseguite in un ciclo di fatturazione. Lo stesso calcolo che viene fatto in ambiente Amazon EBS.

Backup storage: è lo spazio di archiviazione che viene associato ai backup dei database e ad ogni snapshot attiva che viene eseguita. Aumentando il periodo di conservazione dei backup o eseguendo più snapshots aggiuntivi dei database aumenta lo spazio di archiviazione richiesto. Amazon RDS fornisce storage di backup fino al 100% dello spazio assegnato per il provisioning del database senza alcun costo aggiuntivo.

Ad esempio, se si hanno 10GB di storage assegnati per il database, Amazon RDS fornirà fino a 10GB al mese di storage backup senza alcun costo aggiuntivo. La maggior parte dei database richiedono meno storage per il backup rispetto al proprio set primario di dati, quindi se non si tengono più backup, non si deve pagare nulla per l’archiviazione del backup. Lo storage di backup è gratuito solo per le istanze DB attive.

Data transfer: il trasferimento dei dati in ingresso e in uscita dalla propria istanza di database. Su questo costo leggete bene la documentazione, in quanto molto traffico in base alle configurazioni è gratuito, ad esempio il trasferimento tra Amazon RDS e una istanza EC2 non viene addebitato come costo del servizio.

Oltre al normale tariffario di Amazon RDS è possibile acquistare istanze di DB riservate, che consentono di pagare una cifra una tantum per prenotare una istanza per uno o tre anni a delle tariffe molto più vantaggiose. Stessa opzione presente in Amazon EC2.

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services.  Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

condividi