Slide 1

Slide 1 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 1 ABEMA と分散トレーシングのあゆみ 2024 June 25th tetsuya28

Slide 2

Slide 2 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 2 2 はじめに 山本 哲也 2021 年新卒 AbemaTV - E.M. of Developer Productivity X : @_tetsuya28 技術: Kubernetes / Anthos Service Mesh / Open Telemetry / Grafana / Gatekeeper / Terraform 趣味: 旅行 / 英語 / 映画

Slide 3

Slide 3 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 3 3 最近の買い物 ※ どこの回し者でもありません

Slide 4

Slide 4 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 4 4 話すこと / 話さないこと ❏ 話すこと ❏ ABEMA での分散トレーシングの導入の背景 ❏ 現在の分散トレーシング基盤の構成を取っている理由 ❏ ABEMA での導入推進 / 活用方法 ❏ 話さないこと ❏ 分散トレーシングの基礎技術 ❏ OpenTelemetry の細かな設定 ❏ 具体的なコストやリクエスト数などの数値

Slide 5

Slide 5 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 5 5 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ

Slide 6

Slide 6 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 6 6 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ

Slide 7

Slide 7 text

AbemaTV, Inc. All Rights Reserved
 7 ABEMA 無料動画・話題の作品が楽しめる新しい未来のテレビ

Slide 8

Slide 8 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 8 8 ABEMA とは

Slide 9

Slide 9 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 9 9 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ

Slide 10

Slide 10 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 10 10 分散トレーシングの導入に至った背景 GitHub - Netflix/vizceral: WebGL visualization for displaying animated traffic graphs マイクロサービスが増えてアーキテクチャが複雑化している ❏ マイクロサービスの状態を俯瞰するために Netflix/vizceral* を元に独自の 可視化ツールが存在する ❏ AlloyDB などの新しいサービスを取り込む改修が辛くなってきている

Slide 11

Slide 11 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 11 11 分散トレーシングの導入に至った背景 負荷試験のボトルネックが把握できない ❏ メトリクスは全マイクロサービスで詳細に取得できている ❏ 負荷試験を行う際にどこでリクエストが詰まっているのかを探しづらい ❏ Anthos Service Mesh を用いてサービスメッシュを構築しているが意外と istio-proxy で詰まることが多い ❏ istio-proxy で詰まるとマイクロサービス側のメトリクスに反映されない ❏ メトリクスは統計情報のため、特定のリクエストの状態が可視化できない

Slide 12

Slide 12 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 12 12 分散トレーシング導入初期 ❏ Amazon EKS : AWS App Mesh × AWS X-Ray コントロールプレーンの設定で一括で導入 ❏ Google Kubernetes Engine : Anthos Service Mesh × Cloud Trace コントロールプレーンで一括で導入、サンプリングレートはマイクロサービ スごとに設定

Slide 13

Slide 13 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 13 13 分散トレーシング導入初期 ABEMA での導入時の開発者側の発表は以下をご覧ください なぜ「ABEMA」は「OpenTelemetry」を採用したのか? 導入を決意した理由 とその進め方 - ログミーTech

Slide 14

Slide 14 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 14 14 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ

Slide 15

Slide 15 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 15 15 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない

Slide 16

Slide 16 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 16 16 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない

Slide 17

Slide 17 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 17 17 導入して見えてきた課題 AWS と Google Cloud の違いによる学習コスト ❏ マイクロサービスの要件によって AWS と Google Cloud を使い分けている ❏ OpenTelemetry 導入以前はスパンの実装を行うのに X-Ray と Cloud Trace でそれぞれ計装する必要があった ❏ 開発者が X-Ray と Cloud Trace のそれぞれの利用方法を知る必要がある

Slide 18

Slide 18 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 18 18 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない

Slide 19

Slide 19 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 19 19 導入して見えてきた課題 コストが高い ❏ X-Ray : 1 トレースあたり 0.0000005 ドル = 100 万スパンごとに $0.5 ❏ Cloud Trace : 100 万スパンごとに $0.20 ❏ 仮に Cloud Trace への書き込みが 10,000 spans / sec → $5,184 / 月 ❏ ABEMA ではデフォルトではサンプリングレートを 0.01% に設定している Cloud Trace

Slide 20

Slide 20 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 20 20 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない

Slide 21

