フロントエンドからバックエンドまで一貫してSentryを活用
ファインディ株式会社 / yuta-hayashi
メンバー / フルスタックエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|---|
Team | エラートラッキング, アラート, パフォーマンス | 10名以下 | 2024年4月 | B to B |
利用プラン | Team |
---|---|
利用機能 | エラートラッキング, アラート, パフォーマンス |
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2024年4月 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
ブラウザのJavaScript、Next.jsのSSR、GraphQL APIのRailsの全てにSentryを導入することで、エラートラッキングの一元化ができており、分散トレーシングも可能になっている。
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
新規事業のサービスでサーバのログだけを収集しており、ブラウザやサーバーでエラーが発生した時に直ぐに検知できる仕組みがなかった。
また、フロントエンドやサーバサイドのパフォーマンスについてもモニタリングできる仕組みがなかった。
どのような状態を目指していたか
アプリケーションでエラーが発生した時にSlackへアラートが通知され不具合や障害が検知できること。
サービスのパフォーマンスが良好な状態に保てること。
比較検討したサービス
- Datadog Error Tracking
比較した軸
- 管理画面の使いやすさ
- 導入の手軽さ
- 利用料金
選定理由
- 導入の手軽さ
- 充実したエラートラッキングとトレース
- Slackへのアラート通知
導入の成果
改善したかった課題はどれくらい解決されたか
フロントエンド、サーバの両方でエラーが発生した際に、Slackへアラートの通知から直ぐに気が付ける体制ができた。 さらに、エラーが発生した時の調査も分散トレーシングにより、原因を調査しやすくなった。
また、フロントエンドのパフォーマンスを実際のユーザのブラウザからWeb Vitalsのスコアが収集されているので、これを元にユーザ体験が良いかをモニタリングできている。
導入時の苦労・悩み
料金プランについても既にTeamプランで契約をしていたが、エラー数やスパンの従量制の料金を上げる必要があった。
また、Next.jsとRailsの両方にSentryを導入し分散トレーシングを活用している。 これを全てのリクエストで行うと料金が高くなるので、割合でサンプリングをするよう設定をしている。
ただ、RailsのSentryの設定にサンプルレートを指定しても、反映されず原因の特定に苦労した。 調査の結果、Sentryの分散トレーシングでは"head-based"というアプローチでサンプリングが決定しており、前段のNext.jsでサンプルレートを設定する必要があった。
https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing/#consistency-within-a-trace
導入に向けた社内への説明
上長・チームへの説明
既に社内の別のサービスで導入・活用されていたため、同じくサービスの安定性のため導入したいと説明した。
活用方法
- Slackにエラーのアラートが通知された時に調査する
- 隔週でIssueに溜まったエラーを棚卸ししている
- フロントエンドのパフォーマンスが劣化していないかを確認している
▼ ユーザのブラウザがらWeb Vitalsのスコアが収集されており、全体やページごとにスコアの詳細を確認することができる。ただし、アクセス数が少ないとデータも集まらないため、参考にならないこともある。
▼ 分散トレーシングの画面では、Next.jsからRailsのリクエストまでを一貫して見ることができる。エラーが発生した時にこのTraceがあると、APIが特定のフロント画面からリクエストがあった時にエラーが発生しているというように、発生原因を特定しやすい。また、GraphQL APIのTraceの設定を有効にすることで、GraphQL Type名ごとにトレースを見ることができる。
よく使う機能
Issue Tracker: 発生したエラーの管理と調査
Web Vitals: 実際のユーザのフロントエンドの体験が悪くなっていないかを確認する
Performance: サービス全体のレイテンシやリクエストの傾向を調査する
Alerts: 新しいエラーが発見された時にSlackへ通知を行う
ツールの良い点
- Next.jsやRailsへの導入が手軽
- エラートラッキングに関して機能が充実している
- 分散トレースの収集とパフォーマンスをモニタリングが手軽にできる
ツールの課題点
- トレース機能はDatadogのAPMに比べると検索や集計などの機能が少ない
- ブラウザのJavaScriptでサードパーティスクリプトのエラーを除外するのに手間がかかる
ツールを検討されている方へ
エラートラッキングからトレースまで一つのSDKで実現できるので、小規模なプロジェクトでも手軽に始めることができます。
今後の展望
スロークエリーやバックエンドのトレースを含めたパフォーマンス機能の活用を考えている。
ファインディ株式会社 / yuta-hayashi
メンバー / フルスタックエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
新卒で自社開発サービスのエンジニアとしてキャリアをスタート。 現在は新規事業でRailsを使ったGraphQL APIやNext.jsを用いた開発をしている。
よく見られているレビュー
ファインディ株式会社 / yuta-hayashi
メンバー / フルスタックエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
新卒で自社開発サービスのエンジニアとして...
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法