インタラクティブな データ分析プラットフォーム: Imhotep オープンソース化へ

今回は、 Imhotep のオープンソース化を皆さんにお知らせしたいと思います。
Imhotep は Indeed のインタラクティブなデータ分析プラットフォームで、これによって私たちはデータに基づく意思決定を行います。アプリケーションやサービスへの変更をテストする際、 その変更が UI でもバックエンドのアルゴリズムであっても、私たちはその変化が求職者にどう影響するのかを計測します。
私たちは Imhotep を作り、エンジニアチームとプロダクトチームが大規模かつ主要なメトリクスに集中できるようにしました。

主要な機能

Imhotep のプラットフォームとツールは以下を可能にします。

  • 素早く、インタラクティブな、アドホック・クエリを実行し、大きなデータセットの結果を集約する。
  • 複数の時系列のデータセットからの結果を組み合わせる。
  • 独自のデータツールを構築する。
    これにより分析、モニタリング、レポート、データの自動処理を Imhotep のプラットフォームに基づき行えるようになる。

根本的に言えば、Imhotepは分散化された逆索引です。これは、複数サーバーのクラスタ間にある時系列データ上に存在しています。
私たちは、 Amazon ウェブサービス (AWS) 上に Imhotep クラスタを設定しやすいようにしました。クラスタを設定すれば、データをアップロードし、 Imhotep Query Language (IQL) を使ってそのデータをインタラクティブにクエリできます。
IQL ウェブクライアントは、自分の持つデータについてのあらゆる質問に答えを出すのを可能にします。また、重要な洞察にたどりつくために、それらの質問を素早く繰り返すことを可能にします。

例えば、「世界中の人々が、どう Indeed の検索エンジンを使用しているか?」
これに関連する次のような問いやその他様々な問いに、私たちは Imhotep を使って答えを探すのです。

  • ある日に、ある国で行われた求人情報のユニーク検索数は何件だったか?
  • ある国内での、トップ 50 のクエリは何だったのか?
    それらの各クエリでは、求職者は何回検索結果をクリックしたのか?
  • 米国内で “Architecture” というクエリで、 CTR が最も高い職種名は何か?
    CTR が最も低い職種名は?

Imhotep を始めよう

Indeed のツールを使用して AWS 上に Imhotep クラスタを設定できます。
これらの設定ツールをシステムにアップロードするのに必要な環境は以下の通りです。

  • AWS アカウント
  • S3 バケット(データ・ストレージ用) × 2
  • 時系列データ (TSV または CSV 形式)

もっと詳しく知りたい方は、是非 Imhotep documentation をご覧ください。
不明な点は、 Q&A forum for Imhotep で、ご質問いただけます。

Indeed で Imhotep をどのように分析に使用しているかを、もっと詳しく知りたい方は、 2014 年 4 月に開催されたテックトークの動画とスライド: Large-Scale Interactive Analytics with Imhotep を是非ご覧ください。


※追記 11/18/2014: Slides and video from the workshop は左記リンクよりご覧いただけます。

Java 以外のプラットフォームから Proctor で A/B テストをする方法

proctor-pipet がオープンソース化されました!

proctor-pipet は、Indeed が作成したツールで、Proctor をリモートサービスとしてデプロイ可能にします。そして、Proctor を HTTP でアクセス可能なシンプルな REST API として公開する Java の Web アプリです。

つまり Python のような JVM 以外の言語で書かれたアプリケーションでも A/B テストを行えるのです。

 

proctor-pipet に加えて django-proctor と呼ばれる Python のパッケージも利用可能になりました。これは Django Web アプリ上で、 Proctor グループの使い勝手を良くしてくれるものです。

Ruby on Rails や .NET MVC などの、ご自分の好きなパッケージを実装する人が出てくるのを待っています。

ちなみに、これらのパッケージは 2014 年夏にやってきた優秀なインターンの一人の成果です。

仕組み

Web アプリは proctor-pipet を介して、Proctor に対するHTTPリクエストを作成します。

そして Proctor は、グループの割り当てを返し、その割り当てを使って Web アプリは、ユーザーのブラウザに返すコンテンツを決定するのです。

data flow for proctor-pipet

proctor-pipet を使用して Proctor を遠隔でデプロイすることで、以下に挙げた Proctor ライブラリの全機能をご利用いただけます。

  • テストグループにユーザーを割り当て
  • 識別子を使用して異なるテストタイプにマップ
  • 機能の切替(トグル)、または新機能を徐々にロールアウトするよう実装
  • コードとは独立して、テストアロケーションを変更
  • 任意のコンテキスト変数を使うルール (例 モバイルデバイスをターゲットにするため) に基づくグループへの所属を決定

Proctor のドキュメンテーションはこちらでご覧いただけます。

どちらのツールも GitHub からダウンロード可能です:

また、両ページにドキュメンテーションと例が掲載されています。

ご質問は Proctor Q&A  フォーラムよりお尋ねください。

バグ・バウンティ・プログラム
 脆弱性発見者には報奨金:

Indeed のミッションは we help people get jobs です。

これを常に向上し続けるための取組の一環として、

バグ・バウンティ・プログラム (BBP:脆弱性報奨金制度) を導入しました。

 

有志のセキュリティのプロ達は、Bugcrowd を介し脆弱性をレポートすると、報奨金を獲得することができます。

コード変更にまでつながるバグ・レポートには 50 ドルから 1500 ドルの間で報奨金をお支払いします。報告された脆弱性の種類や重要度によって、この金額は変わります。

これまでの協力者リストをチェックしたい、バグ発見の腕を競いたい、という方は

Hall of Fame (バグ発見の殿堂) をご覧下さい。

 

実際に Indeed のサービス向上に貢献 (そして報奨金を獲得!) する方法は、こちらから詳細をご覧いただけます。

なお、現在のユーザー基盤に対する攻撃、ならびに自動の脆弱性検査ツールの使用は厳重に禁止されていますので、ご注意ください。

また、侵入テストを実行する場合は、システムのデグレードとユーザーへの影響を、必ず最小限に留めてください。

 

早速始めたい!と思った方は、ぜひ Bugcrowd にサインアップしてください!

一万人以上のセキュリティ・リサーチャーからなる、世界最大のセキュリティテスト集団に参加してみてはいかがですか?

indeed    +  bugcrowd