Slide 1

Slide 1 text

2025-10-24 芝尾幸一郎 @shibacow Mirrativを支えるシンプル で堅牢な分析基盤

Slide 2

Slide 2 text

自己紹介 ● 2005年オンラインゲームサーバサイドエンジニ アとしてキャリアをスタート ● 複数の会社で、データ分析基盤構築に関わる ● 特にGCPなかでもBigQueryについては初期から 触っている。 ● 執筆した。ゲーム開発が変わる!Google Cloud Platform 実践インフラ構築 2 芝尾幸一郎 ミラティブ事業本部データ分析チーム データ分析基盤担当

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

4 データ分析基盤紹介

Slide 5

Slide 5 text

5 分析基盤の特徴

Slide 6

Slide 6 text

6 シンプルで堅牢

Slide 7

Slide 7 text

2020年以降 大きなトラブルなし 7

Slide 8

Slide 8 text

分析基盤図 8

Slide 9

Slide 9 text

9 特徴 - シンプルな構成 - 本番環境との分離 - 冪等性

Slide 10

Slide 10 text

10 個別紹介

Slide 11

Slide 11 text

11 データ入力部 行動 ログ DB

Slide 12

Slide 12 text

12 データ入力部 データベース(状態データ) embulkを使って本番 環境DBから分析基盤BQ上にデータをロード 行動ログ - fluentdを利用して、本番環境のログ を分析基盤BQ上の行動ログ日別テーブルに格納

Slide 13

Slide 13 text

13 入力部-落とし穴と工夫

Slide 14

Slide 14 text

14 本番環境とは分離(VPCPeering) 本番環境DB 本番環境 分析基盤 分析基盤BQ ネットワーク分離 GCP VPC Peering 本番環境と分析環境でネット ワーク的には分離。 本番環境データベースに特定 の環境・ポートからしかアク セス出来ないようにする。

Slide 15

Slide 15 text

ネットワーク分離により分析基盤にクラッカーが侵入しても本番環境には悪さは出 来ない。 分析基盤環境で何らかの不具合が発生しても本番環境に悪影響を与えない。 ネットワーク的に分離することで本番環境への悪影響を最小限に保つ。 15 本番環境接続とVPC Peering

Slide 16

Slide 16 text

落とし穴: 分析基盤のembulkで集計に時間がかかるSQLを実行した際に、本番環 境接続VPC Peeringで無通信と判断され、本番環境とのリンク切断(その当時は、 600秒で切断された)。 解決方法: OS レイヤーで、keepaliveの設定は 7200秒から60秒に変更 embulkのjdbcパラメーターで、tcpKeepAlive:trueを設定。定期的にパケットを 送信してリンク切断を防ぐ。 16 VPC Peeringの落とし穴 一定時間無通信で接続切れる

Slide 17

Slide 17 text

17 行動ログ-行動種別でテーブル分離

Slide 18

Slide 18 text

18 [問題]日付テーブルに行動ログを格納-その後分配 行動ログ_YYYYMMDD 視聴 配信 コメント 着替え 行動種別で振り分け

Slide 19

Slide 19 text

行動種別振り分け。SQLを使うと行動種別ごとに select insert しかし、この手法は、テーブルごとに行わねばならず非効率。 解決 GCP dataflowを使う。 BigQueryのテーブルから、行動種別ごとにテーブルを動的に選んでデータを格納 できる。 19 [解決]効率的な行動種別振り分け

Slide 20

Slide 20 text

20 [解決]効率的な行動種別振り分け 行動ログ_YYYYMMDD 視聴 配信 コメント 着替え 行動種別で動的に振 り分け DataflowのBigQuery TableDestinationで動的に テーブルにインサートでき る

Slide 21

Slide 21 text

本番のテーブルで知らない間にスキーマが増えている。 知らない間に、新しいフィールドが追加される。 事前に、分析チームに情報を共有してと言っても忙して実行できない。 embulkで select * from hoge とクエリーを設定していると、分析基板上のテー ブルと本番テーブルでスキーマが異なりロードエラーになる。 21 [問題]本番テーブルで知らない間にスキーマが変わる

Slide 22

Slide 22 text

