図5●コスト面の問題と現場の工夫
図5●コスト面の問題と現場の工夫

 パブリッククラウド利用の目的として、最も典型的なのがコスト削減だろう。ただしパブリッククラウドを利用することによって、コストをぎりぎりまで切り詰めていこうとすると、やっかいな問題に直面する。取材で浮かび上がったのは、「ピークに合わせたリソースを確保したままになる」「ベストなクラウドサービスが短期間で入れ替わる」「クラウドサービスが過剰品質である」という三つの無駄である(図5)。これらがコスト削減の効果を妨げる。

 これらの無駄を取り除くにはどうしたらよいのか。以降で一つずつ、現場の工夫を見ていこう。

仮想マシンのアイドル時間をなくす

 電化製品を使い終わったらすぐスイッチを切るのは、省エネの基本。同じことは、パブリッククラウドの利用についてもいえる。パブリッククラウドでは、処理負荷の増加に合わせてリソースを柔軟に増やせる。例えばAWSでは、1時間刻みの課金メニューを選ぶことができる。必要な分だけリソースを使える望ましい環境といえるが、使っただけシビアに課金される。仮想マシンが起動してから1時間を1秒でも過ぎれば、2時間分の料金が発生する。そのときすでに処理が終わって“アイドル状態”になっていたとしたら、1時間分の料金はまったく無駄なコストということになる。

 料理レシピサイトを運営するクックパッドは以前、この問題に直面していた。同社は食品メーカーや食品流通業などの法人顧客向けに、一般利用者によるレシピ検索のログ分析サービス「たべみる」を提供している。たべみるでは過去1年間の検索ログデータを用いて、例えば「鍋」と組み合わせて検索された食材のキーワードを、月別/週別、地域別に分析できる。法人顧客はこうして分析した情報を、商品の開発や需要予測などに生かす。

 このたべみるのサービスやサイトのアクセスログ分析のために、クックパッドは毎日数回にわたり、検索ログやアクセスログのデータ加工を行う。従来はそのたび手動でAWSの仮想マシンを5~30台立ち上げ、Hadoop(EMR)による分散処理を使い、データ加工のバッチ処理を実行。その後、終わる頃を見計らって状況を確認し、仮想マシンをシャットダウンしていた。

図6●バッチ処理におけるコストの無駄をなくす
図6●バッチ処理におけるコストの無駄をなくす
時間制の従量課金を行っているクラウドサービスでは、仮想マシンのアイドル時間に無駄なコストが発生する。クックパッドは自作のスクリプトによって、仮想マシンのアイドル時間をゼロにしてコストを削減した
[画像のクリックで拡大表示]

 ここで、「立ち上げからバッチ処理の実行、シャットダウンまでの管理作業は1分1秒を争う」(マーケティング支援事業部 商品グループ 佐々木達也氏)。アイドル状態の時間によって、仮想マシン5~30台分の無駄なコストが発生するかもしれないからだ。1回当たりせいぜい数千円ではあるが、「毎日積み重なると大きなコストになる」(佐々木氏)。さらに管理作業の手間も大きかった。

 クックパッドは、Rubyのスクリプトを自作し、この問題を解決した(図6)。自社の管理サーバーでスクリプトを実行し、AWSのAPIを通じて、仮想マシンの起動からバッチ処理の実行、シャットダウンまでのジョブ実行を自動化したのである。これにより仮想マシンのアイドル時間をなくし、無駄なコストの発生を防いだ。