今、「クラウド」は確かに旬なキーワードになっているが、その内容はかなり広範囲になってしまっているのでどこをさして使っているのかよく分からない(そもそもどこも指してなくて、イメージで使っている人たちも多い)ので、自分なりにクラウドという単語の中身について整理してみる。
前提としては雲のような巨大なサービスプラットフォームがあって、ユーザはインターネットを返してあらゆる端末からそのサービスを利用することが可能な環境となる。基本的にはその巨大なプラットフォームは、
- 多くのサーバを置くことのできる広大なデータセンタ
- 十分な帯域を持ったネットワーク
- 多数の物理サーバ
- 落ちない/落ちても影響を最小限に抑えられるアーキテクチャ
を持っていることが条件と言える。
クラウドを構成する技術要素としては、仮想OS、クラスタリング、分散並列処理なども入ってくると思うが、これらは規模の大きなインフラを持っているところが今まで培ってきた技術で、Google, Amazon といったところがクラウドをサービス化したのはすごくよく分かる。
大事なのはユーザがどこまでクラウドが提供するサービスに対して制御できるか、がサービスによって結構異なっている。ということ。クラウドサービスの内容をレイヤごとに整理すると、それを使うユーザがどこまで制御することができるのかが分かりやすい。
図に整理してみるとこのような感じ。
OSI参照モデルよりかはシステムを作る時の要素を依存している順に並べて、それをレイヤとした。
クラウドには SaaS, PaaS, HaaS と3つほどサービス提供形態があるが、それぞれ説明してみる。
- SaaS
-
基本的に特定のサービスを利用するだけの形態。いわゆる ASP と同じと思ってよいと思っている。SaaS と ASP は違うと説明しているところもあるが、ユーザから見ればインターネット上でサービスしており、PC依存やネットワーク依存がない環境を提供できていると言う点では変わりはない。
ユーザから見れば使うだけのサービス。
- PaaS
-
開発プラットフォームまで提供されている形態。開発プラットフォームとはある開発言語に特化したサービス提供環境のイメージ。基本的にはユーザがその言語でプログラミングしたソースを PaaS 上に置くことで、インターネット上でサービス提供が可能になる。サーバを買うことなく誰でもインターネット上に web サービスなりを展開することができる。
ただし、ある程度の利用用途を想定して環境が用意されているので、やれることの制約はある。さらに Google App Engine は無料だがストレージ容量、アクリケーション数や PV のリミットがあり、サービス環境的にも制限されている。Force.com は月額課金だが同様に制限がある。
なので、環境としては言語の制約はあれど誰でも自由にサービス提供者になれるのだが、本格的な展開を目指すのであればふさわしくない環境となっている。
- HaaS
-
サーバのOSのレイヤまでユーザが制御することが可能な形態。仮想 OS なのでカーネルをいじることはできないが、root 権限をユーザが持ち専用サーバを持つことが可能になる。しかもいくらでもサーバを立ち上げることが可能。サーバをどのように利用するかはユーザの自由であり、最初からweb-DBのような多層の複数台構成を組んでしまうことも可能だし、クーロンでスクリプトを走らせたりどんなアプリケーションをインストールしてもいい。物理サーバではなく仮想サーバが立ち上がるので、OS 自体の起動は数分で終了する。今までのサーバを買う際の納期やラックスペースや電源の心配がなく、どんどん立ち上げることが可能。
レンタルサーバとは異なるのは敏速なスケーラビリティに対応したサーバの起動環境とストレージや最近ベータ版として提供されたロードバランサーやオートスケーリング機能などの付加的な機能の充実だろう。
レイヤの幅を見るに自由度は HaaS の方があるのだが、結局専用サーバを提供されているのと同じことなので、アプリケーションのインストールから設定などサービスするための構築作業もユーザ自身が行わなくては行けない。また、サーバを運用する責任もユーザ自身になるため、バックアップをどうするか、負荷の検出をどうするか、はユーザが考え、策を投じる必要がある。
そういう意味ではサーバ運用に長けたインフラエンジニアがやはり必要になる。
その点、PaaS はリミットがかかっているがサーバ内の構築や運用を行う必要がないので、インフラ部分の心配はいっさいいらない。
一長一短ではあるが、PaaS と HaaS は巨大なリソースをユーザ自身が利用できて、安くサービスを提供できるという点では、今までとは概念が変わってくるのだと思う。利用用途か自分がどこまで見たいかによって選択するのが現実的なのだろう。ただ、現状では本気でサービスを立ち上げて狙うのであれば必然的に HaaS を選ばざるを得ない状況かと思う。
この新しい概念を理解して利用できるところがこれから新しいネットのプレイヤーとして現れてくるだろうし、既存の環境に埋もれていたエンジニアたちが可能性に満ちた素敵な世界に個人でもチャレンジしていけるようなことにつながっていくのだと思っている。