Grazie alla piattaforma Microsoft Azure è possibile utilizzare SQL Server come servizio senza doversi preoccupare dell’infrastruttura sottostante. L’approccio PaaS (Platform-as-a-Service) consente infatti di essere subito operativi senza dover lavorare sulla configurazione hardware e senza dover configurare una macchina virtuale (come invece avviene nel caso dell’Infrastructure-as-a-Service o IaaS).
I database SQL Server sono ovviamente utilizzabili, su Azure, anche all’interno delle macchine virtuali ma abbracciare la modalità PaaS permetterà di far compiere al proprio business un bel balzo in avanti.
I principali “fiori all’occhiello di Azure SQL Database
Il grande vantaggio della soluzione PaaS, è che – come abbiamo visto anche nel caso di altri servizi – permette di realizzare concretamente l’ibridazione della piattaforma dati.
Parte di essa, infatti, può continuare a risiedere on-premises, parte può essere invece migrata sul cloud e, in questo caso, su Azure.
Azure SQL Database è un RDBMS (Relational database management system), un sistema per la gestione di basi di dati relazionali utilizzabile come servizio. Un prodotto che solleva l’utente dal dover impostare non soltanto l’hardware ma anche la configurazione software dello stesso RDBMS (entrambi questi aspetti sono gestiti da Microsoft). Si pensi soltanto al lavoro necessario per installare periodicamente tutti gli aggiornamenti di sicurezza che con Azure SQL Database può essere del tutto evitato.
In termini di disponibilità dei propri database, attraverso il servizio Azure SQL Database, Microsoft parla di una “garanzia a quattro nove”.
Cosa significa? Che i propri database – su Azure – saranno disponibili, raggiungibili e quindi normalmente fruibili per il 99,99% del tempo.
Il terzo fiore all’occhiello di Azure SQL Database è la scalabilità dinamica: i propri database, seguendo lo stesso leitmotiv di tutti gli altri servizi della piattaforma Azure, possono essere dimensionati liberamente e, soprattutto, sono sempre in grado di sopperire ad un improvviso aumento delle richieste da parte dei client collegati.
Già in fase di creazione, infatti, è possibile selezionare sia il livello di servizio che il livello di prestazioni che l’utente desidera ottenere per i propri database. Lo schema è sostanzialmente quello già incontrato nel caso di altri servizi: l’unica differenza è che, per Azure SQL Database, la piattaforma permette di scegliere profili diversi a seconda dello spazio occupabile, del tempo di conservazione (retention) dei backup, del numero di sessioni nonché di richieste e login simultanei che debbono essere gestiti.
C’è un parametro, ampiamente ricorrente, che viene utilizzato per riferirsi al dimensionamento di Azure SQL Database: database transaction unit o DTU.
Con il termine DTU ci si riferisce alla potenza relativa (CPU, memoria, letture/scritture) che viene assegnata al database o ai database dell’utente di Azure.
Quando si parla di migrazione parziale (e quindi di ibridazione) di un SQL Server on-premises ad Azure SQL Database, solitamente l’idea è quella di mantenere nella propria infrastruttura un database centralizzato che contiene le informazioni essenziali per sapere sempre dove sono memorizzati gli altri dati, sul cloud.
I vari frammenti del database (detti shard) possono poi essere spostati e gestiti sul cloud secondo la logica più consona alle proprie attività.
Azure SQL Database consente una scalabilità sia in verticale che in orizzontale.
La piattaforma Microsoft consente cioè di allocare (come già visto, peraltro, anche nel caso di altri servizi) più o meno risorse al singolo database andando a modificare il livello di servizio prescelto (scale up/down).
Questo tipo di interventi possono essere effettuati, su Azure, “a caldo” ossia quando il database è online senza in alcun modo impattare sull’effettiva raggiungibilità delle basi di dati.
Come abbiamo visto per le macchine virtuali e le web apps, Azure può anche scalare orizzontalmente.
Per quanto riguarda i database, Azure è in grado di istanziare un pool di risorse (essenzialmente RAM, CPU e storage) da destinare alle basi di dati degli utenti e di adattarle dinamicamente alle necessità cui è necessario far fronte.
Questo tipo di impianto, detto Elastic Database Pools permette di effettuare l’autoscaling del servizio consentendo agli utenti di Azure di contenere i costi.
Ciò che l’utente deve fare è, semplicemente, indicare i valori minimo e massimo in termini di eDTU (elastic database transaction unit) che si desidera ottenere per ogni database.
Novità assoluta a livello pratico e, quindi, in termini di ottimizzazione dei carichi di lavoro è il Service Tier Advisor (STA), uno strumento integrato in Azure che effettua l’analisi delle performance e aiuta a definire in che modo posizionare i propri database sui vari pool sulla base dei dati storici via a via raccolti.
Sempre in tema di ottimizzazione delle performance, Azure SQL Database offre il cosiddetto Index Advisor, un sistema capace di segnalare quali sono gli indici mancanti e quindi potenzialmente utili per coadiuvare il carico di lavoro.
L’analisi dell’impatto dei nuovi indici viene effettuata direttamente dalla piattaforma Azure: se tali indici, sulla base della tipologia di query effettuate, sulla loro ricorrenza, sul traffico generato e così via, producessero un impatto negativo (e quindi non fossero d’aiuto), Azure provvede a rimuoverli automaticamente.
In termini di reportistica, utile ai fini dell’ottimizzazione delle performance, Azure fornisce gli strumenti per ottenere il dato relativo, ad esempio, alle query più frequenti, a quelle più impegnative in termini di occupazione delle risorse di calcolo e a quelle che richiedono più tempo per essere gestite.
Il pannello offerto da Azure sfrutta il Query Store, strumento integrato anche in SQL Server 2016 (quindi disponibile anche on-premises) che registra automaticamente tutti i piani di esecuzione con una reportistica che permette di studiare eventuali regressioni nel corso del tempo.
Creazione di un database SQL Server su Azure
La procedura di creazione di un database SQL Server sulla piattaforma Azure è avviabile accedendo al nuovo portale, cliccando su SQL Database quindi su Aggiungi.
La casella Consenti l’accesso a servizi di Azure, se spuntata, permettere di rendere il database direttamente accessibile da qualunque risorsa o servizio utilizzati in Azure: si potranno così leggere i dati e apportare variazioni al contenuto della base dati.
Una volta creato il database, Azure mostra subito il valore DTU, parametro che indica l’occupazione complessiva delle risorse disponibili e che abbiamo introdotto in precedenza.
Come abbiamo visto in altri articoli, anche il layout del pannello relativo ai database SQL è liberamente personalizzabile con l’aggiunta di ulteriori riquadri. Si possono così tenere d’occhio le prestazioni del database osservando anche l’evoluzione in termini di utilizzo delle risorse, di connessioni client, di spazio occupato e degli eventi o avvisi che via a via si verificano.
Cliccando su Prestazioni si può attivare anche quello che in italiano è stato battezzato archivio query, strumento che raccoglie l’elenco delle query inviate al database e la lista delle ottimizzazioni sul database effettuate in automatico dalla piattaforma oltre che quelle consigliate all’utente.
Con un clic su Tutte le impostazioni, si può gestire dettagliatamente il monitoraggio del database verificando non soltanto il comportamento delle query ma anche, ad esempio, le connessioni fallite, le raccomandazioni della piattaforma, le impostazioni generali e il piano tariffario scelto (in termini di DTU) con la possibilità di effettuare uno scaling del servizio. Inoltre, limitatamente ai piani Standard e Premium, gli utenti possono configurare il servizio di georeplica richiamabile in caso di esigenze di disaster recovery.
La voce Proprietà, contenuta sempre all’interno delle impostazioni del database, permette – previo clic su Mostra stringhe di connessione del database – di accedere alle stringhe di connessione, già predisposte da Azure, che permettono di collegarsi alla base dati da qualunque applicazione.
Come si vede, Azure propone le stringhe di connessione già pronte per essere adoperate con ADO.NET, ODBC, PHP o JDBC.
Cliccando sul pulsante Strumenti quindi su Apri in Visual Studio, il database potrà essere gestito direttamente da Visual Studio, usando l’installazione locale dell’ambiente di sviluppo Microsoft.
Prima di proseguire, e questo vale anche nel caso in cui ci si volesse collegare alla base dati da altre macchine, ovunque esse si trovino, bisognerà impostare una o più regole firewall per consentire la connessione da remoto.
Attivando l'”interruttore” Consenti l’accesso a servizi di Azure, comunque, tutti gli altri servizi di Azure (macchine virtuali comprese), potranno interfacciarsi col database creato.
Non solo SQL Server: …anche MySQL
Come abbiamo più volte sottolineato, Azure è una piattaforma versatile, flessibile e, allo stesso tempo, aperta a tecnologie “non-Microsoft”. Tra le tante possibilità, Azure supporta anche i database MySQL.
Per creare un nuovo database MySQL in Azure e utilizzarlo in modalità PaaS, è sufficiente accedere al portale, cliccare su Nuovo, Dati e archiviazione quindi Database MySQL.
Anche nel caso di MySQL, Azure – attraverso il partner ClearDB – mette a disposizione un piano tariffario a costo zero che consente di effettuare tutti i test che si riterranno opportuni senza sborsare un centesimo.
A creazione del database ultimata, si potrà cliccare su Proprietà per accedere istantaneamente ai dati della base dati MySQL e alla corrispondente stringa di connessione.
Nulla vieta, ovviamente, di utilizzare MySQL in modalità IaaS installandolo manualmente all’interno di una macchina virtuale Ubuntu creata sulla piattaforma Azure. Fruire di database MySQL in modalità PaaS, però, evita di compiere una serie di passaggi di configurazione in più ed essere immediatamente produttivi.
Per provare subito a creare o iniziare a migrare su Azure i propri database SQL Server e MySQL, suggeriamo di attivare subito un account Microsoft Azure.
Inviateci le vostre domande su Azure
Inviateci le vostre domande sulla piattaforma Azure pubblicando un commento in calce a questo articolo oppure via email all’indirizzo della redazione info@ilsoftware.it
Potete sottoporci qualunque tipo di quesito, richieste di approfondimento, delucidazioni sui temi trattati e proposte di argomenti da affrontare.