社会現象と呼べるようなポケモンGOの大ヒットに巧みに便乗した「GoSnaps」というアプリが5日で50万ユーザーを達成したことが話題になっている。GoSnapsがスゴいのはわずか1日で開発されたMVP (minimum viable product)でありながら、100ドル/月の費用のサーバで、サービスを落とすことなく、50万を超えるユーザーをさばくスケーラビリティも兼ね備えていたことだ。

アイディアがあっても、スタートアップには資金や人的リソースに限りがある。立ち上げ段階から百万人規模のサービスを提供するのは簡単なことではない。過去にはTwitter、Foursquare、GameSalad、Foodspotting、最近だとMeerkatなど、春にテキサス州で行われるSXSWで限定ベータの提供を始めるスタートアップが多いのは、テクノロジに関心を持っていて発信力のある数万人規模に集中して提供できるからだ。

スケーラビリティよりも、まずは自分たちが立てた仮説の正しさや製品の戦略の正しさ、市場の可能性を確認しながら、少しずつ利用者を開拓していくのがスタートアップの定石である。それを破ると手痛い失敗を喫する。

米国でポケモンGOがリリースされた直後に「GoChat」というポケモンGOユーザーを結ぶチャットアプリが登場し、わずか5日で100万ユーザーを達成した。ところが、トラフィックが急増し過ぎてダウン。この段階で新たな投資家探しをする羽目になり、データベースの問題を解決するためにUpworkを通じてコントラクタと契約したものの、対応に4000ドル/月かかると言われたそうだ。The Vergeの取材でこれまでGoChatに費やした金額を聞かれた開発者のJonathan Zarra氏は「自分がいかに愚かか、みんなに披露したくはない」と答えている。

ポケモンGOのスクリーンショットを共有する「GoSnaps」

GoSnapsは、ポケモンGOのスクリーンショットをシェアするポケモンGO版のInstagramのようなサービスだ。イメージを共有するという点ではGoChatよりも複雑になるが、なぜGoSnapsは安定していたのか? GoSnapsの開発者であるErik Duindam氏は「MVPの制限とスケーラブルな技術は共存できる」と断言する。スタートアップがスケーラブルなベータ製品をサポートできなかった頃の常識に囚われず、MVP開発の限られた時間と予算の中でも最初からスケーラビリティを組み込んで開発すれば、MVPでも百万規模のユーザーをサポートできるという。

GoSnapsではNodeJSとMongoDBを採用、しかしMVPの条件でデータベースのあるべき使い方をしていたら少ないユーザーしかサポートできない。そこでCPU負荷のかかるイメージ認識を済ませてリサイズしたイメージをGoogle Cloud Storageにアップロードして、データベースがイメージではなくデータに専念できるようにした。また、最もライクが付けられたスナップ、最新のスナップ、最新の有効なスナップなど、いくつかのコレクションを用意し、あらかじめそれらに振り分けておくことで、よりシンプルなクエリで処理できるようにした。

こうした最小限の実行可能なスケーラビリティの解決策を考えて組み込むのに要した時間は2~3時間だったそうだ。それで後々パニックに陥るリスクを緩和でき、アプリの可能性を安心して見守り続けられる。「その違いは、アプリのMVPにも組み込まれるべきものだと思う」とDuindam氏は述べている。