開発者にとって、トリアージする月の1週間は、しばしば憂鬱でした。
トリアージとは、バグが報告されるたびに、手作業でログを分析し、関係するスタックトレースがあることを期待し、そして記憶を頼りに適切なチームへ連絡することでした。
トリアージをする開発者は、バグを適切なチームに連絡する必要があります。また、バグを調査するのに必要な情報を併せて報告する必要があります。
十分な情報がない場合、開発者はプロダクトを作成するよりも多くの時間をデバッグに費やすことになります。
現在、Sentryは400万人以上の開発者のトリアージとコンテキスト収集作業を最適化してくれます。しかし私たちは、さらに課題解決までの時間と課題解決率を向上するように努めています。
課題解決率および解決までの時間の改善
課題のトリアージは、4つのフェーズに分けることができます。
- 検知
- 通知
- アサインメント
- 解決
ユーザーからのフィードバックやインタビューに基づく、通知やアサインメントの改善は、より良い結果をもたらすと考えました。
具体的な改善点として、以下の2点に着目しました。
- サジェストでアサインメントの改善
- 関係ない通知によるノイズ低減
アサインメントの改善とアラートノイズの低減
簡単に課題を特定し、適切なチームや開発者にアサインすることができるようになります。
各課題について、担当者はSentry組織内のメンバーまたはチーム内で、最も詳しい情報を持っています。
Sentryは、3つのシグナルに基づいて、課題をサジェストします。
- サスペクト(疑わしい)コミット – Sentryは、問題が起きたコードを最近変更した開発者を特定します。
- 所有権ルール – Sentryは、イシューのタグやコードなどに基づいて、適切にSentryチーム/メンバーを見つけるためのルールを評価します。
- コードオーナー – SentryはGitHub/GitLabのCODEOWNERSファイルを解析し、コードに基づいて、イシューに適切なSentryチーム/メンバーを設定してくれます。
お客様からのフィードバックを目にして、ユーザーが確実かつ迅速に課題をアサイン、解決するのに役立っていることを知りました。
そして、より多くのユーザーがサジェストアサインを利用できるように、ここ数ヶ月で様々な機能を追加しました。
Git Blameを使ったサスペクトコミットについて
サスペクトコミットは、Sentryでは問題の原因となっているファイルを最後に変更した人を表示するだけでした。
しかし、Git Blame API連携することで、Sentryは特定のコード行を変更した人、および問題の原因となったコードのプルリクエストを特定することができるようになりました。
また、イシューを自動的にコミット作成者にアサインすることができるようになりました。
この機能は、GitHubまたはGitLab連携を利用すれば、誰でも利用できます。
組織でこの機能を有効にする詳しい方法は、以下をお読みください。
コードマッピングを自動で設定
怪しいコミットを見つけるために、Sentryはエラーの原因となるファイルとリポジトリ内のソースコードファイルを結びつける必要があります。
しかし、これを正しく設定するのはなかなか難しく、ユーザーがこの設定を怠っていることに気づきました。
そのため、SentryのGitHub連携を利用するユーザーのために、この設定を自動化するようにしました。
Sentryは、Python、JavaScript、Node、Rubyなどのプラットフォームのソースコードと、エラーの原因となるコードを自動的にマッピングしてくれます。
この自動化されたセットアップにより、Sentryはさらに多くの怪しいコミットを見つけてくれるようになります。
不要なSentry通知を減らす
Sentryでは、新しいプロジェクトを作成すると、デフォルトのイシューアラートルールが作成されます。
しかし、このルールはアサインできる人がいないイシューに対して、同じプロジェクトで作業しているチームメンバーに対して、通知を行う可能性があることに気づきました。
このアラートルールを使うことで、そのプロジェクトの全メンバーに迷惑をかけることなく、チームに通知できるように変更しました。
より良い結果を出すために
ここでは、ユーザーがどのように問題解決をするか、その過程を紹介します。
Sentryはイシュー担当候補者がいる場合、アラートルールに従って、適切な開発者、チーム、Slackチャンネルに通知することができます。
これにより、開発者に不要な通知を減らし、チームにとって重要なイシューに集中してもらうことができます。
この利点は、イシューの担当候補者が増えれば増えるほど大きくなります。
さらに、Sentryがデフォルトのイシューアラートルールを変更したことで、問題を迅速にトリアージする能力を維持しながら、全体で不要な通知を33%削減することができました。
サジェストされた担当者は、エラー修正に対して責任感がより高くなります。
開発者は、自分自身や自分のチームがSentryのイシューの担当者候補だとわかると、よりエラーに注意を払うようになります。
当社のデータによると、GitHub連携を導入したSentryのお客様は、サスペクトコミットを使用しない場合と比較して、サスペクトコミットを使用した場合、解決までの期間が24時間短く、20%高い割合で解決しています。
次のステップへ
Sentryは、ユーザーにとってより効率的なトリアージを実現するために投資を続けていきます。
現在、早期の導入者向けに提供されている以下の機能にご期待ください。
サスペクト(疑わしい)コミットへの適切な通知
Sentryのアラートルールアクションでは、CodeownersやOwnershipルールで指定された担当候補者に通知することはできますが、コミット作成者には通知できません。
そのため、Sentryのデフォルトのイシューアラートルールに改良を加え、担当候補者とコミット作成者のすべてに通知できるようにしました。
担当候補者とコミット作成者の両方を含めることで、余計な通知を減らし、通知からの煩わしさを改善しました。
サイズが大きいCODEOWNERSファイルをサポートします
GitHubの制限である3MBまでのCODEOWNERSファイルをサポートする予定です。
これは、コードが大きくなるにつれて、より多くのイシューに対してサジェストできるようになることを意味しています。
オーナーシップルールを簡単に追加できます
開発者は、Sentryのイシューで特定のコードパスやトランザクションを気にして、将来的に同様の課題を自分のチームにアサインすることがよくあります。
そのため、Sentryプロジェクトにおいて、誰がどのコードエリアを担当しているのかを簡単に確認できるように改善しました。また、Sentryのイシュー自体からも簡単に担当がわかるようにしました。
これらのツールを利用することで、新しいエラーが発生したときに、トリアージをより迅速に行うことができます。
皆様のご意見をお聞かせください
これらの新機能をお試しいただきながら、皆様のご意見をお聞かせください。Discord、GitHub、または [email protected] まで直接ご連絡ください。
また、Sentryを初めてご利用になる方は、無料でお試しいただくことも可能です。
ぜひデモをご活用ください。
Sentryは、アプリケーションコードの健全性を監視するために不可欠です。エラートラッキングからパフォーマンスモニタリングまで、開発者は、フロントエンドからバックエンドまで、アプリケーションをより明確に把握し、より迅速に解決し、継続的に学習することができます。
Sentryは、世界中の350万人以上の開発者と85,000以上の組織に愛され、Disney、Peloton、Cloudflare、Eventbrite、Slack、Supercell、Rockstar Gamesといった世界的有名企業の多くにコードレベルの監視機能を提供しています。
毎月、世界中で人気のサービスやアプリケーションから、数十億件の例外を処理し続けています。
IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください。