ThoughtSpotをプラットフォーム アプローチで構築した理由

先週、シリーズEに2億4800万ドルの資金調達が必要という現実に直面した際、私はこれまでの7年間に経験した驚くべき出来事を振り返らずにはいられませんでした。ThoughtSpotは、分析市場に初めて検索技術をもたらした企業として、世界中の企業によるデータの使用方法を変革し、事実に基づく世界を作るという使命の達成に一歩近づくことができました。

思い出しながら、これらの意味を考えていました。この新しい現実をどのようにとらえるべきでしょうか。

プラットフォームアプローチの起点

時代を先取りする製品を開発しようとしたとき、必要な材料が手に入らないことも珍しくありません。夢を実現するには、新しいコンポーネントセットや、新製品の土台となるプラットフォームを新たに開発する必要があります。

Fordは最も経済的な車を作りたいと考え、流れ作業方式による製造ラインを生み出しました。Elon Muskは、テスラの開発に向けて、未来の車を作ることをビジョンとしていましたが、開発するにはバッテリー技術を革新しなければなりませんでした。Googleは、世界の情報を整理しようとしたところ、膨大な文書に対応できる拡張性を備えた世界最大のデータセンターとソフトウェアスタックを整備する必要に迫られました。そして、GFS、MapReduce、Bigtable などのテクノロジーや、将来のコンピューティングの主要な要素となるソフトウェアコンテナーが登場しました。

大きなビジョンを掲げてスタートアップを起業しても、現実的に資金や残された時間が限られている場合は、創業後初の製品として販売できるかどうかわからない大きなプラットフォームを開発すると決断することは容易ではありません。大抵の場合は、迅速に市場へ投入し、その有効性を示すことができるように、妥協して実用最小限の製品(MVP)を開発することが正しい決断と言えます。

取り組む姿勢の選択 - 現実を直視するか、現状に甘んじるか

現状に甘んじることなく現実を直視して取り組みを進めているなら、おそらく資金が尽きる前に起業に失敗するでしょう。この世界はそのようなストーリーで溢れています。けれども時として、そうならない場合があります。何らかの持続可能な価値を持ち、業界の現状を打破して全く新世代の製品の出現を促す何かを持っていれば、そのような時が訪れます。

ThoughtSpotは、そのような偉業を成し遂げたと宣言するにはほど遠いところにいます。実際、社内では「達成率はわずか2%」と考えられています。 しかし、私見ですが、ThoughtSpotのこの出来事は、現実を直視することを決断し、実践に移す上で、かなりまともな挑戦であると言えます。拡張性の高いプラットフォームを構築する上でThoughtSpotが行った大きな賭けは、未来の検索とAIサービスを作るために必要なことでしたが、そのリスクは回避されました。ThoughtSpotには、このプラットフォームの上に永続的な価値のある企業を作るために必要なものがすべて揃っています。

起業の経緯

ThoughtSpotプラットフォームについてご存じない場合は、私が話している内容についてイメージが沸かないかもしれません。では、これまでの経緯についてお話ししましょう。細かく言えば、約7年3ヶ月前のことでした。

ThoughtSpotは、あらゆるビジネスユーザーが技術トレーニングを受けなくとも、貴重なインサイトをエンタープライズ規模でデータから導き出せるような製品を作ることを目的として創業されました。

そこで、この業界の製品には2つの重要な要素が欠けていることが分かりました。

  1. 好奇心旺盛なビジネスユーザーが、ただ座って3日間のトレーニングを受講しなくても使えるインターフェイス。

  2. (大企業では珍しくありませんが)何千億ものレコードにも対応できるよう拡張し、思考のスピードで応答できるシステム。 

検索インターフェイス

着手時、私たちは、大抵の場合、あらゆるビジネスユーザーが複雑な分析意図を表現できるインターフェイスが必要であると考えていました。複数のインターフェイスを検討しましたが、最終的に、検索インターフェイスのようなインターフェイスの開発に集中して取り組むようになりました。これは、コンピューターユーザーの多くが、検索機能を使用して疑問の解決や情報の入手を行っていて、検索に馴染んでいたためです。また、ポイント/クリック/ドラッグ操作対応のインターフェイスではなく、検索を使用することで、複雑な分析意図をはるかに表現しやすくなることも分かりました。たとえば、標準的なクエリービルダーUIで「iPhone対iPadの売上成長率」についてクエリーを記述するとします。

ここで問題となるのは、この検索は一般的な検索ではない点です。Google検索ではユーザーが入力した言葉を文字通り検索しますが、この場合はそうではありません。データに含まれる何十億のトークンを検索して、ユーザーが入力した内容を文脈にあてはめ、それを正しい形式のSQLクエリーに変換します。また、Googleでは10個の青色リンクを提供して、ユーザーに適切な回答を選択させることができますが、このようなビジネスアプリケーションでは、ユーザーの信頼に値する正確な回答をひとつ選択することが求められます。さらに面倒なことに、多くのエンタープライズには、特定のKPI、事業体、製品名、その他の専門用語を使った独自の表現や用語がありますが、それらを使用するために何か月ものコンサルティング作業を経て、製品を作り上げることは考えていませんでした。私たちは、Apache Luceneのようなものを活用して、いくつかのクエリーテンプレートやNLPライブラリと組み合わせることを検討しましたが、それらを使用しても結果的に制限が多く、どの企業にとっても役に立たないと考えられていました。

