先日、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のバックアップをクラウドに保存するのは(そのためだけの目的だとしたら)まだちょっとコスト高いかなあ、と感じてます。こういった辺りでオンプレミス連携が必要なんだろうなあ、と。