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

Ruby を使ったプロダクト開発を支えるオブザーバビリティ基盤

Hayato Kawai
March 01, 2024
140

Ruby を使ったプロダクト開発を支えるオブザーバビリティ基盤

「Wantedly x Qiita Meetup #2 Rubyを用いたプロダクト開発」で発表した LT 資料です。
https://increments.connpass.com/event/310090/

Hayato Kawai

March 01, 2024
Tweet

Transcript

  1. © 2024 Wantedly, Inc. あなた誰 名前: @fohte (ふぉーて) 川井 颯人

    (Hayato Kawai) 所属: ウォンテッドリー株式会社 趣味: 🎮 🎹
  2. © 2024 Wantedly, Inc. ウォンテッドリーが採用するアーキテクチャ・言語 今回はこの "The System" の信頼性を 支える「オブザーバビリティ基盤」に

    ついて紹介します (参考) The System を支える言語について 『ウォンテッドリーのバックエンド領域を支える言語の歴史を読み解く』 https://www.wantedly.com/companies/wantedly/post_articles/886 087
  3. © 2024 Wantedly, Inc. 監視はアラートだけではない • 「モニタリング」と「オブザーバビリティ」という 考え方がある ◦ モニタリング

    ▪ システムのデータを収集 -> 閾値超えたらアラート ▪ 「何かが起きている」ということを察知できる ◦ オブザーバビリティ (可観測性) ▪ 多層的なシステムのデータを収集 -> 障害の予兆の検知および障害時の調査に役立てる
  4. © 2024 Wantedly, Inc. オブザーバビリティで調査が簡単になる • 前提: サービスは単一のシステムから構成されているとは 限らない ◦

    例: アプリケーション (Ruby on Rails サーバー) だけでなくデータベースもある • => システムの全体の様子を観測したい ◦ ウォンテッドリーの場合マイクロサービスアーキテクチャを採用しており、 単一のシステムではなく全体を見る必要性が高い ◦ オブザーバビリティが高くなれば全体を俯瞰しやすい
  5. © 2024 Wantedly, Inc. オブザーバビリティは障害時に役立つ • 障害の予兆に気付ける • 障害発生時に原因究明がしやすい ◦

    例: アプリケーションのレスポンスが遅くなっていた。 原因は別アプリケーションのレスポンスが遅延していた。 さらにその遅延は、データベースのクエリが詰まっていたことが原因だった。 ▪ 単一のシステムを監視しているだけでは、ここまでの原因究明は (人間がシステムの関連性を理解していないと ) 難しい
  6. © 2024 Wantedly, Inc. アプリケーションに導入するのは簡単 (Rails の場合) 1. ddtrace gem

    をインストール source 'https://rubygems.org' gem 'ddtrace', require: 'ddtrace/auto_instrument' 2. 設定ちょっと書く # config/initializers/datadog.rb Datadog.configure do |c| c.tracing.enabled = true end 参考: https://docs.datadoghq.com/ja/tracing/trace_collection/dd_libraries/ruby/
  7. © 2024 Wantedly, Inc. Ruby だと簡単に自動計装できる • Ruby だと自動計装されて便利 ◦

    計装 = 計測するための実装 ◦ Ruby だとモンキーパッチできるので自動計装もされる ◦ 例: Go で HTTP サーバーを計測したい場合、リクエストハンドラーごとに 計測処理を差し込む必要がある ▪ リクエストハンドラーに処理を挟むのを忘れると計測されない
  8. © 2024 Wantedly, Inc. Datadog APM 導入で役立た話 • 障害対応時に毎回のように役立っている •

    障害起きたら => まず APM を見る ◦ エラートラッキングツール (Honeybadger) も導入している ▪ エラーが出ていればそれで分かるが、分からない場合も多い ◦ APM が便利な例: 特定のエンドポイントのレスポンスタイムが遅くなっている ▪ エラーが出ているわけではないときは APM が頼りになる
  9. © 2024 Wantedly, Inc. 導入後の課題 • Datadog APM の使い方が分からない ◦

    機能が豊富がゆえに使いこなすのが難しい ▪ 全てを使いこなす必要はない ▪ ポチポチしているだけでも何となく調べることはできる ◦ 障害対応訓練を通して Datadog APM を触るきっかけを作っているところ ▪ 参考: 『インシデントコマンダーやってみた』 https://speakerdeck.com/fohte/insidentokomandayatutemita ▪ まずは触ってみてほしい