2012年1月25日水曜日

クラウドとはなんぞや


ちょち最近クラウドについての話題がGoogle+で出てくるんで書いて見た。
長文すまん。

■仮想化の流行
ここではCPUの仮想化、サーバの仮想化に絞って説明する。簡単に言えば「一つの物理サーバ上で複数のOSを同時に動かす」事である。この仮想化が流行ったのは以下の理由だ。

  • CPUの性能向上手段がマルチコアに切り替わった
  • 従来のプログラムの多くがマルチコアを活用しきれない

今までのCPUはコア自体を改善する事で性能向上を果たしてきた。その為多くのプログラムは1コアを前提として作成された。それでもCPUのコア性能がどんどん改善された為プログラムを放置しておいてもプログラムの処理速度は向上していった。しかし最近になりCPUのコア改善によるCPUの性能向上が頭打ちになった為、CPUは出来るだけ沢山のコアを詰め込む事で性能を向上させる手段に出た。多くのプログラムはマルチコアを想定して作られていないので、沢山あるコアを活用出来ず、プログラムの処理速度は向上しなくなってしまった。簡単に言えば8コアあっても1コアしか活動していない状況になってしまったのだ。
8コアあっても1コアしか活動してないのであれば非常にもったいない。元が取れていない。

そこで従来のサーバを仮想化し、8コアの物理サーバに8個の仮想サーバをぶち込めば、CPUコア全てを使い切る事が出来る、と考えて始まったのが仮想化の流行である。更に言えば8個の仮想サーバはそれぞれ役割が違うだろう。それぞれの仮想サーバが高い処理能力を必要とする時間がずれていれば、8コアじゃなくて4コアでも充分かもしれない。であれば8コアの物理サーバに16個の仮想マシンを入れる事も可能である。
極端な話を言えばそれまで100台の物理サーバで運用していたサーバ群を仮想化して5台の物理サーバ上に集約する事も可能な訳だ。

■過剰集約問題

しかし場合に依っては「100台のサーバ群の総合性能≒5台のサーバ群の総合性能」なパターンが生まれる事がある。生まれる理由としては以下の様なモノが考えられる。

  • 無計画な集約
  • 仮想化環境への追加投資が出来ない為の過剰集約

これを防ぐには以下の対策が必要である。

  • 最大負荷時を想定した仮想化環境の準備
  • 仮想化環境利用の制限

この様な対策をする位であれば仮想化による集約を行わない方が良い。前者の対策をとる場合、仮想化対象の物理対象の総費用より仮想化環境構築用のサーバの総費用の方が高くなる可能性すらある。

■余剰リソース問題
過剰集約が怖いので少し余裕を見て10台の物理サーバを仮想化し5台のサーバに集約したとする。が、しかし予想以上に仮想サーバは利用されず効果な仮想化用物理サーバが遊んでしまい投資コストの回収が出来なく成ってしまう。

※投資コストの回収・・・高いモノを購入した後それをシコタマ使って元を取る事。投資コストが回収出来ないといった場合、それは高いモノを買ったはいいけど余り使ってない状態になってしまう事。

■仮想化からクラウドへ
そこで以下の様なパターンが生まれてくる。
社内のサーバの仮想化による集約は成功した。しかしリソースが余っている。もったいない。何かいい方法はないか
まてよ?この余剰リソースを外部に有料で貸しだそうか。そうすればサーバの稼働率も上がって投資コストも回収出来る上に儲かるぞ
まてよ?儲かるんであれば大規模な仮想化環境を用意してその上の仮想リソースを販売すればこれはビジネスになるんじゃないか?
しかも利用者は、必要な時に必要なだけのリソースを私から借りればいい。初期コストはゼロだ。
 これを実践したのがクラウドサービスである。

■クラウドの境界線
日本国内では「仮想化すればクラウド」と誤認される事、誤認させる記事や情報が多いが、仮想化は飽くまでクラウド実現の一要素に過ぎない。仮想化とクラウドは別ものである。具体的に言えば以下の通りだ。

