古くから、いたるところで使われている仮想化の技術
仮想化技術といえば、最新のコンピューターテクノロジーのように感じますが、実は古くからあるテクノロジーのひとつです。
コンピューター上のリソースを、抽象化して他のリソースのように振舞わせることで、たとえば物理的にはひとつのリソースでも、その上で複数のOSやアプリケーションなどが動作します。
例えば古いパソコンはLinuxで蘇らせることができますが、やはりWindowsもないと業務上不便であるといった場合、またわざわざそのためだけにWindowsマシンを購入するのははばかられる場合、仮想化技術を使ってバーチャルなWindowsマシンを構築し、OSを切り替えて使うことが可能になります。
仮想化は何のために行うか
上記のように、簡単に複数のリソースを活用できると言う利点もありますが、仮想化技術の大きな目標は、仮想化によってその下のレイヤーの技術の詳細を隠すことです。
たとえばOSの上で仮想化を行って複数のアプリケーションを動作させた場合、仮想化技術によってOSの詳細は隠されます。つまりアプリケーションはOSに依存した動作をする必要がなくなり、移植性の高いアプリケーションを開発することができます。また下のレイヤーにあるほうも技術の詳細を公開する必要はなく、相互に干渉することなく運用が行われていくのです。
このように仮想化技術によって、さまざまな優れた開発が行われてきました。
確かに複数のリソースが起動するためある程度のスペックが必要となりますが、必ずしもハイスペックなコンピューター上だけのことではなく、非常に古くから存在しており、有効に使われてきた技術でもあります。
異なる物理的位置に存在するマシンを、あたかも統合したかのように動作する
また仮想化技術の大きな特徴として、物理的に離れた位置にあるマシンを、統合したかのように動作させることができます。
サーバーが物理的に離れた位置に設置されてあっても、統合して仮想化技術によってひとつのシステムとして振舞うことができ、上位レイヤーのシステムから下層を意識することがありません。
この技術のによって大きなシステム構築することが可能になります。
これも一種の技術の隠蔽であり、上位のレイヤーは下位層の詳細を把握しなくとも振舞うことが可能になります。
ビジネスにおける仮想化
仮想化はITのテクノロジーだけでなくビジネスシーンでも使われる用語です。
事務所を構えるかたちの店舗型ビジネスから、インターネット上でバーチャルに展開していくことを仮想化と呼び、リアルなビジネスのシーンでも使われています。
エミュレータの登場
1960年代になると、コンピュータ上にエミュレーターが登場しました。
高価すぎるホストOS上のアプリケーションを小さなシステム上で動作させ、開発や実行などを行うものです。
またエミュレータの登場によって、ハードが開発される前に新しいシステムを試すことができるなど、開発を進めていく上でメリットもたくさんあるのです。
隔離された状態でも使えるハードウェアの仮想化
ゲストOSにハードウェアを割り当てることで、隔離された状態でも動作できるようになり修正をしない状態で動作させることが可能になります。
部分的に仮想化することも
全体を仮想化するのではなく、部分的に仮想化することもあります。
アドレス空間などをハードウェアに依拠して、複数の実態が存在しているかのように振舞うこともできます。これが仮想記憶です。Linuxなどでこの仕組みは使われています。
OSの仮想化
物理的なサーバーをOSのレベルで仮想化して、複数の仮想化サーバーを単一の物理サーバー上で動作させることが可能となります。
ゲストOSとホストOSが同じになります。ゲスト環境で動作させて、独立したシステムが動作しているかのように見えるのです。
アプリケーションの仮想化
アプリケーションの仮想化は、仮想化レイヤーをもうけることによって、アプリケーション自体をカプセル化してOSに依存しない状態を作り上げることです。
問題は、OSによって提供されるランタイムが異なることです。
仮想化レイヤーがファイルやレジストリの操作を吸収し、アプリケーションは物理層にアクセスするのではなく仮想リソースにアクセスしていることになります。
ですがアプリケーション自身は、自分が物理層にアクセスしているという感覚で操作を行えます。
サーバー仮想化
近年欠かせない技術としてサーバーの仮想化があります。
物理的なサーバーは一台しかなくとも、ベースとなるOSに加えて、クライアントとして仮想化ソフトウェアを動かし、その上でゲストOSを動かすことが可能となります。
また、物理的なサーバーはひとつでも、その上に複数台のサーバーが稼動しているかのように仮想的なコンピューティング環境を作り出すことも可能です。
ひとつひとつは仮想マシンとなって、複数のアプリケーションを稼動させることが可能となります。
サーバーの安定のために、1台あたり1アプリケーションを稼動させることもあるでしょう。
そのため、物理的に一台のパソコンの上で複数のOS、さらにはそのOSごとにひとつのアプリケーションを稼動させることができるのです。
ひとつのOSにひとつのアプリケーションを割り当てる意味
なぜ一台のサーバー上で複数のサーバーを稼動させるニーズがあるのでしょうか。
アプリケーションを動かしたいのなら、一台のパソコンの上で複数のアプリケーションを動かしていけばいいと思われるかもしれません。
ですが、開発していく上で、一台のマシンにひとつのアプリケーションだけを動かしたいという要望はあるのです。
例えばバージョン管理。複数のバージョンのテストを平行して行う場合、同じマシンに複数のソフトウェアを入れることはできなくなります。
また稼動の安定面やベンチマークをとる必要もあり、障害が起きたときの切り分けなどの問題もあります。
一台にひとつのアプリケーションを動かすことは、正確なデータを取得したりテストや杯活を行う上で非常に重要となります。
ですが物理的に複数のサーバーをそのためだけに手配することは現実的でなく、そんなときはある程度スペックのあるサーバーを用意して仮想化を行い、仮想サーバーの上で各アプリケーションを動作させるという手段がとられます。
またひとつのサーバーでひとつのアプリケーションを動かすと、マシンスペックを無駄にしてしまうという欠点もあります。
ひとつのサーバーをひとつのアプリケーションが使用していたら、CPUの稼働率はわずか15%程度となります。
それでしたらひとつのハイスペックマシンに複数のサーバーをたてて、複数のアプリケーションを動かしたほうが効率的にもいいでしょう。
大企業が中心となるサーバーの集約に
仮想化技術を使うことで、複数の物理的なサーバーをひとつにまとめることが可能になります。
サーバー統合と呼ばれたり、サーバー集約と呼ばれます。
主にサーバーの数が多い大企業等で使われています。
資産や運用コストの面からも、サーバーを仮想化技術によって集約することによるメリットははかりしれないでしょう。
すぐにサーバーを追加できる
物理的にサーバーを調達するのは時間がかかりますが、仮想サーバーですとすぐに調達できるというメリットもあります。
仮想サーバーであってもあまりに負荷をかけない限りはメインのOSにスペック的な限界がくることもなく、いち早くサーバーを追加して、環境の変化やサービスの拡充に備えることが可能となります。
そのため物理的なサーバーを用意するのに制約のあるベンチャー企業やスタートアップ関連にもサーバー仮想化技術は注目を浴びています。
新しいサーバーを使いすることはすぐに出来ますので、新しい何かを行おうと思ったらすぐに30分ほどの作業時間で追加できます。
これは物理的なサーバーにOSをインストールして行うよりもはるかに時間の節約になります。
昔はメインフレームなどで使われていましたが、今はPCで可能です
昔はメインフレームやハイスペックなUNIXサーバーに使われていた仮想化サーバーの技術ですが、現在はPCサーバーで使われています。
PCサーバーは安価な分、物理的に台数が増えがちで、このサーバー数を減らすことが可能になります。
それによって空調コスト、消費電力、設置スペースなどの省略になり、経費削減にもなりますしエコロジーの観点から見ても優れているでしょう。
そして最大のメリットは、古いバージョンを使えること
たとえば企業内には、ひとつのアプリケーションを大切に使い続けていることがあります。
ですがアプリケーションは古いままでも、サーバーのスペックをあげたいと言う要望が生まれます。
そこで新しいマシンに入れ替えると、古い物理ハードをサポートしていないことがあるのです。
これではアプリケーションが動かない場合があります。
そんなとき仮想サーバーを使えば、古いアプリケーションをできる限り大切にし、会社の資産を有効活用しつつ、サーバーのパワーも引き出し、パフォーマンスが最大限に向上します。
サーバーのダウンにも対応
なんらかのトラブルでサーバーがダウンした場合にも、仮想サーバーでしたらすぐに他のサーバーから再起動することが可能になります。
つまり物理的にほかのサーバーに移植し、そちらで稼動させることが可能となるのでうs。つまりサービス停止などの時間を最大限抑えることが可能になるのです。
複数のサーバーが稼動することでサーバーのシステムダウンを最小限に減らし、また物理サーバーも複数持つことでノンストップのシステムが構築可能となるのです。
今後もこの流れは進んでいくでしょう。物理サーバーは一台で、その上に複数台の仮想サーバーが動いたり、その逆もありえるでしょう。
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments