本リリースも近いということでフロントエンドにエラー監視をちゃんと入れようと思い立った。これまでもSentryは別のプロジェクトで一応使ってきていて、使いこなしているとまでは言えないが、普通に回してはいる。なので今回もSentryでいいかな、とは思っていた。
ただ、ここ数年でVercel側でObservabilityが出ていたり、調べてみるとPostHogというエラー監視もカバーしているプロダクトがあったりするので、現時点で選び直したらどうなるかを一応調べた。
結論から書くと、Sentryの無料プランに落ち着いた。以下、その経緯のメモ。
前提
- フロントエンドはNext.js、Vercelにデプロイ
- エラー監視が主目的
- プロダクト分析はGA4でいい
- セッションリプレイは一旦いらない
- ニッチなユースケースなので、(少なくともリリースしてしばらくは)ユーザーが大量にいるとも思えない
- そんなこともありできれば無料がありがたい
要件としてはこのくらい。
検討した候補
ざっと並べるとこんな感じ。
- Sentry:フロントエンドのエラー監視の定番(だと思っている)
- PostHog:プロダクト分析一体型、今回調べてて初めて知ったプロダクト
- Datadog RUM:フルオブザーバビリティ、バックエンドと統合したい人向け
- New Relic Browser:Datadogの対抗馬
- LogRocket:セッションリプレイ重視
- Vercel純正(Speed Insights / Web Analytics / Observability):ホスティング統合型
- OSS系(GlitchTip、SigNoz、Grafana Faroなど):低コスト・セルフホスト
それぞれの雑感を軽く書いておく。
Sentry
既に使っているツールなので自分にとっては馴染みがある。Next.js用の公式SDKがあって、ウィザードを使えばセットアップから最初のエラーキャプチャまではそれなりに速く入れられる。ソースマップやリリース連携、Vercelとの統合も公式でカバーされていて、フロントエンドのエラー監視としては無理のない選択肢になる。
無料のDeveloperプランもあるけど、エラー件数やリプレイ件数、ユーザー数などの上限は時期によって変わっていくようなので、導入時点で公式のPricingを確認するのが無難。共同開発者が増えたり、エラー量が想定を超えるようになれば有料に切り替える前提になる。
PostHog
今回調べてて存在を知ったプロダクト。エラー追跡の無料枠が100,000件/月あるというのはそこそこ大きく、コストだけ見ると魅力的。
ただ、PostHogの本来の強みは「プロダクト分析・セッションリプレイ・フィーチャーフラグまでまとめて扱える」ところにあって、そこを一式使う前提でこそ効いてくる。今回のようにエラー監視だけ欲しい用途だとややオーバースペックな印象。Sentryと比べてどちらが優れているかは用途次第で、エラー単機能で見れば慣れている分Sentryのほうが自分には扱いやすいかな、くらいの温度感。
Datadog RUM / New Relic Browser
バックエンドのAPMまで含めて統合するなら強いんだろうけど、現時点ではそこまでは求めていない。Vercel上のフロントエンドだけに使うには機能も料金も重めなので、今回は選外。
LogRocket
セッションリプレイがメインのプロダクトみたい。今回リプレイは必須ではないので選ぶ理由が薄い。
Vercel純正
Vercelにデプロイしているなら、比較対象としてあがってくる選択肢。
- Speed Insights:Hobbyプランでも無料で試せる範囲がある。Proで規模を広げると$10/プロジェクト/月の追加課金になる(このへんは変わるかもしれないので要確認)
- Web Analytics:Hobbyにも無料枠があって、軽い利用なら追加料金なしで始められる
- Observability:基本的に全プランで使える前提。まずは無料で触れる範囲から使ってみればいい
エラートラッキング単体としてのUIはSentryほどではない印象なので、Web Vitalsやログ周りはVercel、エラーはSentry、という住み分けが自然そう。
OSS系
GlitchTipはSentry SDK互換でDSN差し替えだけで移行できる。とはいえセルフホストするのも嫌なので将来コスト問題が出たら選択肢として残しておく、くらいの温度感。
なぜSentryに落ち着いたか
要件を並べて消していくと、こうなった。
- プロダクト分析いらない → PostHogの強みが活きない
- バックエンド統合いらない → Datadog / New Relic外れる
- リプレイいらない → LogRocket外れる
- エラー監視としての深さは欲しい → Vercel純正単体ではカバーしきれない
残ったのがSentryだった、という消去法。そもそも既に使ってきているツールで学習コストがほぼないのも大きい。
今の規模感なら、まずは無料プランから始めておいて、エラー量が増えたり開発者が増えたら見直せばいい、くらいの想定。仮に将来エラー件数が無料枠を超えるようなら、それは「バグがループしている」か「想定外にユーザーが増えている」のどちらかで、むしろ気付きたい。
Vercelとの相性もよさそう。
- デプロイごとのリリースがSentryに自動で紐づく
- ソースマップのアップロードがビルドパイプラインに組み込まれる
- 環境変数の設定もほとんどVercel側に自動で入る
このあたりが楽に入りそう、というのは今回初めて知ったことのひとつ。
というわけで補完として、VercelのObservabilityは無料で触れる範囲でとりあえず有効にしておくつもり。Web Vitalsが見えるに越したことはないけど、Speed Insightsに課金するほどのフェーズではないので一旦保留。