Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenTelemetry Meetup 2024-06 - ABEMA と分散トレーシングのあゆみ

OpenTelemetry Meetup 2024-06 - ABEMA と分散トレーシングのあゆみ

tetsuya28

June 25, 2024
Tweet

More Decks by tetsuya28

Other Decks in Technology

Transcript

  1. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    1 ABEMA と分散トレーシングのあゆみ 2024 June 25th tetsuya28
  2. 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 趣味: 旅行 / 英語 / 映画
  3. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


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


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


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


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


    9 9 目次 ❏ ABEMA とは ❏ 分散トレーシングの導入に至った背景 ❏ 導入して見えてきた課題 ❏ いまとこれから ❏ まとめ
  8. 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 などの新しいサービスを取り込む改修が辛くなってきている
  9. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


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


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


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


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


    16 16 導入して見えてきた課題 ❏ AWS と Google Cloud の違いによる学習コスト ❏ コストが高い ❏ クラウドを跨ったマイクロサービスがトレースできない
  15. 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 のそれぞれの利用方法を知る必要がある
  16. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


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


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


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


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


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


    28 28 Otelcol の設定 on EKS App Mesh controller からトレースを Otelcol へ送信 ❏ AWS Distro for OpenTelemetry を利用してトレースバックエンドに Otelcol を設定しています
  26. 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 ヘッダーを解釈できる
  27. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    30 30 Otelcol の設定 on GKE Otelcol から Tempo と併せて Cloud Trace を利用 ❏ Cloud Trace から Tempo への移行期間のため開発者が自由にどちらも使え るように二重で書き込みを行っている
  28. 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 形式を サポートしている
  29. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


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


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


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


    35 35 導入当初の現実 開発者がすぐには新しいツールに慣れない ❏ 当初は慣れている X-Ray や Cloud Trace をそのまま利用する人が多かった ❏ 開発者側に影響がないように導入を進めていたことが裏目に出て OpenTelemetry を導入したことや Grafana Tempo でトレース情報が見れるこ とを知らない人も多かった
  33. 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 の組織図 ( 概念 ) …
  34. 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 … … … 分散トレーシングの文脈における各チームの役割 ストリームアラインドチーム プラットフォームチーム イネイブリングチーム …
  35. 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 と協力しながらの検証なども行う
  36. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


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


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


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


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


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


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


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


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


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


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