Badooは現在、1日あたり数十億のイベントを処理する出会い系ソーシャルネットワークであるとデータプラットフォームエンジニアリングリードのVladimir Kazanov氏は説明する。Skills Matterで、彼はこの規模での運用の課題と、Badooがこのデータを処理およびレポートするために使用するツールについて説明した。
Badooのビジネスインテリジェンス部門の目標は、ユーザイベント情報を収集し、それに対して処理およびレポートして深い洞察を得ることである。これらの洞察は、企業が決定を下す助けになる。Kazanov氏は、これらの不可欠なイベントはライフサイクルを経ると説明している。
- 受信: Protobufを使用して、イベントを生成するためのさまざまなクライアントライブラリが生成される。これらは、イベントのフィルタリングとルーティングに使用されるオープンソースのストリーミングデーモンであるLSDを介してストリーミングされる。
- 保持: データは、ORCファイル形式でデータレイクに保存され、HDFSで実行される。スキーマを使用したイベントは、カラム型の分散分析データベースであるExasolに保存される。
- プロセス: データは、クラスター上でデータを照会できるJavaベースの分散計算フレームワークであるSparkを使用して処理される。
- レポート: ダッシュボードとレポートを使用してExasolを照会できるようにするmicrostrategyと呼ばれるレポートツールが使われる。これに加えて、CubeDBと呼ばれるカスタムツールが使用される。これは、テクニカルレポート用のクエリをより高速に実行するように設計されている。
新しいイベントを作成するには、まずビジネスアナリストがそのイベントのスキーマを作成する。このスキーマから、さまざまなプラットフォーム用のProtobufクライアントライブラリが生成される。Kazanov氏は、モバイルおよびWebアプリケーションがこの新しいイベントのパブリッシュを簡単に開始できることが、このクロスプラットフォームサポートを主要な利点の1つと考えている。
LSDを介してイベントをストリーミングする場合、Badooはリアルタイムではなく1時間ごとにデータをバッチ処理する。これは、障害が発生した場合に、バッチの再ロードの方が容易であるとKazanov氏が考えているためである。ターゲットデータベースと比較して、正しく書き込まれたかどうかを確認するのは容易である。
Kazanov氏はまた、ORCにデータを保存することが特に役立つと考えている。彼はこの理由として、列指向であり、強力な圧縮特性を持ち、複数のアプリケーションでサポートされていることを挙げている。また、SQLのようなクエリ言語を備えたHadoop上のデータベースであるHiveを使用して簡単にクエリすることもできる。
データをクエリすることについて話すとき、Kazanov氏はExasolの利点の1つがSQLを使用することであると説明する。これは、開発者にとって学習曲線が低いことを示しており、新しいクエリ言語を学ぶ必要はない。しかし、これに加えて、彼はパフォーマンスの核となる利点を次のように見ている。
Exasolを使用すると、テラバイト単位のデータをクラスターに保存し、非常に効率的なクエリを実行できます。私は分単位で話しているが、比較対象のシステムはそれに近づいていません。
コミュニティの貢献を受け入れているCubeDBのようなBadooのオープンソースツールについて、すべての講演をオンラインで見ることができる。