まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:price

先日、IBM Bluemix の利用料金を計算するカリキュレーターをブログで紹介しました:
IBM Bluemix の料金シミュレーター

で、
  「計算方法はわかったけど、実際の見積もりのサンプルが欲しい」
という声を約1名から聞きました。まあ1回実例を見ておくとわかりやすいですよね。
というわけで、早速サンプルを1つ作りました、ここで紹介します。

今回のサンプルは IoT ファンデーションを使った場合のアプリ料金です。Node-RED エディタは無料提供だし、Node.js ランタイムも無料枠があるので利用料金がかかるの? という疑問があるかもしれません。まあ開発段階では無料でできると思いますが、実用段階ではそうはいかなくなる、とご理解ください。以下詳細を説明します。

まず、この見積りをする上でいくつか前提条件を決めておく必要があります。今回 Node-RED エディタを使って作成する IoT アプリは以下の様なデバイスデータを収集するものであるとします:
 (1)センサーは50台
 (2)1つのセンサーが2秒おきに100バイトのデバイスデータを出力する
 (3)全センサーからのデータを集計目的で SQL Database に格納する、格納期間は1年間とする
 (4)開発費用は含めない(純粋に Bluemix の利用料金だけを計算する)

まずセンサーデータはどの程度の量になるでしょうか? 1つのセンサーが1回100バイトのデータを2秒おきに出力する、ということは1日に 43200 回出力することになります。そのデータ量は 100 x 43200 = 4320K バイトです。これが 50 台あるので 4320K x 50 = 216M バイト。1ヶ月を30日とすると、216M x 30 = 6.48G バイトのデータ通信が送られてくることになります。

今回の前提ではデータは1年間格納しておくことになっています。ということは貯めておくデータの総量(=データベースに必要なサイズ)は 6.48G * 12 = 77.76G バイトです。


ではまずこのデータを扱う Node-RED アプリケーションのランタイムに必要なスペックを考えます。実際にはきちんとテストして決める必要がありますが、仮にメモリ 2GB のサーバーが1インスタンス必要であるとすると、その月額料金は 7.35 * 24(Hour) * 30(Day) * 2(GB) = 10,584 円です(無料枠は別のアプリで使っていて、このアプリには適用されないものとします)。

次に複数台のセンサーデータを扱うには Node-RED フローエディタの QuickStart だけでは機能が足りません。IoT サービスを使うことになり、今回は50台なので月額 2,100 円のブロンズエディションが該当します:
2015061601

このブロンズエディションには月に 100MB までのデータ通信量が含まれています。今回のデータ通信量は上記のように月間 6.48 GB が見込まれます。つまり 6.38 GB 分がプランを超過します。超過分は 1MB あたり 1.05 円なので、このデータ通信にかかる料金は 1.05 x 6380 = 6,699 円です。

最後にデータベースです。今回の前提では 77.76 GB のデータを格納する必要があります。どのデータベースに格納するかによって価格は変わりますが、Node-RED フローエディタから簡単に使えることと、集計用データと考えると NoSQL だとクエリーが使えなくて色々不便なこともあると思うので、今回は SQL Database(DB2) で見積もります。このデータ量であればプレミアム・エディション1インスタンスが必要です(月額42,000円)。
2015061602


と、これで今回の見積もりに必要な全ランタイムおよびサービスの個別見積もりが出来ました。結論としては
 10,584 + 2,100 + 6,699 + 42,000 = 61,383
が1ヶ月に必要な料金、という結果が出せました。


IoT アプリケーションのコストを見積もる際の参考になったでしょうか? 要は無料枠内で済むような使い方をしている間はいいのですが、ある程度のデータ量が見込まれるようになるとランタイムも IoT ファンデーションもそれなりのスペックのものが必要になり、またデータを保存しておこうとすることによってデータベースも追加する必要が生じます。本格的な利用を想定すると、このようなデータ量に基づく見積もりも必要になってくる、ということになります。

#更に言うと、この例だとデータを1年間クラウドに保存する想定にしていますが、1年後のデータをどうするか?はプランに入れていません。バックアップを取るとして、そのバックアップデータをクラウドに保存するのか(その場合は追加料金)、手元に転送して自分たちで管理するのか(その管理方法は別途考える必要あり)、・・・という問題もあります。この辺りからは個別の事情の要素が大きくなってくるのでしょうね。