・仮想化用の物理的サーバを保有或いは確保した時点でそれはもうクラウドではなくなる。


「本当のクラウド」の利用者は自分達で物理サーバを用意する事はない。つまりこの時点で国内で推進されようとしている「自社内に作成するプライベートクラウド」は否定される訳だ。

・必要な時に必要なだけリソースを借り、不要な時は不要なリソースを捨てる事が出来、そしてやめたい時は即座にやめる事が出来なければクラウドではなくなる。


この時点で課金単位が月次、週次、日次であるサービスは否定される。人間の生活サイクルを考えた場合サーバの負荷の変動は一日毎にサイクルしていくだろう。であれば課金単位は時間単位であるべきである。究極の所、理想は秒単位であるが手間を考えたらやはり時間単位に落ち着くだろう。
同時に時間単位課金であれば、リソースを借りる速度(申し込みしてから実際にリソースが渡されるまでの時間)が1時間以下である必要がある。「今日申請したら明日利用出来ます、来週から利用出来ます、来月から反映させます」なぞというのは問題外だ。

仮想化ではこの様な事が出来ない。
仮想化によるサーバ集約だけではここまでは出来ない。
プライベートクラウドではこれを実現出来ない。
つまりここクラウドの境界線である。

■クラウドの真髄
イノベーションとはそれまで出来なかった事が出来る様になる事である。世に言うイノベーションを例に挙げると例えばテープに対するCD、CDに対するMP3とか。
例えばCDはそれまでテープでは不可能だった瞬時の頭出し、精確な曲送りを可能にした。
例えばMP3はそれまでCDでは不可能だった自由な曲の組み合わせ、移動の簡単さ、バックアップの簡単さ、再生の簡単さ、保存の簡単さを実現した。

ではクラウドがイノベーションである点は以下の通り。

  • 従来では保持出来なかった様なリソースを利用する事が出来る
  • 不要なリソースを保持する必要がない

どちらも従来の社内サーバ環境で実現する事は出来ない。同時に仮想化による集約を行っただけでは実現する事が出来ない。
クラウドでなければこれらのメリットをもたらす事が出来ないのだ。

例えば分散処理を考えてみよう。ある会社で給与計算が分散処理で行えたとする。ここではAmazon EC2をモデルに話をする。

さて給与計算は基本的に一ヶ月に一回だ。
なので30日中「給与計算をする為に必要なリソース」は一日だけであるとする。であれば残り29日間は給与計算の為のリソース(給与計算をする為のサーバ)を持っている必要はない。つまり費用はゼロ円である。

「さーて今月は特に急いでないから計算に一日かかってもいいや」と成れば、「性能は低いが一時間辺りの利用料も格安のクラウド上の仮想マシン」を一日借りて計算すればいい。
「やばい!明日給与支払いなのに計算してねぇ!後12時間しかない!ええい多少金かかってもいいから確実に終わらそう!」と思えば「性能は高いが一時間あたりの利用料金も高いクラウド上の仮想マシン」を複数借りて一期に分散処理してしまえばいい。

勿論給与計算が終わったらそれらのリソースを解放する。そうすれば再びコストはゼロだ。
そしてこのコストがゼロに出来る、まぁ精確に言えば不要な時はコストを極小化出来る、という事がクラウド最大のメリットだと思う。これは従来の物理サーバ購入では絶対に実現しえない事である。

■クラウドの定義
最後にまとめ。クラウドと呼ぶに値するサービスが備えるべき条件

  • 初期費用がゼロである
  • 利用した分だけ課金される(金さえ払えば無尽蔵にリソースを利用出来る)
  • 下院単位は最低でも時間単位である
  • 利用者からみて無尽蔵に見えるだけのリソースを確保出来ている
  • リソースの要求をしたら遅くとも1時間以内に利用する事が出来る

と言った所ですか。

コメントを投稿