Servizi virtualizzabili: application virtualization

Benvenuto in questa lezione dedicata all'application virtualization, una tecnologia fondamentale nel panorama moderno delle architetture cloud.

Analizzeremo come separare l'applicazione dal sistema operativo sottostante per migliorare la portabilità, la sicurezza e la gestione dei servizi in rete.

  • shape
  • shape


Servizi virtualizzabili: application virtualization

Fino a questo momento abbiamo visto come la virtualizzazione possa ingannare un intero sistema operativo, facendogli credere di girare su un hardware fisico tutto suo. È una soluzione radicale ed estremamente efficace per consolidare i server o per gestire i desktop degli utenti, ma a volte risulta un approccio eccessivo, quasi "sproporzionato". Cosa succede quando il nostro problema non è gestire un intero sistema operativo, ma semplicemente far funzionare un vecchio e fastidioso programma senza che rovini il resto del computer?

Per rispondere a questa esigenza, il mondo dell'informatica ha sviluppato una terza via, chirurgica e leggerissima: l'Application Virtualization (o virtualizzazione delle applicazioni). In questa lezione scopriremo come sia possibile eseguire software complessi senza mai installarli realmente sul disco rigido, isolandoli dal resto del sistema e risolvendo uno degli incubi storici dei sistemisti: la conflittualità tra i programmi.

Il problema: la conflittualità dei software e il degrado del sistema

Per capire il valore di questa tecnologia, dobbiamo prima analizzare cosa accade normalmente quando installiamo un software su un computer tradizionale. Il programma non si limita a copiare i propri file in una singola cartella (ad esempio in C:\Programmi). Al contrario, dissemina le sue librerie in tutto il sistema operativo, modifica chiavi di registro vitali, altera le variabili d'ambiente e spesso sovrascrive componenti condivisi usati anche da altri software.

