この名言にかなう為に日々色々学ぶ日々(多分)。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台のサーバ群の総合性能」なパターンが生まれる事がある。生まれる理由としては以下の様なモノが考えられる。仮想化環境への追加投資が出来ない為の過剰集約これを防ぐには以下の対策が必要である。制限この様な対策をする位であれば仮想化による集約を行わない方が良い。前者の対策をとる場合、仮想化対象の物理対象の総費用より仮想化環境構築用のサーバの総費用の方が高くなる可能性すらある。過剰集約が怖いので少し余裕を見て10台の物理サーバを仮想化し5台のサーバに集約したとする。予想以上に仮想サーバは利用されず効果な仮想化用物理サーバが遊んでしまい投資コストの回収が出来なく成ってしまう。※投資コストの回収・・・高いモノを購入した後それをシコタマ使って元を取る事。投資コストが回収出来ないといった場合、それは高いモノを買ったはいいけど余り使ってない状態になってしまう事。■仮想化からクラウドへそこで以下の様なパターンが生まれてくる。社内のサーバの仮想化による集約は成功した。リソースが余っている。何かいい方法はないかまてよ?この余剰リソースを外部に有料で貸しだそうか。すればサーバの稼働率も上がって投資コストも回収出来る上に儲かるぞまてよ?儲かるんであれば大規模な仮想化環境を用意してその上の仮想リソースを販売すればこれはビジネスになるんじゃないか?しかも利用者は、必要な時に必要なだけのリソースを私から借りればいい。これを実践したのがクラウドサービスである。日本国内では「仮想化すればクラウド」と誤認される事、誤認させる記事や情報が多いが、仮想化は飽くまでクラウド実現の一要素に過ぎない。仮想化とクラウドは別ものである。具体的に言えば以下の通りだ。・仮想化用の物理的サーバを保有或いは確保した時点でそれはもうクラウドではなくなる。「本当のクラウド」の利用者は自分達で物理サーバを用意する事はない。この時点で国内で推進されようとしている「自社内に作成するプライベートクラウド」は否定される訳だ。・必要な時に必要なだけリソースを借り、不要な時は不要なリソースを捨てる事が出来、そしてやめたい時は即座にやめる事が出来なければクラウドではなくなる。この時点で課金単位が月次、週次、日次であるサービスは否定される。人間の生活サイクルを考えた場合サーバの負荷の変動は一日毎にサイクルしていくだろう。あれば課金単位は時間単位であるべきである。究極の所、理想は秒単位であるが手間を考えたらやはり時間単位に落ち着くだろう。同時に時間単位課金であれば、リソースを借りる速度(申し込みしてから実際にリソースが渡されるまでの時間)が1時間以下である必要がある。「今日申請したら明日利用出来ます、来週から利用出来ます、来月から反映させます」なぞというのは問題外だ。仮想化ではこの様な事が出来ない。仮想化によるサーバ集約だけではここまでは出来ない。プライベートクラウドではこれを実現出来ない。ここクラウドの境界線である。■クラウドの真髄イノベーションとはそれまで出来なかった事が出来る様になる事である。世に言うイノベーションを例に挙げると例えばテープに対するCD、CDに対するMP3とか。CDはそれまでテープでは不可能だった瞬時の頭出し、精確な曲送りを可能にした。MP3はそれまでCDでは不可能だった自由な曲の組み合わせ、移動の簡単さ、バックアップの簡単さ、再生の簡単さ、保存の簡単さを実現した。クラウドがイノベーションである点は以下の通り。従来では保持出来なかった様なリソースを利用する事が出来る不要なリソースを保持する必要がないどちらも従来の社内サーバ環境で実現する事は出来ない。同時に仮想化による集約を行っただけでは実現する事が出来ない。クラウドでなければこれらのメリットをもたらす事が出来ないのだ。分散処理を考えてみよう。ある会社で給与計算が分散処理で行えたとする。EC2をモデルに話をする。給与計算は基本的に一ヶ月に一回だ。30日中「給与計算をする為に必要なリソース」は一日だけであるとする。あれば残り29日間は給与計算の為のリソース(給与計算をする為のサーバ)を持っている必要はない。「さーて今月は特に急いでないから計算に一日かかってもいいや」と成れば、「性能は低いが一時間辺りの利用料も格安のクラウド上の仮想マシン」を一日借りて計算すればいい。「やばい!明日給与支払いなのに計算してねぇ!後12時間しかない!ええい多少金かかってもいいから確実に終わらそう!」と思えば「性能は高いが一時間あたりの利用料金も高いクラウド上の仮想マシン」を複数借りて一期に分散処理してしまえばいい。給与計算が終わったらそれらのリソースを解放する。すれば再びコストはゼロだ。このコストがゼロに出来る、まぁ精確に言えば不要な時はコストを極小化出来る、という事がクラウド最大のメリットだと思う。これは従来の物理サーバ購入では絶対に実現しえない事である。初期費用がゼロである利用した分だけ課金される(金さえ払えば無尽蔵にリソースを利用出来る)下院単位は最低でも時間単位である利用者からみて無尽蔵に見えるだけのリソースを確保出来ているリソースの要求をしたら遅くとも1時間以内に利用する事が出来ると言った所ですか。