仮想環境に触れる機会が増えてきたので、自分なりに解釈したことを絵化していきたいと思います。
ちがう場合は指摘していただければありがたいです。
さて、コンピュータにおける仮想化とはそもそもどういうことなのでしょうか。
Wikipediaには以下のように書いてありました。
仮想化(英: Virtualization)とは、コンピュータにおいてリソースの抽象化を指す用語である。「リソースの物理的特性を、そのリソースと相互作用するシステム/アプリケーション/エンドユーザーから隠蔽する技法。単一の物理リソース(サーバ、OS、アプリケーション、補助記憶装置など)を複数の論理リソースに見せかけたり、複数の物理リソース(複数の補助記憶装置群やサーバ群)を単一の論理リソースに見せかけたりできる」という実用的定義がある[1]。また、単一の物理リソースを何らかの特性の異なる単一の論理リソースに見せかけることもできる。
わかるような、わからないような・・
リソースの抽象化とはどういうことでしょう?
抽象化とは何か、またまたWikipediaで見てみます。
抽象化(ちゅうしょうか)とは、思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。抽象化において無視することについては捨象するという。従って、抽象と捨象は盾の両面といえる。
つまり、コンピュータのリソースを対象から注目すべき要素を重点的に抜き出して他は無視する方法を仮想化という。。
うーん、なんとなくわかるけれど利点が見えづらい。
というわけで、少し現実世界にあるもの一例にとってみます。
例としてあげるのは・・ ラーメンです。
僕はラーメンが好きです。
特に北海道に行った時に 有名ラーメン店「すみれ」で食べた味噌ラーメンは濃厚でとっても美味しかったー。
さてさて、このすみれの味噌ラーメンはもちろん北海道の「すみれ」に行かないと食べることは出来ません。また、北海道に行ったとしてもうどん屋や別のラーメン店に入ってしまうと 当然すみれのラーメンなんか出てこないです。
つまり、すみれのラーメンを食べるためには、
北海道の - 札幌にある - すみれに行って - 味噌ラーメンを注文し、 - ラーメンを食べる
という段階を踏む必要があります。
さて、これを仮想化・抽象化しようとすると・・。
「対象から注目すべき要素を重点的に抜き出して他は無視する方法」が抽象化ということなので、ここで注目すべき要素とは何か。そう、「すみれのラーメンを食べること」ですね。
別に北海道の札幌のすみれのお店に行かなくても、すみれのラーメンを食べることができれば良いのです。つまり、どういうことかというと・・。
カップラーメン化です。
|
仮想化=カップラーメン化 |
はい、これでわざわざ北海道にいかなくてもすみれのラーメンをすぐ食べることができるようになりました。つまり、「地理的(物理的)制約などは無視して、すみれにあるラーメンを重点的に抜き出した」ということでしょうか。
コンピュータの仮想化もいわゆる、カップラーメン化。
対象となる部分は、OSであったりアプリケーションであったり多岐にわたるけれども、要は重要なリソース部を抜き出して、それ以外の依存度を減らすこと。
JAVAやFLASHはプラグインを入れさえすれば、WindowsやMac、スマートフォンでも同じようにアプリケーションは動くし(アプリケーションの仮想化)、GoogleAppなどのクラウドはハードウェアごとまるまるカップラーメン化して、ネットさえつながれば非力なマシンですら同じようにサービスを受けることができるようになっています。
今現在 仮想化といえば、OSの仮想化を指すことが多いですけれど、
カップラーメンとして考えてみれば おのずとメリット・デメリットがみえてくるのではないでしょうか。