判断のポイント:VDIとターミナルサービス
リモートグラフィカルデスクトップインターフェースに関して、もし技術がそれを気にするとすれば、二つの基本的なコンセプトが主導権を争っています。それはVDI(仮想デスクトップインフラ)とターミナルサービスです。どちらの考え方も単純で、リソースと処理をサーバーに置き、エンドユーザーがネットワーク越しにグラフィカルインターフェースにリモートアクセスするというものです。VDIとターミナルサービス(TS)を根本的に区別するのは、リモートサーバーが多対一の体験(一つのOSイメージから多くのユーザーがデスクトップを取得するTS)か、各ユーザーが自分専用の専用サーバー(仮想化されVDIと呼ばれる)を持ち、個々のOSリソースの共有がない形式かの違いです。
命名規則から部分的に生じる一定の思い込みとして、VDIはサーバーOSではなくデスクトップOSを意味するというものがありますが、これはそういう意味ではないと理解すべきです。実際、Windows の世界以外では、デスクトップとサーバーのOSに本当の区別はないため、テクノロジーレベルでそのような区別を設けることは意味をなしません。ただし、Microsoft はVDIライセンスを異なるOSライセンスオプションの使用によって定義しており、ほとんどのVDIはWindowsオペレーティングシステム向けであることを覚えておくことが重要です。つまり、VDIがこれを意味するわけではありませんが、実際的な意味で、技術的な側面では区別がなく、Microsoftのライセンス側では大きな区別があることを念頭に置くことが一般的に重要です。
二つのうち、VDIの方が新しいコンセプトです。ターミナルサービスは数十年前から存在し、よく知られており、今日ではもはや斬新でも派手でもありません。ターミナルサービスはWindowsよりも以前から存在し、ほぼすべてのOSファミリーに共通しており、UNIXの世界では当たり前のように使われています。ターミナルサービスは、コンピュータの「昔ながら」の時代から使われてきた古い「グリーンスクリーン」端末のGUI版です。昔はシリアル接続のVT100端末が使われていましたが、今日ではTCP/IPネットワークとグラフィックスを伝送できるプロトコルを使用しています。しかし、コンセプトは同じままです。一台のサーバーに多数のユーザーが接続するというものです。
VDIでは同じ目標を達成しますが、各ユーザーに自分だけのリソースをすべて与えることで実現します。彼らのOSは完全に自分のものであり、誰とも共有しません。これは、すべての個々のユーザーに対して、メモリ管理、CPU管理、プロセステーブル、ライブラリのコピーなどすべてのオーバーヘッドがあることを意味します。これは相当なオーバーヘッドです。アイドル状態のグラフィカルデスクトップが起動してユーザーを待つために必要なリソースを考えてみてください。かなりの量になり得ます。新しいWindowsオペレーティングシステムはより軽量で効率的になっています。おそらくVDIインフラ上でより実用的にするためでしょうが、オーバーヘッドは依然として重要な要因です。VDIは仮想化によって初めて実現可能になったため、実際的な意味では新しい技術の使い方であり、しばしば誤解されています。
現在私たちが直面しているのは、リモートコンピューティングインフラを決定する際に、これら二つのアーキテクチャのアイデアのどちらかを選ぶということです。もちろん、この二つは非常に簡単に共存できることに注意すべきです。多くの場合、そうすることが適切でしょう。小規模な環境では、実際に二つが同じ物理プラットフォーム上で共存することも非常に容易です。ここには考慮すべき多くの要因があり、この意思決定プロセスは実際にはかなり複雑になる可能性があります。
最大の要因の一つは、ソフトウェアの互換性です。これがターミナルサービスではなくVDIへの移行の最大の推進力です。Windowsの世界では、アプリケーションがデスクトップOSのシグネチャを要求したり(サーバーOS版での実行を拒否)、シングルユーザー環境を要求したり、ユーザーが管理者レベルの権限を持つことを要求したり、特定のアカウントで実行することを要求したり、他のパッケージとしばしば競合するライブラリ要件を持つことは珍しくありません。これらの問題のため、多くの企業は、これらの問題が各ユーザーが個別の環境で実行していたため容易に見過ごされていた個別デスクトップの動作をVDIで模倣しようとします。VDIはリモートアクセスの世界にこれと同じ機能をもたらし、問題のあるアプリケーションを必要に応じて対応できるようにします。OSの分離は保護の層を追加します。
この推進要因はWindowsの世界以外ではほとんど存在せず、これがVDIが他のどの環境でも浸透していない主な理由です。Linux や FreeBSD などでは簡単に実現できますが、そのような場合にはVDIにはほとんど目的も価値もありません。
VDIの大きな懸念点は、それぞれが独自のプロセス、ストレージ、メモリを持つ多数の冗長なOSを管理するために必要な極度のオーバーヘッドです。初期の頃はこれがVDIを信じられないほど非効率にしていました。しかし最近では、主に仮想化プラットフォームとストレージを中心とした高度なVDIシステムが、メモリとストレージの重複排除、共通のマスターブートファイルの使用、その他の技術によってこれらの問題の多くに対処しています。実際、ほとんどの思い込みに反して、ハイパーバイザープラットフォームがWindowsそのものよりも効率的にメモリ管理とタスク切り替えを処理できるため、VDIが従来のターミナルサービスよりもWindowsで優れたパフォーマンスを発揮する場合さえあります。(これは2000年代初頭に初めて観察された現象で、Linuxの上でWindows を仮想化するとメモリ管理をより効率的な下位のLinuxシステムに部分的に渡せるため、Windowsがより速く動作する場合がありました。)これが常に当てはまるわけではありませんが、VDI処理の改善は非常に進んでおり、二つは多くの場合かなり接近しています。しかし、これはWindowsの世界ではVDIをより魅力的にする要因ですが、ネイティブOSタスク管理が通常より効率的で、VDIは不必要なオーバーヘッドとなる非Windowsの世界ではそれほど劇的ではありません。
VDIがターミナルサービスよりも一貫して優れている別の領域は、CADやビデオ編集などグラフィックスが豊富にレンダリングされる環境です。専用ハードウェアへの傾向が依然として強い同じ領域は、VDIソリューション内のGPU機能への大きな投資によって、ターミナルサービスではなくVDIに移行する傾向があります。これはすべての状況に当てはまるシナリオではありませんが、大規模なグラフィカルレンダリングが必要な状況では、VDIが大幅に優れたパフォーマンスを発揮する可能性を検討する価値があります。
VDIの管理方法のため、VDIはしばしば非常に大規模な展開に限られています。ソリューションに含まれるエンドユーザーの数という規模を活用して、実装コストの一部を克服できる場合です。しかし、ターミナルサービスは、よりスケーラブルなコストのため、より小さな環境やユーザーのサブセットにより費用対効果高く実装できることが多いです。どちらも少数のユーザーしかいない非常に小さな環境には一般的ではありませんが、手動で管理されるVDIという奇妙な現象で、VDIがターミナルサービスよりも効果的な可能性があります。具体的には10人未満という非常に少ない数のユーザー向けに、VDIが統合されたVDI環境としてではなく、個別のサーバーのように扱われる場合です。
ごくまれな例外を除いて(主に仮想化設定におけるWindowsデスクトップエコシステムによって生み出されるライセンスオーバーヘッドによる)、リモートアクセスのエンドユーザーシステムのデファクトスタートポジションはターミナルサーバー技術を出発点として想定し、ターミナルサービスがシナリオの技術的要件を満たせないことが証明された場合にのみ、より複雑でコストの高いVDIソリューションに移行することです。実質的に、VDIは好ましい方法が不十分だったときにエンドユーザーの仮想化を機能させるためのフォールバック的な力技の手法です。