Il Cloud computing e la virtualizzazione sono diventati componenti strategici per qualsiasi infrastruttura IT. Flessibilità, efficienza e (limitati) costi di utilizzo delle risorse sono tipicamente i vantaggi che giustificano la scelta di servizi cloud, istanze o macchine virtuali per nuovi progetti, da semplici applicazioni Web a piattaforme molto più complesse. Quali sono allora i parametri da valutare per una scelta efficace del mix di servizi ideale per un determinato progetto?
Il Cloud privato (…o semplicemente la tua Sandbox)
Considerando i paradigmi meno recenti, la virtualizzazione “classica” effettuata su server interni (self-hosted), è ancora un’opzione rilevante. Il concetto si basa sulla realizzazione di un’infrastruttura composta da alcuni server fisici (o soltanto uno), tipicamente connessi in LAN e opzionalmente ad Internet. Ognuno di esso, detto hypervisor, verrà configurato attraverso software specifico di virtualizzazione, per emulare l’esecuzione simultanea di più sistemi operativi (quindi più server virtuali o VM) sulla stessa macchina fisica, ognuno dotato di risorse hardware idealmente dedicate.
Le tecniche di virtualizzazione sono riconducibili ad alcuni paradigmi, più o meno vantaggiosi in termini di performance, funzionalità e sicurezza. Se il sistema operativo richiesto dalle VM è “omogeneo”, le opzioni da considerare sono la virtualizzazione “a container” e la paravirtualizzazione. La prima permette di creare macchine virtuali molto rapidamente, condividendo direttamente le risorse ed il kernel del server fisico e garantendo prestazioni superiori rispetto alle prossime modalità. La paravirtualizzazione sfrutta anch’essa la condivisione di kernel e alcune componenti del sistema hypervisor, ma in misura più limitata, ad esempio non condividendo direttamente il file system. Gli applicativi più diffusi ed entrambi open source, sono OpenVZ per la virtualizzazione a container e Xen per la paravirtualizzazione.
Se è necessaria una virtualizzazione più flessibile, con una varietà di sistemi operativi illimitata (o quasi), la soluzione è la full-virtualization che astrae completamente l’hardware e la sua modalità di comunicazione sul server hypervisor, permettendo l’esecuzione di qualsiasi sistema operativo. Questo tipo di soluzione riduce le prestazioni e parzialmente la flessibilità delle risorse (es. meno efficace l’overbooking di risorse tra le VM) ma migliora la sicurezza e l’isolamento tra le macchine virtuali, visto che ognuna non può accedere direttamente all’hypervisor: l’eventuale crash di un’istanza molto probabilmente non impatterà sulle altre in esecuzione sullo stesso server fisico.
La maggior parte delle soluzioni di virtualizzazione offrono soluzioni di alta affidabilità (HA), quali il clustering delle VM: se una macchina va in crash, una identica e sincronizzata la sostituirà. Queste funzionalità sono disponibili ad esempio su piattaforma KVM/Qemu con Virt-manager. Altre soluzioni tipiche sono la creazione di infrastrutture di più macchine che utilizzano firewall o NAT virtualizzati, esponendo una porzione di macchine su Internet, che smistano e filtrano il traffico su altre macchine di back-end, dove sono eseguite applicazioni core al sicuro da accessi o attacchi esterni.
La configurazione di un ambiente di virtualizzazione è piuttosto semplice per utenti Linux mediamente avanzati, considerando che questa è la piattaforma di base più utilizzata per la virtualizzazione. Escludendo VirtualBox (semplice ma non troppo professionale e prestazione), Xen o KVM sono sufficientemente semplici da configurare nelle sue impostazioni base. La documentazione ufficiale spesso è complessa ed avanzata, quindi meglio iniziare dai Wiki disponibili per le principali distro Linux (es. la configurazione di Xen per Ubuntu).
Il Cloud per la tua infrastruttura
Se l’esigenza principale è disporre di macchine virtuali immediatamente e/o temporaneamente, senza investire tempo nell’acquisto di server (o averli in hosting/housing) ma semplicemente scegliendo risorse e sistema operativo, una piattaforma di Cloud pubblico è la soluzione. I provider offrono solitamente una piattaforma Web dove configurare, amministrare e monitorare le proprie macchine virtuali. L’allocazione delle risorse, la configurazione di rete, l’avvio, il reboot, i backup e molte altre operazioni sono estremamente semplici e rapide.
Il Cloud pubblico, nel caso specifico per i servizi di IaaS (Infrastructure-as-a-Service), coincide spesso ad un grande data-center fisico gestito dal provider, sul quale vengono virtualizzate dinamicamente migliaia di macchine virtuali. In alcuni casi il data-center è anche distribuito geograficamente (ed è possibile scegliere al momento della configurazione la zona preferita, per essere più prossimi alla propria area di utenza). I provider più famosi sono certamente Amazon AWS, Google Compute Engine e Microsoft Azure. Oggi però, qualsiasi data-center tradizionale si è evoluto ed offre la propria soluzione Cloud, magari per sfruttare hardware inutilizzato, spesso basata su piattaforme Open source come Xen o KVM.
Coerentemente con il paradigma, le macchine virtuali sono contabilizzate secondo la modalità “a consumo” (pay-as-you-go), in termini di risorse attive nel tempo e opzionalmente in base alla loro intensità di utilizzo (es. carico medio della CPU). Fanno eccezione esclusivamente risorse che rimangono occupate anche quando la macchina risulta spenta, come lo storage e gli indirizzi IP.
I compromessi
Considerando che i vantaggi sono spesso evidenti, è opportuno valutare le controindicazioni potenziali per il Cloud privato:
- Complessità: la configurazione della propria architettura può risultare articolata, richiedere tempo e competenze sistemisiche.
- Necessario tuning: può essere considerata un’opportunità per realizzare, con la corretta strategia di virtualizzazione, un’infrastruttura ottimizzata in termini di hardware e performance, ma è certamente un rischio se non si conosce la piattaforma di virtualizzazione o non sufficientemente i requisiti degli applicativi da installare.
- Affidabilità, sicurezza fisica, rete, backup: anche se progettato correttamente, una piattaforma di Cloud pubblico avrà maggior affidabilità del proprio data center interno. Il “gap” si riduce se i server sono in hosting/housing presso data-center professionali.
- Scalabilità e flessibilità: finché l’infrastruttura dipende direttamente dall’hardware, ci saranno limiti alla scalabilità, almeno nel breve periodo. È problematico aggiungere velocemente risorse all’infrastruttura se il business cresce rapidamente o se piuttosto servono numerosi server di test solo per alcuni giorni.
Naturalmente non mancano le situazioni in cui il Cloud pubblico può risultare inadeguato:
- Reputazione del provider: la professionalità è importante, i grandi player spesso privilegiano affidabilità e prestazioni, ma il supporto tecnico e la complessità possono far preferire un data center locale, in grado di garantire supporto istantaneo e servizi più essenziali ma semplici da gestire.
- IOPS e banda: un vero aspetto critico nella mia esperienza. Si può capitare in una zona con “vicini aggressivi” oppure il provider sovrautilizza le risorse hardware. In questi casi, i dischi (storage) e la banda Internet sono tipicamente il collo di bottiglia e generano cali prestazionali specie su DB e applicazioni ad uso intensivo del disco.
- Problemi tecnici: spesso è limitata o impossibile un check approfondito delle macchine virtuali. In caso di crash, se il cruscotto della piattaforma non basta, si può soltanto aprire un ticket al supporto e sperare in una rapido e positivo riscontro.
- Costoso, rispetto all’hosting tradizionale, se le macchine dovranno rimanere accese per molto tempo e/o richiedono l’allocazione di risorse significative. I costi possono essere stimati ma sono comunque sconosciuti a priori.
Il Cloud pubblico è uno strumento efficace per ottenere rapidamente un’infrastruttura come servizio, specie per nuovi progetti, privi di dimensionamenti a priori e potenzialmente in forte crescita, idealmente senza vincoli stringenti di affidabilità e performance. Per soluzioni specifiche, applicativi stabili e con requisiti più definiti, la soluzione preferibile può risultare un’infrastruttura ad-hoc, meglio se in hosting di alto livello ed SLA garantiti. Ovviamente rimane l’opzione fai-da-te, investire tempo e configurare una soluzione di virtualizzazione per realizzare il proprio ambiente di collaudo personalizzato…e magari diventare quello di produzione in futuro.
Hai bisogno di un esperto in Virtualizzazione e Cloud Computing? Incontralo su twago!
Trova esperti IT su twago