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
790
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
980
俺的 Four Keys 解釈
tetsuya28
0
360
20240326_replace_with_cloud_workflows
tetsuya28
0
43
Other Decks in Technology
See All in Technology
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
AIチャットボット開発への生成AI活用
ryomrt
0
170
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
240
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
530
Platform Engineering for Software Developers and Architects
syntasso
1
520
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
9
1k
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
95
5.2k
GitHub's CSS Performance
jonrohan
1030
460k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
The Cult of Friendly URLs
andyhume
78
6k
Statistics for Hackers
jakevdp
796
220k
Scaling GitHub
holman
458
140k
Practical Orchestrator
shlominoach
186
10k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
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