天然パーマです。

Google BigQueryがサービスのデバグに役に立った話

GoogleがCloud Platformの一貫として提供するBigQueryというサービス。データウェアハウスともビッグデータ解析ツールとも言われていますが、今回は「サービスのデバグに便利」ということをガチの実話を交えて話してみましょう。

f:id:kamawada:20151208094923p:plain

BigQueryざっくり紹介

BigQueryはの機能をわかりやすく言うならば

億超えるようなレコードへのクエリでも10秒程度で結果を返してくれる便利なカラム型データベース

と表現出来るでしょう。特徴として以下があげられます。

  • 事前に簡単なスキーマ定義を行う
  • CSVやストリーミングでデータ挿入
  • 特化したSQLでSELECT文を発行
  • 更新系はSQL使って叩けない
  • リアルタイムで情報を取ってくるためのデータストアには向かない
  • 重たいクエリを大量に実行しなければ... 安い

Amazon Web ServicesだとRedShiftが対応するサービスなのですが、カジュアルに使える意味でBigQueryを選んでます。

アクセスログ+αを流し込む

僕が開発しているBoketeでは、Webやモバイルアプリ含む全てのサービスは必ず「JSONRPCで実装されたWebAPI」を参照することにしています。このアーキテクチャ云々に関しては、なかなか上手くいっていて、詳しく書きたいところですが、また次の機会に。

で、このアーキテクチャですと、WebAPIのアクセスを見ればクライアントソフトウェア、しいては「ユーザー」の行動を把握することにつながります。そこで僕らはBigQuery事始めとしてApache Common Log相当の情報にアプリケーション固有の簡単なユーザー情報を付加し、BigQueryにストリーミングで逐一流し込んでいます。実装を簡単の流れを説明すると

  1. WebAPIアプリがJSON形式のログファイルをローカルストレージに書き出す
  2. 上記アプリと同じホストで動かしているfluentdがログをtailして集約サーバに投げる
  3. 集約サーバのfluentdがそれを受け止めBigQueryに投げるpluginを使ってデータ挿入

という具合です。

バグの原因追求の事例

さて本題。最近あった事例で、バグの原因追求にBigQueryが役に立った件を紹介します。

一部のとある状況下、具体的に言うと、モバイルアプリの「とあるOSのとあるバージョン」で不具合が生じていました。その場合

他の環境だと動くからネイティブクライアントのバグだよね〜

と、その責任を、アプリ担当である陳さんにある時期まで委ねてたのですが、どうも解決しないらしい。ただ問題は「認証周り」で起こっている可能性が高い。そこで、一度、BigQueryの管理画面からクエリを発行。ユーザーの動向を見るとやはり「特定のOSかつバージョン」でバグってることがすぐにわかりました。

f:id:kamawada:20151208095020p:plain

ただ、これだけだと原因追求としては甘いので、急いでBigQueryのスキーマとアプリのコードを一部を変更し、今まで取れてなかった、認証用のTokenもログギングしてみました。そして上記した通り、バグを踏んでいるようなユーザーのToken一覧を取得。よくよくDBと照らし合わせると「そのToken存在しないじゃん!」ってことになりまして「ここか〜」という具合。急いで、陳さんに連絡して「有効期限の切れたTokenのリフレッシュ処理」がうまくいっているかどうか?を確認したところ「そのバージョンのみ」諸々の事情で出来てなかったことが判明。これでバグの解消につながったのです。

まとめ

このように、BigQueryは雑にデータ放り込んでおいても、あとあとの「ログ追い」が非常に楽です。SQLで条件が指定できるし、多量のレコードあろうとも10秒前後で結果は返ってくる。さらにはSQLを書けるConsoleがついてくるのでお手軽です。便利に漁れるログの保全庫としてBigQueryを使うのもありでしょう。また、こうした用途の他にも、ちょうど今、TableauやBIMEなどのBIツールと連動させたデータ分析を試しているところなので、楽しいです!

PS.

そいや、現在、Amazon Web Servicesさんがpowered byなCTO Night&Dayというイベントに来ています...


Google BigQuery

Google BigQuery

  • 作者: Jordan Tigani,Siddartha Naidu,Sky株式会社玉川竜司
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2015/03/23
  • メディア: 大型本
  • この商品を含むブログを見る

Google BigQueryではじめる自前ビッグデータ処理入門

Google BigQueryではじめる自前ビッグデータ処理入門