Slide 21 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 21 21 導入して見えてきた課題 クラウドを跨ったマイクロサービスがトレースできない ❏ 前述のように ABEMA では AWS と Google Cloud を組み合わせています ❏ マイクロサービスレベルで AWS と Google Cloud を跨いで通信すること があります ❏ 各クラウドが独自のヘッダーを実装 / 利用している ❏ AWS : X-Amzn-Trace-Id=Field=VERSION-TIME-ID ❏ Google Cloud : X-Cloud-Trace-Context=TRACE_ID/SPAN_ID;o=OPTIONS Application Load Balancer のリクエストをトレースする - Elastic Load Balancing Trace context | Google Cloud

Slide 22

Slide 22 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 22 22 導入して見えてきた課題 クラウドを跨ったマイクロサービスがトレースできない ❏ 共通で使えるように RFC も定義されている ❏ B3 Single ❏ b3=TRACE_ID-SPAN_ID-SAMPLING_STATE-PARENT_SPAN_ID ❏ B3 Multiple ❏ X-B3-TraceId=XXX / X-B3-ParentSpanId=XXX / X-B3-SpanId=XXX / X-B3-Sampled=XXX ❏ W3C ❏ traceparent=VERSION-TRACEID-SPAN_ID-TRACE_FLAGS

Slide 23

Slide 23 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 23 23 導入して見えてきた課題 これらの課題を解決を目的として...

Slide 24

Slide 24 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 24 24

Slide 25

Slide 25 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 25 25 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ

Slide 26

Slide 26 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 26 26 現状の構成 Google Kubernetes Engine OpenTelemetry Collector Grafana Tempo Amazon EKS OpenTelemetry Collector マイクロサービス マイクロサービス OpenTelemetry Operator OpenTelemetry Operator Google Kubernetes Engine Cloud Trace

Slide 27

Slide 27 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 27 27 Otelcol の設定 on EKS AWS Distro for OpenTelemetry を利用する ❏ 分散トレーシングのバックエンドとして X-Ray 以外を利用できる

Slide 28

Slide 28 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 28 28 Otelcol の設定 on EKS App Mesh controller からトレースを Otelcol へ送信 ❏ AWS Distro for OpenTelemetry を利用してトレースバックエンドに Otelcol を設定しています

Slide 29

Slide 29 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 29 29 Otelcol の設定 on EKS App Mesh controller からトレースを Otelcol へ送信 ❏ AWS Distro for OpenTelemetry を利用してトレースバックエンドに Otelcol を設定しています tracing.provider=jaeger にすることで B3 ヘッダーを解釈できる

Slide 30

Slide 30 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 30 30 Otelcol の設定 on GKE Otelcol から Tempo と併せて Cloud Trace を利用 ❏ Cloud Trace から Tempo への移行期間のため開発者が自由にどちらも使え るように二重で書き込みを行っている

Slide 31

Slide 31 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 31 31 Otelcol に送るための設定 on GKE ASM による istio-proxy のトレースを Otelcol へ送信 ❏ Pod の metadata.annotations に個別に送信先を設定する ❏ B3 / W3C TraceContext / Google Cloud Trace / gRPC TraceBin 形式を サポートしている

Slide 32

Slide 32 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 32 32 Otelcol に送るための設定 on GKE アプリケーション内部のトレースを Otelcol へ送信 ❏ アプリケーション内部でスパンを生成している場合は Exporter 初期化時に 設定を行います ❏ ABEMA では SDK を実装しており gRPC で Otelcol に接続するような関数 を用意してあります

Slide 33

Slide 33 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 33 33 Otelcol に送るための設定 on GKE アプリケーション内部のトレースを Otelcol へ送信

Slide 34

Slide 34 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 34 34 Otelcol に送るための設定 on GKE B3 プロトコルでトレースの情報を伝播できるように ❏ ASM Envoy では B3 single header はサポートされていないので B3 multiple header を利用します

Slide 35

Slide 35 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 35 35 導入当初の現実 開発者がすぐには新しいツールに慣れない ❏ 当初は慣れている X-Ray や Cloud Trace をそのまま利用する人が多かった ❏ 開発者側に影響がないように導入を進めていたことが裏目に出て OpenTelemetry を導入したことや Grafana Tempo でトレース情報が見れるこ とを知らない人も多かった

Slide 36

Slide 36 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 36 36 ABEMA での導入推進 Product Div. Platform Div. Content Div. Data Div. CTO Cloud Platform Developer Productivity Product Backend … … … ABEMA の組織図 ( 概念 ) …

