$30 off During Our Annual Pro Sale. View Details »
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
800
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
1k
俺的 Four Keys 解釈
tetsuya28
0
360
20240326_replace_with_cloud_workflows
tetsuya28
0
43
Other Decks in Technology
See All in Technology
Kubernetesを知る
logica0419
9
760
間違いだらけのポストモーテム - ホントに役立つレビューはこうだ!
jacopen
4
410
140年の歴史あるエンタープライズ企業の内製化×マイクロサービス化への航海
yussugi
0
3.3k
OpenLLMetry-Hands-On 生成AIアプリを観測してみよう!OpenLLMetryハンズオン編
tkhresk
1
140
専門領域に特化したチームの挑戦
leveragestech
0
190
乗っ取れKubernetes!!~リスクから学ぶKubernetesセキュリティの考え方~/k8s-risk-and-security
mochizuki875
3
370
Mastering Quickfix
daisuzu
2
470
累計2500万着電を支える大規模 電話自動応答サービスのアーキテクチャ / Architecture of a Large-Scale Automated Phone Response Service Supporting 25 Million Cumulative Calls
ymachida
8
3.9k
4年で17倍に成長したエンジニア組織を支えるアーキテクチャの過去と未来
sansantech
PRO
1
4.4k
バクラクのデータ基盤をBigQueryからSnowflakeへ移管した理由 / The reason for migrating Bakuraku data infrastructure from BigQuery to Snowflake
civitaspo
0
110
JAWS UG 青森(弘前)クラウド・AWS入門
hiragahh
0
170
GeminiとUnityで実現するインタラクティブアート
hokkey621
0
160
Featured
See All Featured
Bash Introduction
62gerente
608
210k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
How to train your dragon (web standard)
notwaldorf
88
5.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Happy Clients
brianwarren
98
6.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Speed Design
sergeychernyshev
25
640
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
24k
A better future with KSS
kneath
238
17k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Six Lessons from altMBA
skipperchong
27
3.5k
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