クラウドってなーに?と言うのを今更ながら整理してみる

クラウドを使ったサービスは知っているけど、クラウドが何なのかわからない・・・という人は多いと思う。要は冗長化した複数のハードウェア上で動作しており、今この瞬間にどのハードウェアで動作しているかを意識しないシステムの事だ。理解を難しくしている理由は、どのレイヤーでサービスするかとか、どの物理ハードウェアで動いているかを何処まで意識させるかによって、さまざまな亜種があり、その境界が明確ではない事だ。
まず一つ目の軸として、パブリックよりか、プライベートよりかという話がある。たとえばGoogle App Engine(GAE)はパブリックなクラウドです。GAEは世界中の何処に設置されたハードウェアで動いているのか、ユーザーはまったく意識できません。Windows Azureはもうちょっとプライベートよりです。Azureはハードウェアがアメリカ大陸にあるのか、アジアにあるのか、EUにあるのか、ある程度意識する事ができます。NTTのBiz Cityはさらにプライベートよりです。Biz Cityのユーザーは何処の建物の中で動いているのか意識する事ができます。もっともプライベートよりのクラウドは、ハードウェアを自分で購入して自分で管理します。自分の作ったアプリケーション以外が動く事はないでしょうけれど、複数のハードウェアに冗長化されており、どのハードウェアで動作しているかは意識しないので立派なクラウドです。
二つ目の軸がどのレイヤーでサービスを提供するかです。よりハードウェアに近い方から、HaaS、IaaS、PaaS、SaaSと呼ばれています。HaaSの場合提供するレイヤーはハードウェアです。仮想化されたハードディスクやCPUを提供します。IaaSで提供するレイヤーはOSです。仮想化されたWindowsやLinuxなどの実行環境を提供します。PaaSで提供するレイヤーはミドルウェアです。GAEの用にクラウド固有のミドルウェアを提供する場合もあれば、EC2の様に既存のミドルウェアを提供する場合もあるし、Azureの様に両方を提供する場合もあります。SaaSの場合にはそれ単体でも完成されたサービスを提供します。
この二つの軸に明確な境界線はなく、様々な切り口でサービスを提供しているので「クラウドとはこういうもの」と言う概念をつかみにくいのです。
cloud_map
クラウドにすると何故コストを下げる事ができるのか?
それはハードウェアの稼働率を限界近くまで高める事ができるからです。一般的なサーバーではCPU負荷が一瞬100%になるかもしれませんが、普段はずっと低い状態が続きます。この間に他の処理を動かせば稼働率が高くなります。同じハードウェア価格で、より多くの作業をさせる事ができれば、単価を安くする事ができます。
従来、故障によって停止する確立を下げるには、フォールトレトランスに対応した効果はハードウェアを揃える以外にありませんでした。故障時には他の正常なハードウェアに処理を移動させる事で、安価なハードウェアでも故障により停止する確立を下げる事ができたのです。
ユーザーとしてクラウドを使うメリットは安いだけではありません。一般にIT投資は固定費なのです。それもハードウェアの減価償却がすむ5年後を見据えて、現在必要なスペックよりも遥かに高いスペックのハードウェアを揃えなければなりません。ところがクラウドなら、必要なときに簡単にスペックの高いハードウェアに置き換える事ができるのです。これはIT投資が固定費ではなく変動費になりうる事を意味しています。店舗が増えて売り上げが増えるとIT関連の費用が増えますが、運悪く店舗が減って売り上げが減るときにはIT関連の費用も減るのです。
私自身はクラウドの本命はHaaSやIaaSだと思っています。PaaSやSaaSの多くは提供業者独自の規格に乗っ取ったつくりが多いのです。この場合、独自にアプリケーションを開発しなくてはならないため初期コストが高くつきます。また、業者が撤退すると開発したアプリケーションを捨てるしかありません。その点でHaaSやIaaSは一般的なOS上で動作するため、将来事業者が撤退しても自前のハードウェア上で動かすなど、どうとでも対応を取れるのです。
ですが残念な事に、今のところHaaSやIaaSよりのサービスは出揃っていません。2010年の秋ごろに、各社サービススタートを予定しているようなので、それまで情報収集しながら楽しみに待つ事にしましょう。