はじめに
前回は,Iaas(=Infrastructure as a Service)と従来の「専用サーバホスティング」とを比較して,IaaSには「サーバ作成の自由度が高い」「サーバ作成がすぐできる」といった特徴があるということを紹介しました。今回は,なぜIaaSではそのようなことができるのかと,今後のIaaSの方向性について解説します。
前回も紹介しましたが,IaaS以前の「専用サーバホスティング」では,ユーザの要望によってすぐにサーバを用意したり,スペックの異なる多種多様なサーバを用意するのは非常に難しい状態でした。なぜなら,ユーザがすぐに使えるサーバを用意するということは,ユーザに貸し出すサーバを大量に用意しなければなりません。もし,大量にサーバを用意しても,それらが使われなければ提供事業者としては無駄が発生してしまいます。さらに,ユーザが望むスペックごとにサーバを用意した場合,それだけ多くのサーバを用意しなければならないため,さらにサーバ事業者としては無駄が出てしまいます。
このような事から旧来の「専用サーバホスティング」では,すぐに使えるサーバを用意したり,多種多様なサーバを用意することができませんでしたが,これらを可能にしたのが「仮想化」という技術です。IaaSのほとんどは,この仮想化という技術を利用してサービスを提供しています。今回はこの仮想化という技術とはどのような物かについて解説をしていきます。
IaaSを実現する仮想化
仮想化は一般的に「コンピュータシステムの物理リソースを抽象化すること」といった言葉で説明されます。ただ,これだけでは一体何のことを言っているのかわからないので,もう少し詳しく見てみましょう。
パソコンやサーバなどのコンピュータは,CPUやメモリ,ハードディスクなどの物理リソースで構成されています。皆さんもパソコンやサーバを選択するときにCPUやメモリ,ハードディスクの容量を見ると思います。これらの物理リソースは,一度そのような製品を買ってしまった場合,自動的に変更することはできません。メモリを増やす場合はメモリを買ってきてサーバに増設しなければなりませんし,ハードディスクが足らなければ増設する必要があります。また,それらを減らす場合でも同様にメモリを抜いたり,ハードディスクを追加する必要があります。
また,従来のサーバやパソコンの場合1つのハードで複数のOSを同時に実行することはできませんでした,そのため1つのコンピュータでメモリやハードディスクをそれほど使わず,物理リソースに余裕があったとしても,余ったリソースを他のコンピュータに分けてあげることはできません。能力の高いサーバでも,それほど仕事をさせなければサーバに無駄なリソースが発生してしまいます。
これらの問題を解決するのが仮想化技術を使ったサーバの仮想化です。この技術によって,1台の物理サーバの中に複数の仮想化環境を入れることで1台のサーバの上で複数のOSを可動させることができるようになりました。これにより,物理的には1台のサーバですが実際には複数台のサーバが利用できるような状態になります。さらに,このような仮想環境の上で動いているサーバ(=一般的には「仮想サーバ」「仮想マシン」や「VM」と呼ばれています)のスペックは,元々の物理マシン(=一般に「ホストサーバ」「ホストマシン」と呼ばれます)のメモリ容量やCPUのスペックから自由に分配することができます。つまり,ホストマシンの中にある仮想マシンのスペックは均等にしなくても良く,ホストマシンの持っているメモリ容量やCPU能力を自由に分配できます。
図 仮想化の仕組み

ただし1台のマシンに複数のOS環境を同時に走らせるため,同じスペックでも処理能力が非仮想化環境に比べると性能が落ちます。従来の仮想化技術では,極端に性能が落ちていたので,なかなか実用では使えませんでしたが,最近ではCPUレベルで仮想化支援技術が普及するなどCPUの性能向上や,メモリが安くなったこともあり仮想化技術を使ったサーバ提供でも実用に耐えられるレベルのサーバを提供できます。サービス提供者のポリシーや提供するスペックによっても異なりますが,1台のホストマシンの上で数十台の仮想サーバを動かしてもとくに問題はありません。
このように仮想化技術を使うことで1台のホストサーバの上で数十台の仮想サーバを立ち上げることができますし,提供するサーバのスペックも自由に設定できます。ユーザが急にサーバを増やしたい場合でも1台のホストサーバで,数十台の仮想サーバを提供できますし,利用者のサーバのスペックを変更したい場合でも物理サーバのよりも用意に変更できます。仮想化技術の進歩によって,数十台をスケールアウトさせるような構成が可能になったといえるでしょう。
仮想化の制約
ここまで「仮想化技術」のメリットを見てきましたが「仮想化技術」を使ったIaaSは良いことだけではありません,IaaSと仮想化の制約についても解説しておきます。
まずIaaSの場合,同じサーバ1台に複数のユーザが入る可能性があります。1台のサーバに複数人のユーザが入るので,自分以外のユーザがそのサーバの中で重たい処理を走らせた場合,自分の仮想サーバのパフォーマンスに影響が出る可能性があります。サービス提供者によっては,できるだけパフォーマンスが均等になるように工夫をしているところもありますが,それでもパフォーマンスに影響がでることも考えられます。
次に前述した通り,仮想化を行ったサーバの場合物理サーバと同じスペックでも性能が落ちるということがあります。それほど,大きなスペックのサーバであれば許容できる範囲だと思いますが,たとえば,最近ではPCI-Expressに装着する高速なSSDを搭載したサーバなどパフォーマンスが必要なサーバが出てきていますが,単に仮想化するだけで性能が劣化します。このように安定してパフォーマンスをサーバに求めたり高機能のサーバが欲しい場合は物理サーバを利用したほうが良い場合もあります。
今後のIaaSの傾向
ここまでIaaSの特徴と仮想化について見てきました。最後に今後のIaaSの方向性を見ていきたいと思います。まず,今までのIaaSの特徴を見てみると,サーバ本体の柔軟性を上げる機能が多く見られました。たとえば,サーバの台数を増やすことでシステム全体の機能をあげる「スケールアウト」や,サーバの性能を上げる「スケールアップ」のようにサーバの性能に関する事が中心です。今後のIaaSは,もう少しネットワークについても仮想化が進んでいくと思われます。
今のIaaSを見ていると,サーバの仮想化は十分なような気がしていますが,ネットワークやサーバ構成について,もう少し自由度を持って構成できる所が少ないような気がします。
たとえば,Webサーバとデータベースサーバを接続する場合,現在のIaaSではそれらを接続するだけでも面倒な作業が発生いたします。これらを簡単に接続できるようなユーザインターフェースと仮想的なネットワーク機器を提供すれば,利用者としてはうれしいでしょう。
最後に物理サーバとの接続です。仮想化技術によって「スケールアウト」や「スケールアップ」など様々なことが実現できましたが,一方でまだ物理サーバには仮想サーバよりもパフォーマンスが高い場合や長期的に使えばIaaSよりも低コストで利用できるという利点があります。全てをIaaSの上で利用する仮想サーバを利用するよりも,場合によっては物理サーバを利用したほうが良い場合もあります。
たとえば,フロントのWebサーバはIaaSで提供して,ローカル側のデータベースサーバはSSDを搭載したサーバを利用すれば,パフォーマンスが高いシステムができます。今後のIaaSには物理サーバとの接続が求められると思います。
さて,ここまでIaaSの特徴などを見てきました。次回はPaaSについて解説をいたします。
まずは,Windows Azure Platformを無料で試すためのアカウントを取得しましょう。
さらに詳しい技術情報はこちらから。