Ruby on RailsのPaaS「Heroku」の課金の仕組みをめぐり、新興のネット企業が「Herokuにだまされた」と訴えた。これに対しHerokuは2月15日、顧客に対する説明が不十分だったと問題を認め、改善に努めると表明している。
【追記】この件に関しては、その後もHerokuとRap Geniusとの間でやり取りがなされました。Heroku側の説明については、下記の続報で紹介しております。こちらもご確認ください。
http://www.atmarkit.co.jp/ait/articles/1302/19/news109.html
Ruby on RailsのPaaS「Heroku」の課金の仕組みをめぐり、新興のネット企業が「Herokuにだまされた」と訴えている。Herokuは2月15日、顧客に対する説明が不十分だったなどの問題を認め、改善に努めると表明した。
2月14日に「Herokuの醜い秘密」というブログを掲載して問題を提起したのは、急成長中の新興企業Rap Genius。これまでHerokuに月額2万ドルもの料金を払いながら、そのサービスには満足していたという。
ところが10日ほど前、JavaScriptの問題が発生したためさまざまなベンチマークテストを実施したところ、HerokuおよびHerokuのパートナーであるNew Relicから報告される数字との間に大きな開きがあることが分かった。例えば、静的ページの平均レスポンスタイムは、Herokuの報告では40msだったのに対し、Rap Geniusのツールでは6330msだった。
Herokuのエンジニアはこの理由について、「リクエストはdynoレベルで順番を待ってから迅速に処理されるが、この待ち時間のために全体の所要時間が長引く」と説明したという。
Rap Geniusによれば、HerokuではAWS上に存在している仮想Ubuntuサーバの「dyno」にアプリがデプロイされる仕組みになっている。Railsアプリの場合、各dynoで1度に1件ずつリクエストを処理しており、月額料金はdyno当たり36ドルで、New Relicアドオンを購入した場合は79.20ドルだ。
サイトからのリクエストは、dynoの負荷分散のため、まずHerokuのルータを通過してから、どのdynoに割り振るかを決定する。すべてのdynoがビジー状態の時は、順番を待って空いたdynoに割り振る「インテリジェントルーティング」の仕組みを採用していたという。
ところがRap Geniusによれば、Herokuは2010年半ばにこのルータの設計を変更し、「インテリジェントルーティング」を「ランダムルーティング」に置き換えていたことが判明した。ランダムルーティングでは、新しいリクエストはdynoが空いた順番に割り振られるのではなく、リクエストが処理されているかどうかにかかわらず、ランダムに割り振られる。
「この決定は発表されず、大部分のHerokuの文書にははっきりと反対のことが書かれている。しかもこの変更にもかかわらず、Herokuはdyno当たり月額36ドルという料金を改定していない」とRap Geniusは言う。
Rap Geniusによれば、ランダムルーティングの仕組みでは、インテリジェントルーティングに比べ、同等のスループットを実現するために多くのdynoが必要になり、その分だけ料金がかさむ。例えば、インテリジェントルータで80のdynoが必要だったとすると、ランダムルータでは必要なdynoは4000にもなると同社は試算。つまりHerokuは50倍もの料金を請求していると結論付けた。
この指摘を受けてHerokuは15日のブログで、問題があったことを認めて謝罪した。
この中でHerokuは、「Bambooで実行されているRuby on Railsアプリは、過去3年の間にパフォーマンスが悪化した」と認めた上で、サービスの仕組みについての説明を怠ったなどとして謝罪。今後、Webリクエストの待ち時間について詳しい情報を開示するとともに、製品の説明に正確を期すなどの対策を講じ、問題の解決に努めると表明した。
Copyright © ITmedia, Inc. All Rights Reserved.