クラウドコンピューティングによる混乱を乗り切ろう――。昨年のこのコラムでそう書いた。次の2点を指摘した。
(1)クラウドとひとくくりにできないほど、サービスごとの違いが大きい
(2)クラウドを用いたシステム開発と従来のシステム開発は大きく異なる
ところが、思ったほどの混乱にはなっていない。特に(2)によって開発現場に大混乱がもたらされると考えたが、そうはならなかった。
指摘した内容が間違っていたとは思わない。にもかかわらず予想が外れた理由を挙げるとすれば、「RDBの存在が大きかった」ということだろう。
これまでのシステム開発はRDBに大きく依存してきた
なぜ大混乱になると考えたか。前提としたのは、クラウドのデータストアには、RDBではなくKVS(Key-Value Store)が使われるようになるということ。クラウドの特徴の一つはスケーラビリティーであり、その特徴を生かすにはRDBよりKVSの方が有利であるからだ。
RDB主体のシステムとKVS主体のシステムでは、システム開発の進め方が大きく異なる。例えば、KVS主体だと、データ基盤上の制約から実現できない機能があり、要件定義の段階からそうしたことを見極める必要がある。RDB主体では、こうした見極めは通常行わない。
したがって、KVSが使われるようになれば開発現場が混乱するのは間違いない。だが昨年に限っていえば、データストアにKVSが使われるケースは少なかった。特にエンタープライズのシステムでは、クラウドという名のシステムでもRDB主体で作られた。
これは、なぜか。従来のエンタープライズのシステム開発が、RDBに大きく依存してきたからだろう。端的なのが、データの一貫性を保証する方法である。データの一貫性はエンタープライズシステムでは欠かせないもので、たいていの場合RDBのトランザクション機能を利用して実装する。
RDBのトランザクション機能を前提にシステム開発を行ってきたので、RDBを使わないシステムは考えにくい――。これが開発現場の本音ではないだろうか。ほかにも理由はあるが、昨年予想したほどKVSが使われなかったのはこのことが大きいと思う。
注目すべきは「仮想化」と「データ層のスケールアウト」
では、この状況は2011年も変わらないのだろうか。それを説明する前に、改めてなぜクラウドなのかについて少し触れたい。クラウドにはいろいろな見方があるが、ITエンジニアなら技術的な視点で見たい。クラウドと呼ばれているものに含まれる技術によって、何が可能になるのかを考えるのである。注目すべきは二つある。
一つは「仮想化技術」。これにより、システムリソースは固定的で扱いにくいものから柔軟で扱いやすいものになり、リソースの大規模な先行投資が不要になった。ハードウエアの相乗りでコストダウンも可能になった。昨年はこうしたメリットを生かす動きが活発だった。そうなると既存システムが対象になることが多いために、自ずとデータストアは(KVSではなく)RDBとなる。
もう一つは「データ層のスケールアウト技術」である。スケールアウトは以前から行われてきた手法だが、通常のWebシステムを考えたとき、Web層とAP層はスケールアウト構成を採っていても、DB(データ)層はスケールアップというケースが多い。一般的なRDBではスケールアウト構成にするのは難しいのが実情である。クラウドは、この壁を乗り越えた。クラウドに取り組む大きな理由の一つはここにある。