クラウドを構成する技術
最近ではすっかり一般化した「クラウド」。様々な記事や講演で「クラウドサービスをどのように使うか」という情報が紹介されているが、そのクラウドサービスがどのような技術で構成されているかについては、普段あまり意識しないのではないだろうか。例えば、「クラウドと言えば仮想サーバー」のように理解されている向きも多いが、それだけがクラウドのすべてではない。「クラウドを利用する」側では、その基盤技術にまで踏み込む必要はないかもしれないが、自社のシステムへのクラウド導入を検討する上で、それらの技術がどのようなものかを知っておくことは有用である。今回は、クラウド技術の中でも特徴的な「MapReduce」および「KVS」と「NoSQL」について解説しよう。
「MapReduce」や「KVS」「NoSQL」といった技術は、いわゆる「分散コンピューティング」と呼ばれるものだ。いずれも通常のアプローチでは処理しきれない大量のデータを扱うために考案されたもので、データ処理を複数のコンピュータに分散して実行することによって本来であれば高性能なコンピュータでしか実現できないはずの要求を多数の低性能のコンピュータによって実現することを可能にした。
これが、システムのコスト構造にどのように影響するのか、サーバーの能力とコストの面から考えたい。コンピュータの能力を数値で表すためにはいくつかの指標があるが、ここではCPUのコア数(処理ユニットの数)で比較する。あるメーカーでは、1CPU(4 コア)〜8CPU(32 コア)までのサーバー製品を用意しているが、エントリクラスの4つのコアが搭載されたサーバーは12万円程度であるのに対し、32コアを搭載した上位モデルは400万円程度にまで跳ね上がる(図1)。もちろん、管理機構の違いなど単純なコア数の多少では比較できないが、それでも1コアあたりの金額にして約4倍という価格の差は大きい。
とはいえ、価格差が生じることはやむをえない。一つのサーバーに多数のCPUを搭載すると内部の仕組みが複雑になるため、どうしてもコストが高くなってしまう。それでも、出荷数が多ければ価格低下も期待できるのだが、ハイエンドなサーバーに対する需要はそれほど多く見込めない。一方、構造が単純なエントリクラスのサーバーはそもそも安価に構成しやすい上に、小規模オフィスのファイルサーバーを始め、様々な局面で利用されるため出荷数が桁違いに多い。小規模なメーカーでも参入が容易なために、競争原理が働いて低価格化が進んでいる。そういった要因がこれだけの価格差を生み出しているのだ。
つまり、高性能な1台のサーバーで行っていた処理を、複数のエントリレベルのサーバーで置き換えることができれば、ハードウェアコストを劇的に圧縮できる。これが、現在分散コンピューティングが注目されている理由の一つだ。
もちろん、分散コンピューティングの本来の目的、つまり単体のコンピュータでは到底実現できないようなボリュームの処理を行うこともできる。先ほどの例で言えば、4コアのサーバーを1000台利用することで、4000コア相当のコンピュータに匹敵する性能が得られるということだ。4000コアのコンピュータを入手することが現実的に難しいことを考えると、このクラスの処理を実現するためには分散コンピューティング技術は必須であるとも言える。
(次ページへ続く)