Azure Elastic Pool: Introduzione al Prodotto

Il supporto ad i “database” elastici per SQL Azure è in GA (General Availability) dallo scorso Maggio dopo essere stato presentato a //BUILD; si tratta di un servizio orientato allo sviluppo di SaaS. Prima di iniziare a parlarne cerchiamo di capire perché EP può essere considerato un game changer per chi utilizza SQL Azure.

 

Per capire l’impatto di questa feature dobbiamo partire da uno dei punti di forza cardine del cloud, ovvero il pagamento a consumo delle risorse. Questa prerogativa è facilmente raggiungibile in ambiti IaaS, ad esempio in Azure possiamo ridurre drasticamente i costi di una Virtual Machine quando questa viene spenta, tuttavia lo stesso non è sempre possibile nei PaaS, e specialmente in SQL Azure che basa il suo pricing sul numero di DTU massime utilizzabili dal DB ( https://docs.microsoft.com/it-it/azure/sql-database/sql-database-what-is-a-dtu)

 

2016_12_05_elastic-01

Figura 1 – Schema Costi SQL Azure

 

Supponiamo di istanziare un database per la fase di sviluppo di una nostra applicazione, e scegliere il piano Basic; ci ritroveremmo con un limite superiore di 5 DTU ed un pricing di circa 5€ mese, questo indifferentemente dal fatto che per il 99% del tempo il nostro DB utilizzi risorse computazionali per un valore inferiori a 5 DTU o meno. Quindi di fatto SQL Azure utilizza un pricing tipico dei servizi in abbonamento, con la differenza che il pagamento non è anticipato, in quanto durante il periodo di fatturazione potrei aver necessità di scalare il servizio.

 

Una soluzione per non pagare un database su SQL Azure è “non avere un database” istanziato sul server, ovviamente possiamo ridurre il pricing cambiando la tipologia di istanza, oppure effettuare un backup e rimuovere il database finché non ci sia nuovamente utile; tuttavia queste non sono soluzioni che possono essere usate facilmente in produzione; fatta questa premessa, vediamo cosa porta di nuovo Elastic Pool.

 

Elastic Pool è una feature per SQL Azure e permette, all’interno dello stesso server, di condividere le risorse tra 2 o più database, questo è possibile introducendo una nuova unità di misura, la Elastic DTU, per comodità EDTU. Di fatto una EDTU indica il numero di DTU che i database all’interno di un pool elastico condividono tra di loro. Ovviamente in fase di creazione di un pool è possibile scegliere le dimensioni del pool, ovvero il numero di DTU e di database utilizzabili all’interno dello stesso.

 

2016_12_05_elastic-02

Figura 2 – Dimensionamento Elastic Pool

 

Come creiamo un pool elastico? Semplice, per iniziare dobbiamo loggarci al portale di Azure, e selezionare il server di nostro interesse. Fatto questo, non ci resta che scegliere l’opzione “Nuovo Pool”, come mostra la figura 3.

 

2016_12_05_elastic-03

Figura 3 – Creazione Nuovo Pool

 

Nella nuova blade, figura 4, dobbiamo inserire il nome del pool, e selezionare il piano tariffario; a seconda del piano scelto avremo a disposizione differenti configurazioni per il pool. Ogni volta che effettuiamo un cambiamento abbiamo in tempo reale una stima del costo mensile del pool.

 

2016_12_05_elastic-04

Figura 4 – Configurazione Pool

 

Anche la gestione del pool è molto semplice, una volta avviata la distribuzione del pool. Dalla blade del server SQL possiamo vedere il nostro pool. Nel mio caso ho scelto un piano tariffario Standard con un totale di 100 EDTU. Per aggiungere un database al nostro pool è sufficiente selezionare il pool di nostro interesse e successivamente selezionare la scheda di configurazione, come mostra la figura 5.

 

2016_12_05_elastic-05

Figura 5 – Aggiunta Database

 

Dalla blade di configurazione è possibile gestire sia il numero di EDTU che di GB di storage presenti nello stesso; inoltre è disponibile una panoramica dell’utilizzo del pool. Infine dal menù della blade possiamo selezionare Aggiungi al Pool, come mostra la figura 6, che ci mostrerà i database presenti nel nostro server, figura 7.

 

2016_12_05_elastic-06

Figura 6 – Aggiunta Pool

 

2016_12_05_elastic-07

Figura 7 – Elenco Database

 

In questo caso ho deciso di inserire entrambi i database di test. Una volta selezionati i database non ci resta che salvare il tutto, facendo partire il processo di modifica del pool. Questo vuol dire che i database selezionati verranno rimossi dal pricing usuale per Azure SQL Server ed inizieranno ad utilizzare le EDTU del pool, questo sottintende che i database potrebbero venire ridimensionati a seconda del piano del pool. Una volta completato il salvataggio, i database saranno visibili all’interno dell’elenco del pool, come mostra la figura 8.

 

2016_12_05_elastic-08

Figura 8 – Performance EDTU

 

Per rimuovere un database dal pool, ci basterà selezionare un database dalla lista e selezionare l’opzione Rimuovi dal pool dal menù della blade e salvare il tutto. Ovviamente non è sarà eliminare il pool finché ci sono dei database al suo interno.

 

Conclusioni

Come visto, la creazione e gestione del pool è tutto sommato semplice, questo è un altro punto a favore di questa feature che ci permette così di poter gestire meglio non solo le performance dei nostri database condividendo delle eDTU tra loro, ma mettendo a fattor comune anche i costi.