In questo articolo esploreremo la relazione infrastrutturale e funzionale che corre tra il servizio Azure Arc ed il database relazionale di casa Microsoft, ovvero il sempiterno SQL Server.
Cominciamo con un po’ di orientamento.
Cos’è ARC?
Per chi non lo conoscesse, Microsoft descrive Arc con le seguenti parole:
Azure Arc simplifies governance and management by delivering a consistent multicloud and on-premises management platform.
Azure Arc provides a centralized, unified way to:
• Manage your entire environment together by projecting your existing non-Azure and/or on-premises resources into Azure Resource Manager.
• Manage virtual machines, Kubernetes clusters, and databases as if they are running in Azure.
• Use familiar Azure services and management capabilities, regardless of where your resources live.
• Continue using traditional ITOps while introducing DevOps practices to support new cloud native patterns in your environment.
• Configure custom locations as an abstraction layer on top of Azure Arc-enabled Kubernetes clusters and cluster extensions.
Figura 1 - Schema delle relazioni di Azure Arc
Sostanzialmente, Arc permette di avere uno strumento unificato per applicare configurazioni e governare ambienti multi-cloud e private cloud, in maniera orizzontale e virtualmente senza alcuna differenza rispetto al posizionamento logico o geografico delle risorse gestite.
Queste risorse possono essere (limitandosi a quelle in General Availability):
- Server (qui inteso come sistema operativo guest, che sia in esecuzione in un virtualizzatore piuttosto che su un host fisico),
- Cluster Kubernetes,
- Azure data services basati su cluster Kubernetes (SQL Managed Instance and PostgreSQL),
- SQL Server,
- Virtual Machine (qui inteso come oggetti di un cluster VMware vSphere o Azure Stack HCI).
Per ottenere questo risultato, Azure Arc sfrutta tre componenti:
- l’agente Azure Connected Machine per i Server ed i SQL Server;
- l’agente Azure Arc-enabled Kubernetes per i cluster Kubernetes;
- l’agente Azure Arc resource bridge per i virtualizzatori.
Tramite questi possiamo andare ad abilitare la governance con Azure Policy, la gestione degli aggiornamenti con Update Center, il configuration assessment, gli insights di SQL Server e la gestione centralizzata dei deployment applicativi basati su Kubernetes tramite GitOps (Flux v2).
Andando nel dettaglio dei vari servizi gestiti si scoprono molti altri elementi, ma questo quadro sarà sufficiente per ragionare insieme sulla domanda che ci sta più a cuore.
Cosa offre per i nostri SQL Server?
Ovvero, quale è il valore che ottengo affrontando l’onere di attivazione di Azure Arc per le mie istanze SQL?
Vediamo insieme una selezione di ciò che, a mio parere, rappresenta il meglio dell’offerta SQL su Arc (se volete sapere di più su tutte le feature, cliccate su questo link).
Gestire le istanze SQL Server da una singola postazione di controllo
Una volta effettuato l’onboarding, Arc permetterà una visione olistica del parco SQL installato, sia dal punto di vista delle caratteristiche che delle prestazioni.
Tramite Azure Resource Graph Explorer è possibile preparare visualizzazioni e dashboard per visualizzare la distribuzione delle versioni di SQL, lo stato di aggiornamento dei sistemi, il numero di core per edizione, ed altro ancora.
Figura 2 - Esempio di dashboard tramite Graph Explorer
Assessment delle best practice
Spesso questo tipo di assessment viene sottovalutato (ed in ogni caso va sempre preso con una certa cautela), ma rappresenta uno strumento importante nello stabilire una corretta baseline di funzionamento dei servizi SQL attivi. Arc permette di eseguire e di visualizzare i risultati dell’assessment su vasta scala con pochi clic.
Autenticazione Microsoft Entra
Se avete SQL Server 2022, saprete già di questa nuova interessante caratteristica di sicurezza. Un SQL Server Arc-enabled, ospitato su un Server Arc-enabled, può avvalersi dell’autenticazione Entra ID per portare anche nei datacenter on-premises vantaggi quali MFA e Conditional Access Policies.
Pay-as-you-go per SQL Server
Dal punto di vista della gestione dei costi, questa è forse la feature più importante di tutte. Un’istanza SQL Server Arc-enabled ha accesso ad un piano di costi di tipo Pay-as-you-go fatturato tramite Azure (maggiori dettagli a questo link). Questa soluzione permette di risparmiare spegnendo quei server che non sono utilizzati la notte o nei fine settimana, o riducendone i core quando ci sono meno richieste. Senza contare i vantaggi dello spostare anche quei costi da Capex ad Opex.
Extended Security Updates (ESU)
Quando un prodotto Microsoft (sia un Sistema Operativo o una versione di SQL Server) ha esaurito il suo ciclo di vita, non viene più aggiornato neanche a seguito di nuove vulnerabilità scoperte. Le ESU garantiscono, invece, che per tre anni dalla fine del supporto i sistemi possano ancora ricevere le security fix necessarie.
Se avete un SQL Server 2012 “intoccabile” in datacenter, trasformandolo in SQL Server Arc-enabled potete richiedere, a fronte di una fee per sistema (i dettagli a questo link), l’accesso alle ESU per i vostri server.
Migration assessment
Ed infine la ciliegina sulla torta. Modernizzare in chiave cloud-oriented è un obiettivo anche per i workload SQL Server, ed in questo contesto modernizzare può voler dire trasferire il database relazionale su soluzioni di piattaforma come Azure SQL Database.
È conveniente? Che impatti si devono attendere attendere?
A queste ed altre domande risponde il Migration Assessment di Arc. I sistemi vengono valutati con regolarità, ed in ogni momento so se un certo database è pronto per essere ospitato su Azure o no, quali saranno i rischi, quali le strategie per mitigarli, e quale la SKU che più si addice alle caratteristiche del workload.
Bello, lo voglio! Ma quanto costa?
Se avete l’impressione che tutto questo valga la pena, avete ragione!
Tutte le feature qui descritte sono gratuite salvo le ESU; ovviamente, per il modello Pay-as-you-go, è gratuita la possibilità di attivarlo, non il licensing in sé!
Certo dobbiamo considerare poi i costi “nascosti”, cioè legati ad altri servizi utilizzati dietro le quinte come Log Analytics, network, Azure Policy, etc., ma questi sono generalmente nell’ordine delle decine di euro al mese e non spostano budget.
Venduto! Come attivo il tutto?
Si tratta “semplicemente” di fare arrivare l’agente Arc su tutti i server interessati. Per farlo potete sbizzarrirvi nella scelta dello strumento tra PowerShell, Group Policy, Configuration Manager e altro. Una volta distribuito l’agente, si può attivare l’onboarding automatico delle istanze oppure attivare con gli stessi sistemi usati per l’onboarding, la configurazione specifica per SQL.
Per quelle feature che richiedono l’agente di Azure Monitor (AMA), vale lo stesso discorso: si installa sui sistemi con il metodo preferito, oppure si attiva su Arc il SQL Best Practices assessment, forzando così l’installazione automatica dell’agente AMA sui sistemi dove la BPA è attiva.
Figura 3 - Schema funzionale della comunicazione tra SQL Server ed Arc
Una volta completata la registrazione in Arc dei sistemi SQL, è possibile gestirli su larga scala ed avere accesso alle feature descritte sopra.
Conclusioni
Azure Arc è un prodotto consolidato e di grande interesse per Microsoft, che continua a sviluppare nuove funzionalità per coinvolgere sempre più sistemi nella sua piattaforma.
Per questo consigliamo di adottarlo, in particolare nel campo dei motori relazionali SQL Server. Oltre alle caratteristiche che vi ho brevemente descritto ve ne sono molte altre già attive, e molte altre in roadmap e sono sicuro che convinceranno anche i più scettici a metterlo alla prova.