22 [解決]本番テーブルスキーマ変更検知チェッカー 本番テーブルでスキーマが追加され たときに、スキーマ変更を検知して アラートを出すプログラムを書いた。 人力で情報を共有しようとすると取 りこぼすので、システム化したほう が良い

Slide 23

Slide 23 text

23 集計部

Slide 24

Slide 24 text

24 集計部

Slide 25

Slide 25 text

集計部とは、行動ログとデータベースから意味のある単位にデータをサマライズす ること(データウェアハウス) 例えば1配信単位や1視聴単位ギフト送信に対する属性情報の付与など分析者が分 析しやすい粒度に情報を集約する。 深夜バッチで前日のデータを集計(始業までに集計が終わる必要あり) 25 集計部の特徴

Slide 26

Slide 26 text

26 工夫

Slide 27

Slide 27 text

27 データウェアハウステーブル作成は冪等性を保つ データウェアハウステーブルは集計に失敗しても誰でも再実行できるように冪 等性を保っている。集計結果のレコードサイズが小さい場合には、全部洗替。 大きい場合には、前日分のみを上書き。 何回実行しても、同じテーブル全体としては同じ件数になるように作成した。 DigDag上でRUNボタンを 押せばOK

Slide 28

Slide 28 text

安全なリトライ処理の実現 バッチ処理には、エラーがつきもの。エラーがあった際には、リトライを行うこと になる。冪等性が守られるように作っておけば、何度でも安全にリトライできる。 データパイプラインの復旧の容易さ 中間テーブル作成全体で、冪等性と保っていれば、エラーが発生したステップ以降 を再試行すれば良いので、データパイプラインの復旧が容易になる。 28 冪等性はなぜ大事か

Slide 29

Slide 29 text

29 分析可視化部

Slide 30

Slide 30 text

30 分析・可視化部

Slide 31

Slide 31 text

31 落とし穴と工夫

Slide 32

Slide 32 text

32 [問題]redashでエラー Redashで意味不明のエラー

Slide 33

Slide 33 text

33 [解決] Chromeの自動翻訳ONだと前記のエラーが出ることがある。

Slide 34

Slide 34 text

Redashには検索が付いているが、なかなかマッチしな い。 queryの中身をうまく検索できない。クエリーにあるコ メントなども検索できない。タイトルは検索できるが、 クエリーの中身は検索できないという指摘がある。 34 [問題]Redashの検索が使いづらい

Slide 35

Slide 35 text

35 [解決]Redashの全クエリを定期的にBQに格納 BigQuery APIでRedashの全クエリ ーを取得 Redahのクエリー検索は使 わずに、BigQueryでクエリ ーを全文検索。 クエリーで使ったテーブル やコメント、タイトル説明 文など何でもマッチさせる

Slide 36

Slide 36 text

36 分析基盤運用

Slide 37

Slide 37 text

37 分析基盤担当者の悩み 少人数運用(1-2名)

Slide 38

Slide 38 text

アラートに気付けない。特に深夜にバッチが実行 されるので、就寝中にアラートに気づきたい。 38 [問題]分析基盤担当者の悩み

Slide 39

Slide 39 text

39 解決-アラート通知システム(注意音が出ます) 天 国 と 地 獄 . mp4 slackの分析基盤アラートチャン ネルを監視して、アラートが出 たら、枕元で音楽がなる仕組み を作る。 寝てても気づくことができる。

Slide 40

Slide 40 text

40 スイッチサイエンス M5 Atom ECHO 電子工作で使われるモジュール。 ネットワーク接続が出来て、小型の スピーカーが付いているので寝室に おいても邪魔になりません。

Slide 41

Slide 41 text

41 アラートシステムの仕組み 分析基盤のアラートが流れるslackチャンネルを 監視して、アラートが上がれば、天国と地獄が流 れる。

Slide 42

Slide 42 text

42 今後の注力事例

Slide 43

Slide 43 text

43 今後の注力事例 非構造化データの活用 - 分析基盤に格納された動画、音声、サムネイル、コメントなどを分析に活用し、 ユーザー解像度を上げる 生成AIの活用 - 分析において生成AIの活用を推進する

Slide 44

Slide 44 text

ご興味を持ってくださった方は、お気軽にご連絡ください! 44 さいごに-We are hiring! ミラティブ採用サイト