Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OpenTelemetry Meetup 2024-06 - ABEMA と分散トレーシングのあゆみ
Search
tetsuya28
June 25, 2024
Technology
4
810
OpenTelemetry Meetup 2024-06 - ABEMA と分散トレーシングのあゆみ
https://opentelemetry.connpass.com/event/317170/
tetsuya28
June 25, 2024
Tweet
Share
More Decks by tetsuya28
See All by tetsuya28
Grafana エコシステムの活用事例 on ABEMA
tetsuya28
6
1.1k
俺的 Four Keys 解釈
tetsuya28
0
370
20240326_replace_with_cloud_workflows
tetsuya28
0
47
Other Decks in Technology
See All in Technology
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
220
Storage Browser for Amazon S3
miu_crescent
1
170
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
2024年にチャレンジしたことを振り返るぞ
mitchan
0
140
5分でわかるDuckDB
chanyou0311
10
3.2k
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
310
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
16
4.1k
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
150
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
3
290
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
220
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
150
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
250
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
The Invisible Side of Design
smashingmag
298
50k
A Tale of Four Properties
chriscoyier
157
23k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Rails Girls Zürich Keynote
gr2m
94
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
What's in a price? How to price your products and services
michaelherold
243
12k
Designing for Performance
lara
604
68k
Optimizing for Happiness
mojombo
376
70k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
4 Signs Your Business is Dying
shpigford
181
21k
Transcript
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
1 ABEMA と分散トレーシングのあゆみ 2024 June 25th tetsuya28
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 趣味: 旅行 / 英語 / 映画
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
3 3 最近の買い物 ※ どこの回し者でもありません
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
4 4 話すこと / 話さないこと ❏ 話すこと ❏ ABEMA での分散トレーシングの導入の背景 ❏ 現在の分散トレーシング基盤の構成を取っている理由 ❏ ABEMA での導入推進 / 活用方法 ❏ 話さないこと ❏ 分散トレーシングの基礎技術 ❏ OpenTelemetry の細かな設定 ❏ 具体的なコストやリクエスト数などの数値
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
5 5 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
6 6 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ
AbemaTV, Inc. All Rights Reserved 7 ABEMA 無料動画・話題の作品が楽しめる新しい未来のテレビ
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
8 8 ABEMA とは
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
9 9 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ
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 などの新しいサービスを取り込む改修が辛くなってきている
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
11 11 分散トレーシングの導入に至った背景 負荷試験のボトルネックが把握できない ❏ メトリクスは全マイクロサービスで詳細に取得できている ❏ 負荷試験を行う際にどこでリクエストが詰まっているのかを探しづらい ❏ Anthos Service Mesh を用いてサービスメッシュを構築しているが意外と istio-proxy で詰まることが多い ❏ istio-proxy で詰まるとマイクロサービス側のメトリクスに反映されない ❏ メトリクスは統計情報のため、特定のリクエストの状態が可視化できない
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 コントロールプレーンで一括で導入、サンプリングレートはマイクロサービ スごとに設定
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
13 13 分散トレーシング導入初期 ABEMA での導入時の開発者側の発表は以下をご覧ください なぜ「ABEMA」は「OpenTelemetry」を採用したのか? 導入を決意した理由 とその進め方 - ログミーTech
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
14 14 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
15 15 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
16 16 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない
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 のそれぞれの利用方法を知る必要がある
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
18 18 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない
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
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
20 20 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない
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
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
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
23 23 導入して見えてきた課題 これらの課題を解決を目的として...
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
24 24
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
25 25 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ
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
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
27 27 Otelcol の設定 on EKS AWS Distro for OpenTelemetry を利用する ❏ 分散トレーシングのバックエンドとして X-Ray 以外を利用できる
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
28 28 Otelcol の設定 on EKS App Mesh controller からトレースを Otelcol へ送信 ❏ AWS Distro for OpenTelemetry を利用してトレースバックエンドに Otelcol を設定しています
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 ヘッダーを解釈できる
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
30 30 Otelcol の設定 on GKE Otelcol から Tempo と併せて Cloud Trace を利用 ❏ Cloud Trace から Tempo への移行期間のため開発者が自由にどちらも使え るように二重で書き込みを行っている
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 形式を サポートしている
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
32 32 Otelcol に送るための設定 on GKE アプリケーション内部のトレースを Otelcol へ送信 ❏ アプリケーション内部でスパンを生成している場合は Exporter 初期化時に 設定を行います ❏ ABEMA では SDK を実装しており gRPC で Otelcol に接続するような関数 を用意してあります
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
33 33 Otelcol に送るための設定 on GKE アプリケーション内部のトレースを Otelcol へ送信
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
34 34 Otelcol に送るための設定 on GKE B3 プロトコルでトレースの情報を伝播できるように ❏ ASM Envoy では B3 single header はサポートされていないので B3 multiple header を利用します
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
35 35 導入当初の現実 開発者がすぐには新しいツールに慣れない ❏ 当初は慣れている X-Ray や Cloud Trace をそのまま利用する人が多かった ❏ 開発者側に影響がないように導入を進めていたことが裏目に出て OpenTelemetry を導入したことや Grafana Tempo でトレース情報が見れるこ とを知らない人も多かった
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 の組織図 ( 概念 ) …
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 … … … 分散トレーシングの文脈における各チームの役割 ストリームアラインドチーム プラットフォームチーム イネイブリングチーム …
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 と協力しながらの検証なども行う
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
39 39 ABEMA での導入推進 Developer Productivity の役割 ❏ 開発者の課題を解決する ❏ 課題 = マイクロサービスの統合試験でボトルネックが見つけられない ❏ 分散トレーシングを使うことに対する成功体験を積んでもらう ❏ ≠ Cloud Platform が提供する OpenTelemetry の基盤を利用してもらう ❏ もちろん Cloud Platform が提供する基盤を利用してくれると嬉しい
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
Developer Productivity の動き方 ❏ アプリケーション側での計装の修正なども手伝う ❏ 負荷試験を行う際に、開発者と一緒にサポートを行う ❏ サンプリングレートの変更 ❏ OpenTelemetry のリソース調整 ❏ Grafana での確認方法 40 40 ABEMA での導入推進
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
41 41 ABEMA における活用事例 負荷試験でのボトルネックの発見 ❏ ABEMA では影響度の大きい新機能のリ リースの際に関連サービスをまとめて負 荷試験を行っています ❏ 負荷試験環境ではサンプリングレートを 必要に応じて 100% にして利用してい ます
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
42 42 ABEMA における活用事例 ❏ DB 負荷が高くリトライを行っている箇所を発見し対応することができた 負荷試験でのボトルネックの発見
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
43 43 今後の展望 ❏ ABEMA ではまだ Contrib Distro を利用しているのでベストプラクティス に沿って OpenTelemetry Collector Builder を用いてカスタマイズする OpenTelemetry Collector Contrib Distro OpenTelemetry Collector をベストプラクティス*に沿って 改修していく
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
44 44 今後の展望 OpenTelemetry のパフォーマンスチューニング OpenTelemetry Collector Contrib Distro ❏ オブザーバビリティはお金がかかる 💸 ❏ コスト ( リソース ) を削ると取れ るデータが減ってしまう →→→ ❏ パフォーマンスがいいとサンプリング レートを上げていくことができる ❏ 取れる情報が増える = 可観測性向上
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
45 45 今後の展望 スパンの計装のサポート ❏ ABEMA ではクラウドの新しいソリューションへの移設を行っている ❏ 直近では AlloyDB へのスパンが表示できていない ❏ 本来は istio-proxy でスパンが生成されることを期待しているが、 ABEMA では istio-proxy の負荷の観点からデータベースへの通信は istio-proxy を通さないことが多い ❏ 手動計装を行うのに必要なライブラリの選定や検証を行う必要がある
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
46 46 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ 現状の構成 ❏ まとめ
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
47 47 OpenTelemetry まとめ ❏ 現在の構成におけるメリット ❏ 開発者は EKS / GKE を気にせずに分散トレーシングを利用できる ❏ 現在の構成におけるデメリット ❏ B3 ヘッダーを利用しているため X-Amzn-Trace-Id や X-Cloud-Trace-Context を利用した機能が利用できないことがある
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
48 48 分散トレーシングまとめ ❏ ABEMA での活用方法 ❏ 負荷試験でのボトルネックの発見 ❏ ABEMA での活用の難しさ ❏ ( 分散トレーシングに限らず ) ある程度の規模になってくると費用対効 果を考えながら、利用する場面を選ぶ必要がある
AbemaTV, Inc. All Rights Reserved