Punto di Decisione: VDI e Terminal Services
Due concetti fondamentali si contendono il primato, ammesso che alle tecnologie importi del primato, quando si tratta di interfacce desktop grafiche remote: VDI (virtual desktop infrastructure) e terminal services. L'idea di entrambi è semplice: collocare le risorse e l'elaborazione su un server e fare in modo che gli utenti finali accedano all'interfaccia grafica da remoto attraverso una rete. Ciò che distingue fondamentalmente VDI e TS è la differenza tra quel server remoto che offre un'esperienza uno-a-molti, con molti utenti che ottengono il proprio desktop da un'unica immagine del sistema operativo (TS), e ciascun utente che ottiene un server dedicato tutto per sé (presumibilmente virtualizzato e chiamato VDI) dove non vi è alcuna condivisione delle risorse del singolo sistema operativo.
Esiste una certa dose di presupposto, in parte derivante dalle convenzioni di denominazione, secondo cui VDI implichi un sistema operativo desktop piuttosto che uno server, ma ciò non dovrebbe essere visto come un'implicazione. In effetti, al di fuori del mondo Windows non esiste realmente alcuna separazione tra sistemi operativi desktop e server, quindi avere una tale distinzione a livello tecnologico non avrebbe senso. È importante ricordare, tuttavia, che Microsoft definisce le licenze VDI in base all'uso di diverse opzioni di licenza del sistema operativo e che la maggior parte del VDI riguarda sistemi operativi Windows; quindi, sebbene VDI non implichi questo, in senso pratico è generalmente importante tenere presente che sul piano tecnico non esiste alcuna distinzione, mentre sul piano delle licenze Microsoft esistono distinzioni rilevanti.
Dei due, VDI è il concetto più recente. I Terminal Services esistono da decenni, sono ben noti e oggi sono tutt'altro che entusiasmanti o appariscenti. I terminal services sono antecedenti a Windows, sono comuni a quasi ogni famiglia di sistemi operativi e sono così diffusi nel mondo UNIX da essere spesso utilizzati senza nemmeno farci caso. I terminal services sono la continuazione grafica (GUI) dei vecchi terminali a “schermo verde” che venivano usati fin dai “tempi antichi” dell'informatica. In passato i terminali erano spesso terminali VT100 connessi via seriale, mentre oggi utilizziamo reti TCP/IP e protocolli in grado di trasportare la grafica, ma il concetto rimane lo stesso: molti utenti su un unico server.
Con il VDI raggiungiamo gli stessi obiettivi, ma lo facciamo dando a ciascun utente tutte le proprie risorse. Il loro sistema operativo è interamente proprio, non condiviso con nessuno. Ciò significa che vi è tutto l'overhead della gestione della memoria, della gestione della CPU, delle tabelle dei processi, delle copie delle librerie e così via per ogni singolo utente. È un overhead notevole. Si pensi a tutte le risorse che un desktop grafico inattivo richiede solo per avviarsi e attendere l'utente: può essere una quantità considerevole. I sistemi operativi Windows più recenti sono diventati più snelli ed efficienti, probabilmente per renderli più praticabili sulle infrastrutture VDI, ma l'overhead rimane un fattore significativo. Il VDI non era realmente possibile finché la virtualizzazione non lo ha reso una realtà, quindi in qualsiasi senso pratico si tratta di un nuovo utilizzo della tecnologia ed è spesso frainteso.
Ciò che ci troviamo ad affrontare ora è, nel decidere un'infrastruttura computazionale remota, la scelta tra queste due idee architetturali. Naturalmente, va notato che le due possono coesistere molto facilmente e spesso sarebbe opportuno farlo. Nelle realtà più piccole sarebbe in effetti molto facile far coesistere le due sulla stessa piattaforma fisica. Vi sono molti fattori da considerare in questo caso e questo processo decisionale può in realtà rivelarsi piuttosto complicato.
Uno dei fattori più importanti che dobbiamo considerare è la compatibilità del software. Questo è il principale motore del passaggio al VDI rispetto ai terminal services. Nel mondo Windows non è raro che le applicazioni richiedano cose come una firma di sistema operativo desktop (rifiutandosi di funzionare sulle varianti server del sistema operativo), ambienti a utente singolo, che gli utenti dispongano di privilegi a livello di amministratore, che vengano eseguite con account specifici o requisiti di librerie che spesso entrano in conflitto con altri pacchetti. A causa di questi problemi, molte aziende si rivolgono al VDI per replicare il modo in cui funzionano i singoli desktop, dove tali problemi venivano facilmente trascurati perché ogni utente operava in un ambiente distinto. Il VDI porta questa stessa funzionalità nel mondo dell'accesso remoto, consentendo di soddisfare secondo necessità le esigenze delle applicazioni problematiche. L'isolamento del sistema operativo aggiunge un livello di protezione.
Questo fattore trainante sostanzialmente non esiste al di fuori del mondo Windows ed è il motivo principale per cui il VDI non ha mai preso piede in nessun altro ambiente. Pur essendo facilmente realizzabile con Linux o FreeBSD, ad esempio, il VDI ha scarsa utilità o valore in quei casi.
Una delle principali preoccupazioni con il VDI è l'enorme overhead necessario per gestire molti sistemi operativi ridondanti, ciascuno con i propri processi, storage e memoria duplicati. Agli albori questo rendeva il VDI incredibilmente inefficiente. Più di recente, tuttavia, i sistemi VDI avanzati, incentrati principalmente sulle piattaforme di virtualizzazione e sullo storage, hanno affrontato molti di questi problemi deduplicando memoria e storage, utilizzando file di boot master comuni e altre tecniche. In effetti, contrariamente alla maggior parte dei presupposti, può persino accadere che il VDI superi le prestazioni dei tradizionali terminal services per Windows, grazie alla capacità della piattaforma hypervisor di gestire la gestione della memoria e il task switching in modo ancora più efficiente di Windows stesso (un fenomeno osservato per la prima volta nei primi anni 2000, quando in alcuni casi Windows funzionava più velocemente se virtualizzato su Linux, in modo che la gestione della memoria potesse essere parzialmente delegata al sistema Linux sottostante, che era più efficiente). Questo non è certamente sempre il caso, ma i miglioramenti nella gestione del VDI sono arrivati così avanti che i due sono spesso piuttosto vicini. Anche in questo caso, tuttavia, si tratta di un fattore che rende il VDI più attraente nel mondo Windows, ma non in modo così marcato nel mondo non-Windows, dove la gestione nativa dei task del sistema operativo è tipicamente più efficiente e il VDI rimarrebbe un overhead non necessario.
Un altro ambito in cui il VDI ha costantemente dimostrato di essere più capace dei terminal services è quello degli ambienti con rendering graficamente ricco, come il CAD e il montaggio video. Gli stessi ambiti che tendono ancora fortemente verso l'hardware dedicato tendono a passare al VDI piuttosto che ai terminal services, grazie a un forte investimento nelle capacità GPU all'interno delle soluzioni VDI. Non si tratta di uno scenario universale, ma per situazioni in cui deve avvenire un rendering grafico pesante vale la pena indagare la possibilità che il VDI offra prestazioni significativamente migliori.
A causa del modo in cui il VDI viene gestito, è spesso riservato solo a implementazioni di grandissime dimensioni, dove la scala, in termini di numero di utenti finali inclusi nella soluzione, può essere utilizzata per ammortizzare parte del costo di implementazione. I terminal services, tuttavia, grazie al loro costo più scalabile, possono spesso essere implementati in ambienti più piccoli o per sottoinsiemi di utenti in modo più conveniente. Nessuno dei due è comune per un ambiente molto piccolo composto da pochi utenti, sebbene uno strano fenomeno legato al VDI gestito manualmente renderebbe il VDI probabilmente più efficace dei terminal services per un numero eccezionalmente esiguo di utenti, forse meno di dieci, dove il VDI viene trattato più come una serie di singoli server che come un ambiente VDI unificato.
Con le più rare delle eccezioni, dovute principalmente all'overhead di licenza creato dall'ecosistema desktop Windows in un contesto virtualizzato, è di fatto una posizione di partenza, per i sistemi degli utenti finali ad accesso remoto, presumere un punto di partenza basato sulle tecnologie terminal server e rivolgersi alle soluzioni VDI, più complicate e più costose, solo quando i terminal services si dimostrano incapaci di soddisfare i requisiti tecnici dello scenario. A tutti gli effetti, il VDI è un metodo di ripiego, di forza bruta, per far funzionare la virtualizzazione degli utenti finali laddove i metodi preferiti si sono rivelati insufficienti.