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

オブザーバビリティの探求 〜性能劣化から始まった旅路〜

SansanTech
September 23, 2024

オブザーバビリティの探求 〜性能劣化から始まった旅路〜

■ イベント
オブザーバビリティ実践までの道のり〜各社の課題とアプローチ方法とは?〜
https://findy.connpass.com/event/328935/

■ 発表者
技術本部 Bill One Engineering Unit SREチーム 上司 陽平

■ Bill One エンジニア採用情報
https://media.sansan-engineering.com/billone-engineer

■ Sansan Tech Blog
https://buildersbox.corp-sansan.com/

SansanTech

September 23, 2024
Tweet

More Decks by SansanTech

Other Decks in Technology

Transcript

  1. 自己紹介 じょーし Sansan株式会社 @paper2parasol - Sansan株式会社でBill OneプロダクトのSREチームに 2022年8月から所属 - 前職はSIer企業でコンテナ技術やSREの普及活動、

    AWS・AzureでのKubernetesサービスの設計・構築に 従事 - 現職ではSREチームのミッション定義や負荷試験によ る性能改善、IaC化と文化醸成などを推進 - 最近はCI/CDのオブザーバビリティに興味を持ってい る - 好きなものはラーメンとCloud Run
  2. ベテランではなく好奇心の強いエンジニアが チーム内の最高のデバッカーになれる 引用:オブザーバビリティ・エンジニアリング Charity Majors, Liz Fong-Jones, and George Miranda

    チームにもっとも長く在籍しているエンジニアが、チーム最高のデバッガーであり、 最後の砦のデバッガーとなることが多いのです。...逆に、オブザーバビリティを実践 しているチームは、根本的に違う方向に傾きます。オブザーバビリティツールでは、 チーム内の最高のデバッガーは、通常、もっとも好奇心の強いエンジニアです。
  3. 原因特定長期化の理由:アプリを中心に原因調査していた Service DB 俺は早い DBが遅い - 一部のトレースログでDBのクエリが 遅いことに気づく - 目確認かつサンプル数も少ないので

    Google Cloudのメトリクスより信用 しきれなかった - アプリ中心に原因分析をしてかなり の時間を消費した - Google Cloudのメトリクス - 実際にはクエリレイテンシが 高くなっていたのにメトリク スには反映されていなかった
  4. 各スパンのレイテンシ → リクエストの開始と終了時刻を計算すればわ かる... 各サービスをまたぐリクエストの流れ → トレースのIDで絞ったログを心眼で見ればわ かる... 各APIエンドポイントごとのレイテンシーの統計 値

    → BigQueryで集計すればわかる... 特定タイミングでのシステム全体の状況 → 考えるな!感じろ! (参考)トレースの詳細情報の取得 当時はログから抽出して気合いでなんとかしてた LBを通って... これはBFFのログだから この辺でBFFを通って... これはサービスAのログ だからサービスAを通って... 各サービスをまたぐリクエストの流れを心眼で見る時のイメージ
  5. - トラブルシュート時にサービスマップなどで全体を俯瞰した上でドリルダウ ンしながら原因を特定できる仕組みが必要 - 今回はAPM製品により解決する方針とした - OpenTelemetryとの親和性やコストなどを含め総合的に判断してSplunk®を 採用 オブザーバビリティを向上するための方針 Splunk,

    Splunk>, and Turn Data Into Doing are trademarks or registered trademarks of Splunk Inc. in the United States and other countries. All other brand names, product names, or trademarks belong to their respective owners. © 2023 Splunk Inc. All rights reserved.
  6. - APM製品の比較・選定 - Google Cloudのコンテナサービス(Cloud Run)特有の仕様に合わせた トレースコンテキストの伝搬を実装 - バックエンドサービス(Kotlin/JVM)の計装 -

    BFF(Node.js)の計装 - Spanにカスタム属性を追加 - 顧客ごとのID - ユーザごとのID - コンテナのID...etc. 具体的にしたこと
  7. 今同じ問題が起きたら Service DB 俺は早い DBが遅い - DBのクエリレイテンシが統計 的に遅いことがすぐわかる - サポートへの問い合わせ判断

    や根拠の収集などが全体的に 早くなるはず - Google Cloudのメトリクス - 実際にはクエリレイテンシが 高くなっていたのにメトリク スには反映されていなかった