Slide 37

Slide 37 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 Developer Productivity 37 37 ABEMA での導入推進 Product Div. Platform Div. Content Div. Data Div. CTO Cloud Platform Product Backend … … … 分散トレーシングの文脈における各チームの役割 ストリームアラインドチーム プラットフォームチーム イネイブリングチーム …

Slide 38

Slide 38 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 38 38 ABEMA での導入推進 ABEMA での開発の方針 ❏ Cloud Platform はスケールメリットの出る仕組みを構築・運用している ❏ Kubernetes / モニタリング / CI / CD など ❏ Backend は Cloud Platform の基盤以外を利用しても良い ❏ Developer Productivity は開発者の要件 / 課題をヒアリングしながら適切な ソリューションを提案する ❏ 課題によっては Cloud Platform と協力しながらの検証なども行う

Slide 39

Slide 39 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 39 39 ABEMA での導入推進 Developer Productivity の役割 ❏ 開発者の課題を解決する ❏ 課題 = マイクロサービスの統合試験でボトルネックが見つけられない ❏ 分散トレーシングを使うことに対する成功体験を積んでもらう ❏ ≠ Cloud Platform が提供する OpenTelemetry の基盤を利用してもらう ❏ もちろん Cloud Platform が提供する基盤を利用してくれると嬉しい

Slide 40

Slide 40 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 Developer Productivity の動き方 ❏ アプリケーション側での計装の修正なども手伝う ❏ 負荷試験を行う際に、開発者と一緒にサポートを行う ❏ サンプリングレートの変更 ❏ OpenTelemetry のリソース調整 ❏ Grafana での確認方法 40 40 ABEMA での導入推進

Slide 41

Slide 41 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 41 41 ABEMA における活用事例 負荷試験でのボトルネックの発見 ❏ ABEMA では影響度の大きい新機能のリ リースの際に関連サービスをまとめて負 荷試験を行っています ❏ 負荷試験環境ではサンプリングレートを 必要に応じて 100% にして利用してい ます

Slide 42

Slide 42 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 42 42 ABEMA における活用事例 ❏ DB 負荷が高くリトライを行っている箇所を発見し対応することができた 負荷試験でのボトルネックの発見

Slide 43

Slide 43 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 43 43 今後の展望 ❏ ABEMA ではまだ Contrib Distro を利用しているのでベストプラクティス に沿って OpenTelemetry Collector Builder を用いてカスタマイズする OpenTelemetry Collector Contrib Distro OpenTelemetry Collector をベストプラクティス*に沿って 改修していく

Slide 44

Slide 44 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 44 44 今後の展望 OpenTelemetry のパフォーマンスチューニング OpenTelemetry Collector Contrib Distro ❏ オブザーバビリティはお金がかかる 💸 ❏ コスト ( リソース ) を削ると取れ るデータが減ってしまう →→→ ❏ パフォーマンスがいいとサンプリング レートを上げていくことができる ❏ 取れる情報が増える = 可観測性向上

Slide 45

Slide 45 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 45 45 今後の展望 スパンの計装のサポート ❏ ABEMA ではクラウドの新しいソリューションへの移設を行っている ❏ 直近では AlloyDB へのスパンが表示できていない ❏ 本来は istio-proxy でスパンが生成されることを期待しているが、 ABEMA では istio-proxy の負荷の観点からデータベースへの通信は istio-proxy を通さないことが多い ❏ 手動計装を行うのに必要なライブラリの選定や検証を行う必要がある

Slide 46

Slide 46 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 46 46 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ 現状の構成 ❏ まとめ

Slide 47

Slide 47 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 47 47 OpenTelemetry まとめ ❏ 現在の構成におけるメリット ❏ 開発者は EKS / GKE を気にせずに分散トレーシングを利用できる ❏ 現在の構成におけるデメリット ❏ B3 ヘッダーを利用しているため X-Amzn-Trace-Id や X-Cloud-Trace-Context を利用した機能が利用できないことがある

Slide 48

Slide 48 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 48 48 分散トレーシングまとめ ❏ ABEMA での活用方法 ❏ 負荷試験でのボトルネックの発見 ❏ ABEMA での活用の難しさ ❏ ( 分散トレーシングに限らず ) ある程度の規模になってくると費用対効 果を考えながら、利用する場面を選ぶ必要がある

Slide 49

Slide 49 text

AbemaTV, Inc. All Rights Reserved