RDS è il servizio di database relazionali di AWS. WordPress utilizza MySQL come supporto per la base di dati ed Amazon ci viene in aiuto con un servizio completamente "hosted" consentendoci così di concentrarci sulla nostra applicazione. Tramite la console non dobbiamo fare altro che configurare un nuovo MySQL server.
Prima di tutto configuriamo l'instanza master, scegliendo il taglio ed altre caratteristiche di base: il nome utente per la connessione, la dimensione del disco etc.
Grazie a questo pannello possiamo indicare se ci interessa avviare un'istanza "Multi A-Z". Questa opzione di AWS ci permette di poter usufruire di due server master ridondati. Noi abbiamo accesso ad uno solo di questi ed in caso di disservizio, in modo completamente trasparente. Amazon eseguirà un fallback su questa istanza "dormiente", così da garantire l'alta disponibilità.
Dobbiamo sempre ricordare che nei sistemi Master/Slave quando il master non è disponibile si deve fare l'elezione e la riconfigurazione degli attori in gioco per ristabilire l'ordine delle cose.
Vediamo la screen-shot di questo pannello di configurazione:
Una volta configurata quest'istanza passiamo ad un tuning maggiore facendo click su "Continue" così da scoprire un nuovo pannello:
In questa sezione creiamo un nuovo DB, in questo esempio "wordpress
", da riempire con i nostri dati. Configuriamo la porta per le connessioni (3306
è di default) e la availability zone
, ovvero la regione su cui vogliamo operare. Option Group
e Parameter Group
saranno oggetto di un dettaglio maggiore in seguito.
I DB Security Group
sono le regole di "firewall" che vogliamo applicare. Meglio non utilizzare quella di default ma creare un nuovo set, sempre tramite la console, così da poter realizzare una configurazione dedicata.
Continuiamo la nostra navigazione, sempre tramite il tasto "Continue":
Nell'ultima configurazione necessaria ci occupiamo dei backup, ma non solo. Infatti per poter creare "slaves" abbiamo bisogno di attivare il backup automatico in quanto sono utilizzate queste informazioni per la creazione delle repliche. Non dobbiamo fare altro che attivarli e proseguire per vedere un riassunto della configurazione. Una volta accettato il preset vedremo al nostra istanza master avviarsi.
Parameters, Options e Security groups
Prima abbiamo tralasciato la gestione dei parameteri e delle opzioni. I parametri sono essenzialmente le configurazioni che di solo facciamo all'interno del file "my.cnf". Grazie ad AWS adesso possiamo gestire diversi possibili tuning ed associarli alle nostre macchine a "runtime" così da provare diversi setup e utilizzarli su diverse applicazioni.
Le Options invece sono delle informazioni accessorie messe a disposizione di qualche particolare "engine". Attualmente solo Oracle mette a disposizione queste informazioni, quindi per la nostra trattazione possiamo utilizzare il default.
I Security Groups sono fondamentali e in pratica governano il firewall che possiamo configurare per l'accesso al nostro RDBMS. Consiglio di creare una configurazione così da poterla adattare meglio secondo le esigenze. In pratica possiamo creare due tipi di regole, una prima CIDR/IP dove si specifica una serie di IP che possono accedere alla nostra istanza ed un secondo tipo dove invece selezionamo un "Security Group" del gruppo EC2, ovvero tutte le istanze appartenenti ad uno stesso gruppo di regole.
Read Replica - Considerazioni
La scalabilità delle basi di dati è argomento di discussione sempre molto attuale. MySQL offre diverse strategie per gestire la scalata. Noi vedremo il tipo solitamente chiamato: "Read Replica", che prevede l'adozione di alcune istanza di sola lettura, dove le uniche operazioni permesse sono le query di SELECT.
Per lavorare con questo tipo di scalabilità è consigliabile avere la base di dati configurata in INNODB ed un utilizzo di questa tramite le transizioni, questo per diverse motivazioni riguardanti la consistenza dei dati che esulano da questa trattazione.
Tantissime applicazioni web, specialmente i blog, hanno un traffico orientato prevalentemente alla lettura. Questo implica che è molto utile poter avere delle nuove macchine appartenenti al gruppo su cui sia possibile sempre leggere informazioni e dividere la lettura su divese componenti. Ciò si traduce in un tipo di architettura gestita egregiamente da MySQL: Read Replica appunto.
RDS supporta la gestione dei Read Replica tramite la console grafica, che è un ottimo punto di partenza, perchè ci permette ancora una volta di concentrarci sull'applicazione senza aver troppo a che fare con le configurazioni.
Per aggiungere una nuova istanza come slave è sufficiente cliccare col tasto destro sull'instanza da replicare e selezionare la voce: "Create Read Replica
". Un nuovo pannello si apre e ci permette di creare una nuova istanza che, in modo automatico e trasparente, sarà affiancata all'instanza master.
È possibile che durante la "vita" della nostra applicazione il "master venga meno", ovvero per una qualunque motivazione non sia più disponibile. In questo caso dobbiamo promuovere uno "slave" a "master" così facendo possiamo ristabilire l'ordine della nostra applicazione.
Le istanze DB sono semplici da gestire grazie al pannello di controllo: ci viene fornito un indirizzo per il collegamento col quale configurare il sistema per l'utilizzo di queste risorse. Il risultato è quello di scorporare un'altra componente fondamentale (il database) gestendola come servizio a parte.
Dobbiamo ancora occuparci di sessioni e caching.