これは僕の個人的な見解でもあって、 Bluemix だけの話ではないのですが、DBのバックアップをクラウドに保存するのは(そのためだけの目的だとしたら)まだちょっとコスト高いかなあ、と感じてます。こういった辺りでオンプレミス連携が必要なんだろうなあ、と。



 

IBM Bluemix はサインアップから30日間は無料で全てのサービスをお使いいただけます(現在開催中のアプリケーション開発コンテスト Bluemix Challenge 2015 に参加表明していただくと、無料利用は90日間に延長されます)。 またこの無料期間終了後もクレジットカードを登録することで無償枠が設定され、その枠内で利用する限りは料金は発生しません。その方法について、詳しくは以下を参照ください:
IBM Bluemix をトライアル期間(1ヶ月)を超えても無料で使う


で、今日は無償ではなく、有償で(つまりは本格的なビジネスの話として)IBM Bluemix を使っていただく際の、その料金についての話です。


IBM Bluemix は基本的には従量課金制です。使ったサービスを使った分だけ、1ヶ月単位でお支払いいただく、というモデルです。まあこの形態自体は他のクラウドと同様だと思っています。

ただ少しわかりにくいかなあ、と思うのは「いろんなサービスが、それも IBM のものだったり、ビジネスパートナー様のものだったり、オープンソース製品だったりするサービスが提供されていて、それぞれの課金体系が異なるので、直感的に見積もりにくい」ことです。

例えばこんな構成例を考えてみます:
 1. Java アプリケーションサーバー x 1台(メモリ1GB)
 2. SQL DB(DB2) x 1台(データ2GB)

よくある「ざっくりとした」システム構成例だと思いますが、これで「1ヶ月の利用料金がだいたいいくらになるか」を見積もることがあると思います。或いは「データベースを SQL DB ではなく Claudant にしたら、どのくらい高くなるか/安くなるか」を知りたいこともあると思います。

ランタイム(アプリケーションサーバー)部分についてはともかく、Bluemix ではサービス部分の料金はサービスの種類によって異なります。「ざっくり」とした見積もりであってもそもそもの料金体系を頭に入れておくのが難しいのでした。

で、自分は普段どうしているかという話です。答としては料金カリキュレーター(シミュレーター)を使っています:
料金カリキュレーター


このサービスを使って上記構成例を見積もってみます。まずは Java アプリケーションサーバー(ランタイム)の見積もりです。メモリ 1GB の1インスタンス。本来は $48.3 ですが、他にランタイムを使っていなければ無料枠が使えるので、これらの情報を入力すると、その差額の $24.15 が表示されます:
2015061501



続けて SQL DB の見積もりです。こちらはデータ量が 2GB であれば small エディションでまかなえるので small インスタンスを1つ指定して、結果 $30 です:
2015061502



一方、Claundant の場合はこちら、ちょっとややこしくなります。データ量は 2GB なので無料枠内です。読み込み API も月間20万回であれば無料枠内。こちらは1000回単位(1000回につき$0.15)なので、20万回は 200 と指定します。で、その額は $0.15 X 100 = $15 です:
2015061503

というわけで、このケースでの月額料金は以下のようになります:
・Java ランタイム + SQL DB だと 24.15 + 30 = $54.15
・Java ランタイム + Claudant だと 24.15 + 15 = $39.15


料金カリキュレーターの使い方はこんな感じです。繰り返しますが、サービスの内容によって料金体系が異なる(上記のようにデータベースであってもデータ量だけで決まるサービスもあれば、API の実行回数まで含めて料金が決まるサービスもある)ので、まずはカリキュレーターを見て利用を考えているサービスの料金計算方法を確認した上で利用量を見積もって入力する、という流れになります。




Cloud Foundry をベースとした PaaS 環境である IBM Bluemix が正式サービスとなり、価格も発表されました:
IBM Bluemix : Pricing Sheet

Bluemix の場合、アプリケーションサーバーと、サービスと呼ばれる(データベースとかSSOとかの)パーツとで別々の課金が行われて、利用料金という意味ではその合計になります。サービスの価格はサービスの種類によっても異なるので後述します。 で、アプリケーションサーバーの価格を見ると(2014/07/17 時点では)「メモリ1GBの仮想マシンを1時間使うと $0.07 」と設定されています。サーバーインスタンスに搭載しているメモリ量で時間課金、というタイプです。計算を楽にしたいので、仮に $1 = 100円とすると1時間7円ということになります。

