特集
» 2013年12月16日 18時00分 UPDATE

【特集】クラウドOSを探る:“クラウドOS”とは、何なのか? (1/2)

「クラウドOS」という言葉が最近よく聞かれるようになった。CloudStackやOpenStackなどのクラウド基盤ソフトウェアが「クラウドOS」と呼ばれるケースが多くなる一方で、マイクロソフトは「クラウドOSビジョン」で同社の戦略を語り、ヒューレット・パッカード(HP)は「HP Cloud OS」を発表している。では、「クラウドOS」とは何なのだろうか。本記事ではその定義と現在の潮流を紹介しながら、その本質を探っていく。

[新野淳一,Publickey]

 そもそも、“クラウド”の定義は「NIST(National Institute of Standards and Technology、米国立標準技術研究所)」による定義が一般的なものとして定着している。

 一方で「クラウドOS」の定義として定着しているものはなく、その示す意味や範囲には幅があるようだ。ここではいわゆる「クラウドOS」とはどういうものなのか、一般的だと思われる定義を紹介していこう。

従来のOSはクラウドでも変わらない役割を持つ

 WindowsやLinux、Solarisなどの従来のOS(Operating System)は、プロセッサーやストレージなどのハードウェアリソースを抽象化し、APIとしてアプリケーションから利用可能にすることなどが主な役割とされている。

図1:従来のOSはハードウェアを抽象化し、アプリケーションにAPIを提供する 図1:従来のOSはハードウェアを抽象化し、アプリケーションにAPIを提供する

 クラウドOSとは何かを考えるとき、まずこの既存のOSの役割になぞって考えてみよう。

 従来のOSが備えるハードウェアを抽象化する機能は、「異なるハードウェア構成のコンピューターであってもアプリケーションを変更することなく実行できる」という利点を生み出している。何年も前の古いマシンのために開発されたアプリケーションが、プロセッサーが64ビットになりハードディスクもSSDに代わった最新ハードウェアでも実行可能なのは、OSによってハードウェアが抽象化され、アプリケーションが利用するAPIの互換性が保たれているおかげだ(もちろんそれは必要条件であって十分条件ではないが)。

 クラウドOSが抽象化すべきハードウェアとは何かを考えると、データセンターを構成する多数のサーバー群やストレージ群、ネットワーク機器群などだと言えそうだ。また、クラウドOSのAPIを利用するのはクラウドアプリケーションとなるだろう。

 クラウドOSの実装例として、OpenStackを取り上げてみる。下記はOpenStackのWebサイトに掲載されている図だ。これによると、OpenStackは「Standard Hardware」を抽象化し、クラウドとして「Compute」「Storage」「Networking」を提供。アプリケーションに対してAPIを提供しているように見える。

図2:OpenStackのアーキテクチャを示す図 図2:OpenStackのアーキテクチャを示す図

 果たして現実はどうか。クラウドにアプリケーションを展開した状態を図に描いてみると、現実のクラウドの構造が見えてくる。

 1つ目のポイントは、クラウドアプリケーションと呼ばれるものが1つの実体を持つのではなく、複数のWebサーバー、ミドルウェア、データベースといったソフトウェア群から構成される、分散システムである点だ。

 例としてWebサーバーとミドルウェア、バックエンドデータベースで構成される、ある業務アプリケーションを考える。これをクラウドに展開し、Webサーバーとミドルウェアは負荷に応じてスケールアウトし、データベースはリードレプリカを作って可用性を高めるようにした。

図3:クラウドにアプリケーションを展開した状態 図3:クラウドにアプリケーションを展開した状態

 2つ目のポイントは、クラウドアプリケーションたる分散システムを構成するWebサーバーやミドルウェアなど、クラウドアプリケーションが動作するためのAPIを提供しているのが、WindowsやLinuxといった従来のOSである点だ。

 と同時に(ある意味当然ながら)、従来のOSはWebサーバーやミドルウェアといったアプリケーションに対してハードウェアを抽象化する役割も果たしている。

 つまりクラウドであっても従来のOSは使われており、引き続きハードウェアの抽象化とAPIを提供する役割を果たしているということだ。クラウドOSは従来のOSを置き換えるような存在ではなく、従来のOSとは別のところで、別の役割を果たしていることになる。

 これは現在のクラウドの基本的な構造として、OpenStackでもCloudStackでも、基盤にOpenStackが採用されているHP Cloud OSでも、VMware vCloud Suiteでも変わらない。現在の一般的なIaaS型クラウド基盤全てに共通している。

 では、クラウドOSはどこでどんな役割を果たしているのか。

クラウドOSの基本的な役割はプロビジョニング

 クラウドの大きな特徴の1つは、仮想サーバーや仮想ストレージ、仮想ネットワークなど、コンピューティングリソースのほとんど全てが仮想化されている点にある(ただし仮想化は必ずしもクラウドの必要条件ではない。仮想化よりも自動化やSoftware-Defined化の方が本質的に重要であるが、そこは本稿の主題から外れるため、ここでは分かりやすく「仮想化」という用語を使わせていただく)。

 これら仮想化されたリソースは、クラウドのコンソールからボタンを押したり、APIをコールすることで即座にユーザーに提供される。

 例えば、クラウドのコンソールから「2コアのプロセッサーで8GBメモリのサーバーを3台、それぞれ2テラバイトのストレージを持ち、同一サブネット上に展開」と設定してボタンを押せば、数分後には設定通りのサーバー、ストレージ、ネットワークが提供される。

 いわゆるクラウドOSと呼ばれるIaaS型クラウドのための基盤ソフトウェアは、全てこの仮想化されたリソースを提供する仕事をしている。こうしたコンピューティングリソースの割り当てを「プロビジョニング」という用語で呼ぶことがある。

 つまり、現時点でのクラウド基盤ソフトウェア、いわゆるクラウドOSの基本的な役割は、プロビジョニングを実現することにあるのだ。

図4:一般的なクラウドOSの構造 図4:一般的なクラウドOSの構造

 クラウドOSはプロビジョニングを実現するため、仮想サーバーの生成と管理、仮想ストレージの生成と管理、仮想ネットワークの生成と管理機能などを備えている。

 そしてユーザーはクラウドの管理コンソール経由でクラウドOSに対してリクエストを出すか、もしくはAPIを直接叩くことでプロビジョニングを指定することができるのだ。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。