私たちは次のアプローチに辿り着きました。

  1. 大規模分散システム。データベース内のすべての有効なエンティティ(各セルのすべての値など)にインデックスを付けることができるほか、何十億ものエンティティを検索して、完全一致、部分一致、音声一致、または部分スペルミスを検索できます。このシステムは、10ミリ秒未満で回答を返すよう設計されているため、一つの質問について10~100の異なる文字列を同時に検索できます。また、200ミリ秒未満のレイテンシーにも引き続き対応しており、オートコンプリート提案およびクエリーのコンパイルを行うこともできます。

  2. 動的コンパイルおよびオートコンプリートエンジン。顧客のデータベースに基づく何十億のトークンを使用して自動的に作成されたDSLを使用することができます。  また、グラフエンジンでは、スキーマ、結合グラフ、テーブル間の関係の性質を理解し、複雑性の高い質問に対して適切な結合とクエリ構造を自動的に適切に生成することができます。

  3. 機械学習システム。常にユーザーの選択から学び、パーソナライズ化した結果や提案を提供します。

高パフォーマンスの計算エンジン

インターフェイスに検索を選択した結果、ユーザーが期待するレイテンシーは、GoogleやAmazonから得られるものと非常によく似ていました。私たちは数分ではなく数秒という単位で考える必要があります。ThoughtSpotは、構造化データが数千億列、数百テラバイトに拡張したユースケースに対応できる方法で問題を解決したいと考えていました。他のソリューションで活用されていた事前集計では解決できないことも明らかでした。これは、分析リクエストの変更が何週間もの作業につながる根本的な理由のひとつであるためです。

朗報もありました。DRAMの価格は、過去数年間で劇的に下がっていました。メモリ内のすべてのデータを経済的に実行可能な状態に保つソリューションを検討できます。

この前提の下、オープンソースのすべてのビッグデータテクノロジーやいくつかの商用ソリューションなど、実践できるほとんどのことに対してベンチマークを実施しました。数十億列を読み込み、「州別の総売上」などの集計に関する簡単な質問をし、1秒足らずで回答が得られるようなシステムが必要でした。

既存のシステムにはこの要件に近い性能を持つものがなく、たとえ一桁落とした要件でも、これを満たせるシステムはありませんでした。このようなパフォーマンスをもたらした唯一のソリューションとして、データが列形式でメモリ内に既に読み込まれており、結果を計算するために手動で最適化したC++プログラムを作成し、最適化モードでコンパイルしてから、プログラムを実行する方法があげられます。c++からJavaに移行しても、パフォーマンスは4倍低下しました。汎用データベースと計算エンジンを使用した場合のパフォーマンスは、10~1,000倍低下しました。

それは、データ構造が事前に構築される独自の分散メモリコンピューティングエンジンを構築することを選択したときです。クエリを実行するには、リアルタイムで最適化されたc++コードを生成し、コンパイルして、そのコードを実行します。他にも多数のJITコンパイルエンジンがある、または構築されていますが、ほとんどのデータベース設計者が約10〜50ミリ秒のコストがかかるディスクシークを心配している点が私たちの主な差別化要因であるのに対し、ThoughtSpotの技術者は、合計10ナノ秒の分岐予測ミス、50ナノ秒かかるL3キャッシュミスなどに集中して取り組み、数ナノ秒かかるインライン化された関数の呼び出しには目を向けていません。ThoughtSpotでは、すでにクエリー処理中にディスクやSSDに触れないことを前提としていました。これにより、大規模なデータセットのクエリー時間に1〜2桁以上の差が見られるという非常に優れた結果が得られました。

大いなる賭け

ThoughtSpotは、2012年の冬、10人足らずの開発チームとわずかな資金によって、現実を直視した取り組みを進め、以下で構成されるプラットフォームを開発することを決断しました。

  1. 検索および言語理解プラットフォーム

  2. 存在する他のどのエンジンよりも桁違いに高速なMPPインメモリコンピューティングエンジン

  3. 分散型のクラスター管理とコンテナ化されたインフラ(Kubernetesはまだ開発されていなかったのと、他のソリューションがニーズを満たしていなかったため)

  4. 現在のアナリティクス製品に期待されるその他すべて

この賭けがもたらす結果は想像できませんでしたが、その結果を見ればすべては明らかです。

  • 主要業界の上位3社のリーダーを見ると、少なくともそのうちの一社は数百万ドルを投資し、ThoughtSpotをミッションクリティカルな用途で使用しています。

  • テクノロジーの世界ではよく知られたある顧客企業は、別のインメモリデータベースに数百万ドルの投資をし、その上にダッシュボードを設けましたが、データ量の関係で読み込みに5分もかかっていました。ThoughtSpotを導入して以降、この顧客のパフォーマンスは30倍も向上しました。 

  • すべての取引を詳細なレベルで分析できていなかった別の顧客のケースでは、ThoughtSpotを導入するまで、価格の最適化に何億ドルも無駄にしていました。

では、これらの出来事はどのようなことを意味するのでしょうか?私たちと一緒に現実を直視し、私たちにこのような結果をもたらしてくれた優秀なビルダーに多大に感謝しています。また、優れたプラットフォームと共に素晴らしいスタートを切ることができ、担う責任も大きくなると理解していますが、我々はまだ2%しか達成していません。