ちなみに Bluemix のアプリケーションサーバーはデフォルトではメモリ512MB(0.5GB)で稼働します。つまり1時間3.5円。一ヶ月を30日とすると、1サーバーインスタンスの月額は 3.5 x 24 x 30 = 2520円です。
2014041701


このスペックをモデルケースとして、これが安いのか高いのか?、ということを考えてみます。

比較対象を「本家」の Cloud Foundry としましょう。こちらの料金体型もメモリ量での時間課金タイプですが、料金は1GBを1時間使うと $0.03 、ここだけ見ると Bluemix の半額以下です。同じ条件で512MBメモリを搭載した1サーバーの月額にすると 1.5 x 24 x 30 = 1080 円ということになります。
2014041702


とりあえず、同一条件の1アプリケーションサーバーを使った場合の料金は CloudFoundry の方が半分以下になる、ということはわかりました。ただ現実はそこまで単純ではありません。

ここまでの話はあくまで「アプリケーションサーバーの料金」です。多くの場合、アプリケーションはアプリケーションサーバー上にデプロイして動作させますが、同時にデータベースサーバーなども必要になります。

CloudFoundry の場合、データベース(例えば MySQL)サーバーを1つ追加しようとすると、アプリケーションサーバーと同一のマシンに MySQL サーバーも入れてしまう、という選択肢はありますが、さすがにメモリ 512MB で両方動かすのは無理ではないにしても厳しいと思われます。というわけでメモリを増やすとか別途データベース用サーバーを1台追加することになり、同じスペックのマシンだったとしても2台分の料金(1080 x 2 = 2160 円)が必要になります。メモリを倍に増やした場合も同額です。

一方 Bluemix の場合、データベースサーバーは「サービス」として提供されており、サービスは制約の中であれば無料で使うことも可能です。例えば MySQL は無料、PostgreSQL も無料、SQL DB(DB2) はデータ量2GB以内の1インスタンスであれば無料、といった具合です。制約といってもデータ量2GBまで使えるのであれば、結構多くのケースで無料利用ができると思っています。しかもこれらのサービスはいわば DBaaS として提供されており、Buildpackの用意やアプリケーションの導入などは不要ですぐに使いはじめることができます。つまりデータベースは(制約の中であれば)無料で追加できるオプションとなっているので、利用料金は変わらずアプリケーションサーバー代のみの 2520 円ということになります。
2014041703


この時点でもかなり差がなくなってきました。更に、例えば MongoDB などの no-SQL データベースサーバーを追加したり、データ高速化の memcached サーバーを追加したりすると、CloudFoundry ではサーバー構築の手間が増えるだけでなく、これらのサーバーを追加することになるので、もう1台、更にもう1台・・・とコストもどんどん高くなっていきます。

一方、Bluemix ではこれらのサービスも制約の中ですが無料で使える範囲が設定されています。つまりサービス用のサーバーは増えてもコストは変わらずアプリケーションサーバー代の 2520 円のままで利用することもできるのです。ここまでの環境トータルで考えると Bluemix の方が安くなっていることも珍しくないと思っています。
2014041704


だからといって Bluemix の方が得とも言い切れない所が難しいです。CloudFoundry では Buildpack を用意することで「サーバー1台で済ませる」という選択肢もあり、同一スペック1台での比較となると上記のように CloudFoundry の方が安いのです。 一方 Bluemix のサービスは無料の枠が用意されてはいるものもありますが、その枠を超えて利用する場合には有料となります。無料枠は利用するサービスの種類によっても異なるので、その辺りは設計後に正しく見積もる必要がでてきます。
2014041705


最終的にはシステム構築に必要なサーバー構成を冗長化なども含めて検討した上で選択する、ということになるのだと思います。そこまで含めても Cloud Foundry と比較した Bluemix の価格が一概に高いとは言えない(安いとも言えない)と感じています。 

ただシステム構成が複雑になればなるほどアプリサーバーの課金がメインとなる Bluemix に割安感が出てくるんだろうな、という印象を持ちました。 また比較対象を PaaS ではなく、AWS などの IaaS と比べてみても、アプリケーションサーバーとデータベースサーバーとあれとこれと・・・まで付けて月額 2530 円~ であれば充分に価格競争力もあるんじゃないかな、と思えます。


 

