エクストーンの豊田です。Webサービスを設計する際、様々なSaaSを利用して開発コストを下げたり、便利な機能を提供したりすることを考えることが多いですが、その際検討しなければいけないのが、それらのSaaSにかかる費用感です。
多くのSaaSはサービス毎の利用した分だけ課金が発生する従量制を採用していることが多く、実際にサービスを運用するまでどのくらい費用が発生するか分からないことが多いです。
一方で、そのSaaSの採用をするかどうかの判断はまさしくその費用によって決まるところもあります。つまり、サービスを運用してみないと分からない費用について、サービス運用前に算出して採用可否を考える必要があるということです。難しいですね。
このような場合、フェルミ推定を用いて費用等の概算を出します。「シカゴには何人のピアノ調律師がいますか?」とか「バスにいっぱいバスケットボールを詰めたら何個入りますか?」のような質問に答えるときに利用されるやつです。
先日、Algoliaという全文検索エンジンの料金見積もりを行い、その際にフェルミ推定を行ったので具体例として紹介します(実際の案件とは異なる要件、前提条件です)。
サービスの要件
- 書籍検索サービス
- 作品名やISBN、本のあらすじ等の中からテキストで検索できる
費用概算を出さなければいけない時点で、決まっている要件が上記のようにとてもざっくりしていることは多いので、いくつか要件を追加したり仮定を行ったりして、金額の根拠を求めていきます。
Algoliaの料金
- 検索リクエスト毎の料金: 1000リクエストあたり0.5USD
- レコード毎の料金: 1000レコードあたり月0.4USD
仮定
サービスの規模等も現状では分かっていませんが、そもそも世の中にどのくらい本があるのかということと、日本人はどのくらい読書を行っているのか、という点から必要な情報を推論していきたいと思います。
- 1年間に出版される書籍の数は約70,000冊
- 過去30年分の書籍を扱う
- 月に3冊以上の読書を行う人をターゲットにする。日本人の約15%
- 文化庁の「国語に関する世論調査 平成30年度」より
- 年代としては20〜50代をターゲット
- 1ユーザーあたり平均して月5回程度の利用を想定
- 1回の利用で平均して10回程度の検索リクエストを行う
推論
さて、上記の仮定を出したところで、具体的な利用にまつわる数字を推論していきます。
- システムで扱う書籍数: 40万〜100万冊 (70,000冊 * 30年 * 0.2〜0.5割)
- 過去30年間で出版された全ての書籍を管理するのは非現実的なので、実際にはこの2割〜5割程度と推定
- 20〜50代の年齢別人口は約7,000万人
- ターゲットの総人口は約1,000万人 (7,000万 * 15%)
- アクティブユーザー: 10万人
- ターゲットのうち1%がアクティブユーザーになると仮定
- このあたりはサービスの成長等に合わせて柔軟に変更する
- 月あたりの1ユーザーの平均検索数: 50リクエスト (月5回の利用 * 1利用あたり10検索リクエスト)
- 月あたりの総検索数: 500万リクエスト (50回 * 10万人)
- 利用レコード数: 100万レコード (1冊あたり1レコード)
費用
上記の仮定と推論によって、Algoliaの料金に関わる数字を算出することが出来ました。では実際のコストを計算してみましょう。
- 検索リクエストの料金: 2,500USD (500万リクエスト * (0.5USD / 1000))
- レコードの料金: 400USD (100万レコード * (0.4USD / 1000))
- 合計: 2,900USD
と、上記のような概算費用を出すことが出来ました。だいたい月あたり40万円くらいですかね。リクエスト数に対しての金額がちょっと大きい気がするので、検索リクエスト数の制限やキャッシュの仕組み等をうまく使う必要があるかもしれません。
上記のような前提に対しての大まかな費用感が算出できれば、実際にこのシステムにAlgoliaを採用すべきか、または自前でElasticSearchのような検索エンジンをホスティングするべきかというところを実際の金額ベースで検討することが出来ます。
おわりに
今回はフェルミ推定を利用して、Algoliaのような従量制で課金されるサービスの費用を大まかに算出する方法を紹介しました。もちろん推論に基づく算出なので、実際に運用するとまた金額が異なる場合もありますが、その場合でも推論のうちどこが間違ってたのか、あるいは予想外だったのかを明確にすることができます。
従量制サービスは事前の費用感をつかむのが大変難しいのですが、必要であれば是非フェルミ推定を行ってやってみてください。