Questo comportamento "invadente" genera due grossi problemi. Il primo è il progressivo degrado delle prestazioni del sistema operativo: più programmi si installano (e si disinstallano), più il computer diventa lento e instabile a causa dei "rifiuti logici" lasciati in giro. Il secondo, e ben più grave in ambito aziendale, è il cosiddetto DLL Hell (l'inferno delle librerie condivise). Se l'Applicazione A ha assolutamente bisogno della libreria grafica nella versione 1.0 per funzionare, ma l'Applicazione B appena installata l'ha sovrascritta con la versione 2.0, l'Applicazione A smetterà misteriosamente di aprirsi, bloccando il lavoro di un intero ufficio.

Un'azienda ospedaliera ha acquistato un moderno software per la gestione delle cartelle cliniche. Purtroppo, l'ospedale usa ancora una vecchia stampante per etichette mediche il cui software di controllo (mai aggiornato dal produttore) entra in conflitto distruttivo con il nuovo gestionale. In un ambiente tradizionale, l'amministratore è costretto a dedicare un computer fisico separato, vecchio e insicuro, solo per stampare le etichette, sprecando spazio, soldi e tempo.

Che cos'è l'Application Virtualization

La Virtualizzazione delle Applicazioni risolve questo scenario alla radice. Invece di virtualizzare l'hardware (come fanno Server Virtualization e VDI), questa tecnologia virtualizza l'ambiente del sistema operativo stesso, ma lo fa esclusivamente per ingannare una singola applicazione.

Quando il programma viene avviato, non comunica direttamente con il vero sistema operativo. Viene racchiuso in una "bolla" logica, spesso chiamata sandbox. All'interno di questa bolla, il software di virtualizzazione fornisce all'applicazione tutto ciò che si aspetta di trovare: un disco C: virtuale, un registro di sistema virtuale e file di sistema virtuali.

L'applicazione è convinta di essersi installata in modo profondo e invasivo nel cuore del computer, ma in realtà sta scrivendo e leggendo esclusivamente all'interno della sua bolla chiusa. Il sistema operativo reale sottostante (chiamato host) non viene toccato, sporcato o alterato in alcun modo.

Regola fondamentale: Nella virtualizzazione hardware, il sistema operativo "guest" non sa di girare su hardware finto. Nella virtualizzazione applicativa, è la singola applicazione a non sapere di girare in un ambiente di sistema operativo finto e isolato.

I vantaggi pratici: isolamento e portabilità

Il primo grande vantaggio di questo isolamento (sandboxing) è la fine della conflittualità. Dato che ogni applicazione virtualizzata vive in una bolla separata dalle altre, è possibile far girare contemporaneamente sullo stesso computer programmi che normalmente si distruggerebbero a vicenda. Ad esempio, è possibile aprire Microsoft Word 2003 e Microsoft Word 2024 fianco a fianco: nessuno dei due saprà dell'esistenza dell'altro e non condivideranno alcun file di sistema critico.

Il secondo vantaggio è la drastica riduzione dei tempi di manutenzione grazie alla portabilità estrema. Un'applicazione virtualizzata non deve affrontare la classica "procedura di installazione" (il setup che richiede decine di minuti, schermate da confermare e riavvii del PC). Viene invece pre-confezionata dai tecnici (spesso tramite un processo detto sequencing) in un unico file eseguibile o in un piccolo pacchetto compresso.

Per usarla, all'utente basta scaricare il file e fare doppio clic. Quando il programma non serve più, non c'è bisogno di lanciare alcuna disinstallazione (spesso inaffidabile) per pulire il sistema: basta letteralmente cestinare il file, e il computer torna esattamente allo stato precedente, pulito e immacolato.

Nei laboratori universitari, i professori chiedono l'uso di decine di software specialistici diversi, usati magari solo per un paio di lezioni. Invece di installare pesantemente ambienti di programmazione, [tooltip]CAD: Computer-Aided Design, software di disegno tecnico assistito al calcolatore[/tooltip] e simulatori chimici su tutti i 500 PC dell'ateneo rallentandoli a morte, l'università fornisce agli studenti i pacchetti virtualizzati su un server di rete. Lo studente fa doppio clic, il software "gira" isolato, e a fine semestre basta svuotare la cartella.

Errori comuni e limiti

Un errore di valutazione molto frequente in sede di esame è confondere l'Application Virtualization con il VDI visto nella lezione precedente. Nel VDI l'applicazione viene eseguita sul server in un'altra stanza e il PC dell'utente mostra solo uno streaming video. Nell'Application Virtualization, invece, l'applicazione (pur essendo racchiusa in una bolla) viene fisicamente caricata nella memoria RAM del computer dell'utente e sfrutta la potenza del processore locale per funzionare. Questo significa che se un programma richiede molta RAM o una scheda video potente per fare calcoli 3D, il PC dello studente dovrà fisicamente avere quei componenti hardware a bordo.

Questa tecnologia ha inoltre un limite applicativo invalicabile: l'incapacità di integrarsi profondamente con l'hardware del PC. Proprio per la sua natura isolata, se si tenta di virtualizzare un software antivirus (che ha bisogno di scansionare i file reali del sistema operativo) o un driver per una lavagna multimediale interattiva, il pacchetto fallirà. I software che devono comunicare a bassissimo livello con periferiche fisiche non possono essere virtualizzati in questo modo, perché la "bolla" blocca i loro tentativi di toccare l'hardware reale.

Sintesi applicativa

In sintesi, l'Application Virtualization chiude il cerchio dei servizi virtualizzabili tradizionali agendo a livello di singolo software. Isolando l'applicazione in una bolla logica in cui disco e registro di sistema sono simulati, elimina per sempre i problemi di conflittualità, i fastidiosi cicli di installazione/disinstallazione e il degrado prestazionale del sistema operativo ospite. Questa filosofia del "pacchetto software isolato e autosufficiente" è stata così rivoluzionaria e vincente che ha gettato le fondamenta logiche per la nascita della tecnologia dei Container (come Docker), l'attuale standard assoluto per lo sviluppo del software sul Web. Nelle prossime lezioni abbandoneremo lo strato dei servizi e delle applicazioni per scendere a un livello infrastrutturale molto più profondo, scoprendo che persino i dischi rigidi e i cavi di rete che connettono le VM possono essere totalmente virtualizzati.

Domanda di autoverifica: Un'agenzia di grafica decide di distribuire ai propri dipendenti un pesante programma di fotoritocco tramite Application Virtualization. Un dipendente si lamenta perché il programma, sul suo portatile economico, è lentissimo a renderizzare le immagini. Invia un'email al tecnico chiedendo di "potenziare i server aziendali" per farlo andare più veloce, confondendo l'App Virtualization con il VDI. Perché la richiesta del dipendente è tecnicamente inutile e dove risiede, invece, l'unico vero modo per risolvere il problema di lentezza in questo specifico scenario?

Paragrafi letti

 

    
0%
       Salva

Esercizi su "Servizi virtualizzabili: application virtualization"

0%

Statistics