はじめまして、データ分析基盤チームの藤田と申します。
2018年12月15日に開催された Developers boost において「ゲーム運用を影から支えるCygamesのデータ分析基盤について」というタイトルで、弊社のデータ分析基盤の仕組みなどをご紹介させていただきました。
講演にお越しいただいた皆様には改めて御礼申し上げます。
本講演では、Amazon Redshiftを中心としたCygamesのデータ分析基盤の仕組みについて紹介させていただきました。
以下が講演資料となります。
講演の内容について
Cygamesの分析基盤の役目はゲームDBやサーバーログなど、ゲーム環境のデータを分析用にRedshiftに取り込む事です。
Redshiftに取り込まれたデータは分析業務だけでなく、内製BIツールのリソースやゲームのCS対応のために利用されることもあります。
分析業務ではリリース直後やイベント開始直後のいわゆる速報でのアクセス数やKPIが知りたいというケースが度々あるため、データを即座に取り込める事が求められます。
また、アップデートが頻繁に起こるソーシャルゲームにおいては負荷対策などのために急にゲームDBへのスキーマ変更などが入ることもあり、その際にスキーマの変更が起きたためにデータの取り込みが止まってしまう、ということは避けなくてはなりません。
もちろんゲーム運用チームとの連携は密に取り、スキーマの変更の情報などは共有を受ける体制を取っていますが、ゲームの安定した運用のために止むを得ず急な変更が入ることは稀にあるため、そういった状況でも運用を支えられる基盤を構築・運用する事がデータ分析基盤チームのミッションになると考えています。
要件をまとめると以下になります。
- いつでも必要な時に必要な期間のデータがアドホックに取り込めること
- ゲーム側でスキーマ変更があってもデータの取り込みに失敗しないこと
これらを満たすための基盤を弊社ではAWSを利用して運用しており、本講演で紹介させていただきました。
詳細は上記の講演資料をご覧いただければ幸いです。
また、今回のセッションでは紹介できなかったのですが、アドホックにデータを取り込むための工夫やRedshift上でのデータの持たせ方などはまた別の機会でお伝えできればと思います。
講演資料の補足
Togetter のまとめなどを見ていて、いくつか資料だけでは前提部分が足りてない部分があると感じたのでこの場をお借りして補足させていただきたいと思います。
Redshift上のデータの保持期間について
過去のデータが必要になるという事を講演内で述べましたが、前提として各ゲーム用のRedshiftのインスタンスである程度古くなったログデータは削除しています。
これは単純にコストの問題で、データを永続的に保持し続けるとRedshiftのストレージのためにコストがかなりかかってしまうためです。
Redshiftからデータを消しても、資料(p.25) にあるようにS3にデータがアーカイブされているため、これを利用することで、必要な期間のデータを即座にロードし直す事ができます。
古いスキーマのテーブルと新しいスキーマのテーブルを跨いだ分析が必要になった場合
基本的にRedshift上に別テーブルでもデータが入ってさえいればほとんど時間をかけずに対応はできる事が多いので、両方のテーブルを包含するようなスキーマで結合するか、その対応も待てない場合は分析クエリ上でJOINなどして結合することになります。
もちろんうまい具合に新旧のスキーマを自動で結合できるような仕組みが理想なのですが、一番避けたいのはスキーマの変更によりデータがRedshift上に入っておらず取り込み処理を1からやりなおしという状況なので、データをRedshiftに入れる事だけは最優先にしています。
おわりに
弊社のデータ分析基盤チームとしては初めて講演の機会を経て、大変貴重な経験をさせて頂けたと思っています。
今回の講演がデータ分析基盤の業務を行なっている方々の参考になりましたら幸いです。
Cygamesの掲げる「最高のコンテンツを作る」というミッションを支えられるデータ分析基盤を目指し、今後も改善を続けていきます。
Cygamesでは、データ分析基盤を一緒に開発していけるエンジニアを募集しています。
今回の講演や資料をご覧になり、興味をお持ちいただけましたらデータマイニング(分析基盤開発)の採用ページをご確認ください。