$30 off During Our Annual Pro Sale. View Details »

TVer の月間ユニークブラウザ数 2700 万のサービスを支える統合ログ基盤の開発

TVer の月間ユニークブラウザ数 2700 万のサービスを支える統合ログ基盤の開発

2023/05/23
Google Cloud Day ’23 Tour

イベントURL :
https://cloudonair.withgoogle.com/events/google-cloud-day-23

TVer Inc.
PRO

May 23, 2023
Tweet

More Decks by TVer Inc.

Other Decks in Technology

Transcript

  1. TVer の月間ユニークブラウザ数
    2700 万のサービスを支える統合
    ログ基盤の開発
    黒瀬祐平
    株式会社TVer
    サービス事業本部プロダクトタスク

    View Slide

  2. スピーカー自己紹介
    ● 株式会社TVer (2021/4 ~)
    ○ 2020/3 ~ 2021/3は株式会社TVer Technologiesに所属
    ● データシステムの開発・運用を担当
    ● 検索基盤も開発・運用を担当
    ● 趣味は語学とダンス
    ● 好きなGoogle Cloudのサービス: Cloud Logging
    のLog Analytics
    黒瀬祐平
    株式会社TVer プロダクトタスク

    View Slide

  3. TVerについて

    View Slide

  4. ● 民放テレビ局のコンテンツを配信する民放公式テレビ配信サービス
    ● 毎週約650番組を無料でPC・スマートフォン・タブレット・TVに配信
    TVerについて

    View Slide

  5. TVerについて

    View Slide

  6. TVerについて

    View Slide

  7. TVerリニューアルと TVer ID
    ● TVer IDに登録しログインすることで、デバイス間のマイリスト連携などの機能が利用
    可能に

    View Slide

  8. 統合ログ基盤開発の背景

    View Slide

  9. 背景
    ● 今後のサービス改善のため、サービスの
    利用状況やニーズを複数の観点から分
    析したい
    意思決定
    情報収集
    分析 サービス
    展開

    View Slide

  10. ● BigQueryにデータを集約して分析
    ● 収集目的ごとに複数のログ収集サービ
    スを利用
    従来のデータ分析環境
    PC
    Mobile
    BigQuery
    TV
    行動ログ
    収集サービス
    視聴ログ
    収集サービス

    View Slide

  11. ● 異なるログのテーブルの仕様を個別に
    理解する必要があり、分析のオーバ
    ヘッドが増大する
    ● テーブル同士をIDで突合するためのベ
    ンダ調整の手間がかかる
    ○ 異なるカラム名でも実は同じID体系だったりする...
    課題①: 突合の手間がかかる
    PC
    Mobile
    BigQuery
    TV
    行動ログ
    収集サービス
    視聴ログ
    収集サービス

    View Slide

  12. ● 収集できるログはサービスの仕様で決
    まってしまう
    課題②: ログに拡張性がない
    PC
    Mobile
    BigQuery
    TV
    行動ログ
    収集サービス
    視聴ログ
    収集サービス
    仕様外のログ
    収集は不可

    View Slide

  13. ● ログ収集サービスごとに利用料を支払
    う必要があり、コストがかさむ
    ○ 請求書も増えてお金かかっている箇所の深掘りに限界
    がある
    課題③: 費用がかかる
    $
    $
    PC
    Mobile
    BigQuery
    TV
    行動ログ
    収集サービス
    視聴ログ
    収集サービス

    View Slide

  14. ● サービス戦略に合わせて自在にログを
    収集・集約できるログ基盤=TVerTagの
    開発
    実現したいもの
    PC
    Mobile
    BigQuery
    TV
    TVerTag

    View Slide

  15. TVerTagの開発

    View Slide

  16. ● ユーザの行動やコンテンツの視聴状況といった大まかなデータ=ログ種別ごとに集
    計をしたい
    ● ログを集計対象などで適宜スキャン範囲を制限することでクエリのコストを抑えられ
    るようにしたい
    ログ要件

    View Slide

  17. 複数の種別のログを統一的に収集・集約できること


    ② ログおよびシステムに拡張性があること
    リソースの維持費やストレージコスト・クエリコストが小さ
    いこと
    目指したシステム

    View Slide

  18. TVerTag
    収集 集約
    Client
    大まかな仕組み

    View Slide

  19. ログ収集の方針
    ● クライアントはログ種別や各フィールド
    の値を載せてTVerTagへリクエストを送
    信する
    ● TVerTagのエンドポイントはpixelデータ
    を返却し、LBのアクセスログを収集する
    https://cloud.google.com/blog/products/gcp/how-to-do-serverless-pixel-tracking-with-gcp

    View Slide

  20. ● ストレージが安価なGCSにログを集約し、ログ種別ごとのexternal tableとして
    BigQueryに見せる
    ログ集約の方針
    Cloud Logging Cloud Storage
    ETL
    BigQuery
    Bucket A -> Table A
    Bucket B -> Table B
    Bucket C -> Table C

    View Slide

  21. ● BigQueryのexternal tableとしてGCSを参照したときに、所定の形式でGCSのパス
    を切っておくことで指定範囲だけをスキャンさせることができる
    ○ dayだけを指定すればyear/monthを指定しなくてもよい形式に工夫した
    GCS Hive Partitioning
    gs://tableA/year=2023/month=202303
    /day=20230304/*
    gs://tableA/year=2023/month=20230
    4/day=20230305/*
    スキャン
    スキャン
    SELECT * FROM tableA
    WHERE day="20230304"
    SELECT * FROM tableA
    WHERE day="20230305"

    View Slide

  22. ● Cloud Loggingでログ種別ごとにRouter経由でPub/Subへ流す
    ○ ログ種別を後から追加できる
    ● Cloud Run ServiceがPub/SubからログをPullしてGCSへ格納
    ETL処理
    (行動ログ)
    (視聴ログ)
    (イベントログ)
    (行動ログ)
    (視聴ログ)
    (イベントログ)
    Cloud Logging
    Cloud Run

    View Slide

  23. TVerTag
    集約
    収集
    全体構成(初版)
    Client

    View Slide

  24. ● external tableの参照先GCSにもアク
    セス権を付与する必要があり、管理コ
    スト増加につながる
    external tableの問題(1)
    gs://tableA
    tableA
    クエリ実行
    参照
    読み取り権限
    読み取り権限

    View Slide

  25. ● BigLake
    ○ オブジェクトストレージに実データを置
    いているexternal tableをnative
    tableと同じUXで利用できる機能
    ○ '22 7月にGA
    external tableの問題(1)の解決方法
    https://cloud.google.com/bigquery/docs/biglake-intro

    View Slide

  26. ● BigLakeにより、権限管理をGCSから
    BigQueryに移譲することで、
    BigQueryと同じ体系で権限管理が可

    external tableの問題(1)へのアプローチ
    gs://tableA
    tableA
    クエリ実行
    参照
    読み取り権限
    BigLake経由で
    読み取り

    View Slide

  27. gs://tableA/year=2022/month=202204/...
    gs://tableA/year=2022/month=202205/...
    gs://tableA/year=2022/month=202206/...
    ...
    ● GCSのファイル数が多くなってくるとクエリ性能が劣化
    ○ 運用開始当初1分以内に返る集計クエリが2か月後には20分以上かかるように
    external tableの問題(2)
    クエリ実行
    集計結果
    < 1分
    → 20+分

    View Slide

  28. ● BigQueryのnative tableに順次投入していくバッチを追加
    ○ ただしユースケースの都合でexternal tableも現状は存続
    external tableの問題(2)へのアプローチ
    gs://tableA/year=2022/month=202204/...
    gs://tableA/year=2022/month=202205/...
    gs://tableA/year=2022/month=202206/...
    ...
    tableA_20220401
    ...
    tableA_20220501
    ...
    tableA_20220601
    ETL

    View Slide

  29. TVerTag
    全体構成(2版)
    集約
    収集
    追加
    Client

    View Slide


  30. 1日あたりのログ数
    GiB
    1日あたりのログサイズ
    アクセス
    1日のピークにおける秒
    間同時接続数
    920
    21,000
    11
    ● Google Cloudを活用することで、
    リリース以後1年以上の期間にお
    いてTVerTagの安定稼働を実現
    TVerTag運用状況

    ログ欠損発生件数
    0

    View Slide

  31. さらなる改善に向けて

    View Slide

  32. ● 必ずしもGCSを経由しなくてもよくなったため、Cloud LoggingからBigQueryへの
    集約を簡略化を検討中
    ○ コスト削減・運用負荷軽減がねらい
    集約の簡略化
    TVerTag
    集約
    収集
    初版から追加
    Client

    View Slide

  33. 方式検討
    Log Router
    Cloud Logging
    Log Storage
    Cloud Logging
    Cloud Pub/Sub
    Dataset
    BigQuery
    Linked Dataset
    BigQuery
    Table
    BigQuery
    参照用Table
    BigQuery
    ①BigQuery Subscriptionsを利用する方法
    ②Log RouterのSinkにBigQueryを指定する方法
    ③Log Analytics('23 1月GA)のLinked Datasetを利用する方法

    View Slide

  34. ● Cloud LoggingのログをBigQueryのSQLで集
    計できるようにする
    ○ '22 9月にサービスPreview, '23 1月 GA
    ● Log Analyticsを有効化したLog BucketをLog
    RouterのSinkに指定することで利用可能
    ● Log BucketのRetentionが30日以内であれば
    課金されない
    Log Analytics
    https://cloud.google.com/blog/products/data-analytics/moving-to-log-analytics-for-bigquery-export-users

    View Slide

  35. ● Cloud Loggingのログをそのまま参照できる
    Viewを指定Dataset配下に作成する機能
    ● メリット
    ○ Log Bucketに入ってくるログをリアルタイムで
    参照できる
    ○ BigQueryには実データを保持しない
    ○ Viewではtimestampフィールドでpartitioning
    されているためスキャン量を制限可能
    Log AnalyticsのLinked Dataset
    https://cloud.google.com/blog/products/data-analytics/moving-to-log-analytics-for-bigquery-export-users

    View Slide

  36. 新しい構成
    Log Router
    Cloud Logging
    Log Bucket
    Cloud Logging
    Linked Dataset
    BigQuery
    Speed Layer
    BigQuery
    TVerTag
    収集 集約
    Batch Layer
    ETL
    Batch Layer
    BigQuery
    集計用View
    BigQuery
    ※開発中

    View Slide

  37. ● 結果的にPub/SubやCloud Run・GCSなどをショートカットする想定
    集約の簡略化
    TVerTag
    集約
    収集
    削除
    Client
    永続化処理

    View Slide

  38. 結論

    View Slide

  39. 結論
    ● TVerのサービス戦略に合わせて統一的に拡張性高くログを収集・集約できるログ
    基盤をGoogle Cloudのサービスや機能を活用して構築した
    ○ ①突合の手間がかかる
    ■ →複数のログ種別を一つのログ基盤で統一的に収集・集約が可能
    ○ ②ログ種別を後から追加可能
    ■ →ログおよびシステムの拡張性を実現
    ○ ③Google Cloudのサービスでコストを抑えたデータ基盤を開発
    ■ →コストを最小限に抑えた構成で実現

    View Slide

  40. データマート
    今後の展望
    ● 体系化されたデータマートの構築
    ● さらなるサービスや機能を利用した構成改善
    TVerTag
    Client
    ユースケース用
    テーブル
    ユースケース用
    テーブル

    View Slide

  41. Thank you.

    View Slide