Con il termine Cloud si intende un insieme di tecnologie che permettono di utilizzare un certo insieme di server in modo distribuito e virtualizzato: cioè, un'infrastruttura unica, anche disomogenea in termini di componenti hardware, ma che viene sfruttata in modo del tutto trasparente e indipendente da applicazioni, anche totalmente diverse per requisiti software l'una dalle altre.
Un esempio pratico? Nella mia azienda ho bisogno di utilizzare:
- un software opensource per la gestione dei progetti, sviluppato in Ruby on Rails, che ha bisogno di un stack Ruby aggiornato costantemente (Ubuntu non-LTS);
- un'applicazione commerciale certificata per funzionare su RHEL 5.0;
- ospitare un sito web che riceve un sacco di traffico pochi giorni all'anno, durante i periodi di fiera, e praticamente scarico il resto dell'anno;
- ahimè, un gestionale di fatture che funziona solo su sistemi Windows;
A cose normali, avrei bisogno di utilizzare 4 server fisici differenti, alcuni di loro sfruttati a pieno solo per pochi giorni l'anno, con il rischio di non poter garantire alcun tipo di servizio in seguito a gravi guasti hardware di un singolo server (alimentatori, scheda madre fulminata, etc).
Grazie invece al Cloud Computing e alla Virtualizzazione, è possibile ottimizzare l'utilizzo del proprio parco macchine, potendo gestire meglio eventuali picchi di carico o guasti hardware, e semplificando notevolmente la gestione di ambienti software eterogenei fra loro.
Nel caso più semplice, è possibile gestire un piccolo nucleo di macchine utilizzando un software
opensource come
Proxmox: basta installare su tutte le macchine una Debian Lenny minimale, aggiungere il
repository proxmox al sources.list ed installare il tutto con:
# aptitude install proxmox-ve-2.6.35
Invece, in caso di necessità di un'infrastruttura più ampia, sono necessarie soluzioni software che pongono al centro della loro architettura
scalabilità e
performance. Un buon esempio di questo è
OpenNebula.
OpenNebula viene utilizzato da numerosi
centri di calcolo e grossi hosting provider che hanno come requisiti
alta affidabilità e semplicità di gestione di un grosso parco macchine. In questo caso, l'installazione dei singoli nodi è molto semplice, perchè non si va oltre il sistema base con i tools standard di virtualizzazione opensource (kvm+libvirtd o Xen), ma anche proprietari (vmware).
Nel caso di kvm, è sufficiente:
# aptitude install qemu-kvm libvirt-bin
Tutta la complessità viene spostata sul nodo frontend, che sarà quello che fisicamente effettuerà il monitoraggio di tutti i nodi dell'infrastruttura, che deciderà su quale host effettuare il deploy di una certa istanza virtualizzata, e che interagirà direttamente con le componenti software installate sui nodi di calcolo.
La
documentazione copre la configurazione sia di una Cloud
privata, sia
pubblica (cioè nel caso ci sia necessità di far accedere terzi alla propria infrastruttura), che entrambe le cose.
E' possibile gestire facilmente l'accesso multiutente, appoggiarsi anche a servizi esterni come Amazon on-demand, e integrare il tutto con le proprie applicazioni, inclusi software di fatturazione e gestionali grazie alla presenza di API.