パッケージ製品を中心に事業展開を行う国内の有力ソフトウェアベンダによって結成され、日本発のアプリケーションソフトを提供する取り組みを進めているMIJSでは、今回クラウド上でのエンタープライズアプリケーション開発の手法についての検証を行った。セッションでは、実際に複数のクラウドプラットフォームに対してNoSQLによる開発を行い、その結果得られた成果に関する報告が行われた。
4つのクラウドプラットフォームでNoSQLのアプリケーション開発を検証
冒頭で報告に立ったMIJS 製品技術強化委員会 小野 和俊氏は、「これまでのクラウド上でのエンタープライズアプリケーション開発には、2つの選択肢がある。1つはRDMSで、これを使えば今まで通りの開発手法が使える。しかし、クラウドならではのコストや分散体制のメリットを100%活かそうとするなら、やはりNoSQLを活用することがキーになってくる。そこで今回は、エンタープライズアプリケーションを、あえてNoSQLの制約のもとで作成したらどうなるかを検証した」と語った。
実際の検証では英会話の講師予約システム作成を通じて、ロック制御、トランザクション、読み取り一貫性の3項について検証を行った。使用されたプラットフォームは、Windows Azure、Google App Engine、Force.com(※注)、Amazon Web Servicesの4つである。これらの検証結果の発表では「フレームワークを使うことで、実装に頭を悩ませることなく本来必要な対人間のインターフェイスに注力できる。またKVSだからと肩肘を張らず、頭を柔らかくして必要な機能をどんどん取り込んでいこう(Google App Engine)」、「簡単にアプリケーションを作成できる機能が満載されている。MVCフレームワークを装備してカスタマイズ性も高く、生産性も高いことを実感した(Force.com)」といった前向きな声が聞かれた。
今回使用した4つのクラウドの中で、Force.comについてはNoSQL系のストレージを提供していません。そのため、Force.comのみNoSQLを使わずにアプリケーションを構築しています。
クラウドのメリットを享受するには、あえてNoSQLで開発する試みが必要
結果発表を終えた小野氏は、「ここではエンタープライズアプリケーション開発で重要な3つの項目に絞って検証を行ったが、結論としてはひと通り全部できることがわかった。今後皆さんがクラウドのアプリケーション開発を手がけていく際に、エンジニアも会社もRDBMSでの開発スキルをリセットするのには抵抗があると思う。その点で、今回の検証ではRDBMSがあるから単にそれを使うという方向におちいるのではなく、NoSQLでもその気になって工夫をすれば、充分にエンタープライズアプリケーション作成は可能だというサンプルを示せたと自負している」と語った。
また小野氏は、コスト面でのメリットも指摘する。「分散体制でのストレージになぜNoSQL系のストレージが使われているのかには、それなりの理由がある。例えばコスト1つ見ても、RDBMS と比べてGBytes単位当たりのコストが大きく抑えられる。こうしたクラウドのメリットを享受していくためにも、RDBMSならば問題なくできると終わらせず、あえてNoSQLで工夫していく姿勢が大切だ」。
そのための重要なキーワードの1つに、小野氏は「非正規化」を挙げる。例えばクラウドには1つのテーブル内ならばトランザクションが保証されるという特性があるので、クラウドの世界のデータベース設計では、いかに非正規化を使っていくかがポイントになってくるという。もう1つは、NoSQLにはRDBMSとは異なるトレードオフのオプションが用意されているので、それをいかに活用していくかが大事だ。
最後に小野氏は「NoSQLは排他制御が難しいとか、読み取り一貫性に難があるといった脊髄反射的な拒否感で選択肢を消してしまうことは、それだけでクラウドを使うメリットの何割かを減らしてしまうことになる。クラウドネイティブなストレージをフル活用しながら、かつ必要に応じてRDBMSを使い分けていけば、クラウドにふさわしいエンタープライズアプリケーションが開発できるというのが我々の今回の結論だ」と述べてセッションを終えた。