仮想化とは
ソフトウェアで、実在しているように見える状態を再現することです。
なぜ仮想化するのか
昔は物理的にPCを用意し、1台単位でサーバにしていました。
しかし、現在ではインターネットの利用者拡大によって、想像できないほどのスピードでWebの状況が変化しています。
そのスピードに付いていくために、物理的に作業していては、間に合いません。
そこで、簡単にサーバを増やしたり、減らしたりできる、仮想化というアイデアが取り入れられました。
仮想化された環境では、プログラムによって自動化できるのも、大きなメリットになります。
また、PCの性能が上がったこともあり、余剰のリソースを有効活用できるようになりました。
仮想化のタイプ
仮想化にはいくつかタイプがあるようです。
ホスト型
仮想化ソフトウェアをインストールし、その上で仮想マシンを稼働させます。
入っていたOSを「ホストOS」、仮想マシン上のOSを「ゲストOS」と言います。
手軽に使用できますが、ホストOSの処理にリソースを割かれるため、処理速度があまりでません。
例:VirtualBox、Parallelsなど
ハイパーバイザ型
物理ハードウェア上に「ハイパーバイザ」と呼ばれる仮想化を実現するためのレイヤーを作り、その上で仮想マシンを実行します。
ホストOSを必要としないため物理ハードウェアを直接制御することができ、仮想マシンの速度低下を最小限に抑えることができます。
しかし、ハードウェアを完全にエミュレーションする必要があるので、多くの処理が実行されると動作効率が落ちます。
例:Hyper-V、XenServerなど
コンテナ型
「コンテナ」という仕組みで仮想化しています。
コンテナには、アプリケーションやミドルウェアなどが組み込まれていますが、OSはありません。
そのため、コンテナ型に対応したOSが必要ですが、その代わり、動作が軽快で、性能がほとんど落ちないというメリットがあります。
例:Dockerなど
仮想化にまつわるソフトウェアたち
以下の話題のソフトウェアは、実際にどう関わっているのでしょうか。
Vagrant(ベイグラント)
複数のOS、複数の仮想マシンを、簡単に構築・管理・実行することができます。
VirtualBoxを使用すれば、ホスト型として、ゲストOSをいくつも作成できます。
同じ仮想マシンをそれぞれに用意できるので、「あなたの環境では動くけど、私の環境では動かない」ということが起こりません。
Chef(シェフ)
複数台のサーバを同じ環境にできるソフトウェアです。
直接、仮想化とは関係ありませんが、まっさらな仮想マシンにアプリケーションをインストールするときに便利です。
Docker(ドッカー)
コンテナ型の仮想化ソフトウェアです。
Dockerfileと呼ばれるファイルからコンテナを管理・作成することが可能です。
Googleでは、すべてのサービスが、Dockerのようなコンテナ型仮想化技術の上で、実行されているそうです。
まとめ
サーバーは仮想化の進歩によって、気軽に扱えるようになってきました。
それだけでなく、多くの作業が自動化されるようになり、便利になりました。
(それでも、私にとってはまだまだ難しいです)
次は、実践も交えて、学んでいきたいと思います。
では、そんな感じで、またねー。
コメント