オープンベータが続けられてきた IBM Bluemix が 7/1 にGA(Generally Available)を迎えました:
IBM Bluemix General Availability! 
2014070101


同時にこれまでの無料トライアル期間も終了しました。今後、新たに利用申し込みをすると1ヶ月間の無料トライアル期間が与えられます。 またこれまで無料トライアルを使っていたユーザーは自動的に1ヶ月間の無料トライアルアカウントが引き継がれて、これまで Bluemix 上で作成したアプリはまだそのまま有効になっている模様です。


まだ一部の情報しか公開されていないようですが、分かる範囲でその内容を、個人的な感想も交えて紹介します。なお以下の情報は 2014/07/01 現在の情報であり、今後変更の可能性があることをご了承ください。

もっともインパクトの大きな発表は、これまで公開されていなかった IBM Bluemix の利用価格が一部発表されていることです:
IBM Bluemix : pricing
2014070102


ランタイム(ウェブアプリケーションサーバー)は利用メモリで課金され、メモリ1GBを1時間使うごとに US$0.07 と記載されています。単純にメモリ1GBのサーバーを1ヶ月(=30日)使うと仮定すると、
  0.07 * 24 * 30 = 50.4
なので月額 US$50.4 課金される、ということになると思います。
2014070103


なおランタイムはデフォルト状態ではこの半分の 512MB メモリで稼働します。なのでデフォルトのまま使うとアプリサーバー1台あたり、この半分の US$25.2 ということになります。

またプライスリストを見る限り、無料枠が提供されているように思えます。ランタイムの無料枠については
  375 GB-hours per month (shared across all runtimes)
と記載されています。解釈を間違っていたらどなたか指摘いただきたいのですが、これは
  全ランタイム合計で、月に 375 時間/GB のメモリ利用までは無料
という意味だと思います。

仮に1ヶ月を30日とすると、1ヶ月は 720 時間あります。1GB メモリのマシンを1ヶ月続けて使うと 720 時間/GB 使うことになります。これだと無料枠(375)を超えてしまいます。

でも(デフォルトの) 512MB メモリのマシンであれば、1ヶ月続けて使っても 360 時間/GBなので無料枠で収まることになります(1ヶ月=31日計算でもギリギリOK)。つまりアプリケーションサーバーのランタイムはデフォルトの 512MB メモリサーバーを1台使い続ける分には無料枠内で使える、ということだと思っています。 

あるいは計算上は 256MB メモリのサーバーを2台使い続けることも無料枠内でできる、とも言えます。まあ、256MB でアプリケーションサーバーがまともに動くかどうかはわかりませんが・・・


一方、サービスについては「一部のみ価格が公開された」という印象です。例えばビッグデータ用 DBaaS である BLUAcceleration の記載はまだないので、BLUAcceleration の利用価格はよくわかりません。

ただ IBM ソフトウェアを使ったサービスに関しても無料枠が設定されているように見受けられます。例えば SQL database サービスは IBM DB2 をバックエンドに使える DBaaS ですが、価格欄には
  $30.00 USD/Instance
  2 GB free per instance.
と記載されています。
2014070104


この 2GB はおそらくディスク容量だと思うので、「2GB のデータまでは無料」と解釈できます。本当だとしたら、本来有償製品である DB2 を、2GB まで無料で、しかも DBaaS 環境で使える、ということになり、これはかなりお得な気がしています。 「課金が始まったら絶対高いに決まってる」と思っていたので、いい意味で期待を大きく裏切られました。

ちなみに、先日僕がブログで公開したオンライン TwiML エディターは Bluemix 上で動いていますが、アプリケーションサーバーは Liberry for Java で、バックエンドデータベースはこの SQL Database を使ってます。アプリケーションサーバーのメモリを 512MB 以内にしておけば無料枠内で稼働を続けることができそうです。

この SQL Database 以外にも Git Hosting など無料で提供されるサービスが他にもあり、無料枠内だけでもそこそこ使えるパブリック CloudFoundry 環境、と言えそうな条件です。これは使わないと損ですね。


なお本家 CloudFoundry の価格はメモリ 1 GB あたり一時間 US$0.03 です。これだけを見ると Bluemix の半分以下に見えます。ただ Bluemix は上述のように無料で使える各種サービスが充実していて、それらを組み合わせて使うことを考えると、一概に Bluemix が高いとはいえなくなると思っています。


このページのトップヘ