私はソフトウェアを書くことが大好きですが、バグを扱うことは嫌いです。それは、あなたがしたいことからあなたを奪い、バグフィックスというウサギの穴にあなたを導きます。完全なアプリケーションロジック、深いコンテキスト、リアルタイムでのスタック全体の可視性を提供するオープンソースのエラー追跡プラットフォームであるSentryを使って、時間をかけてエラーを苦労なしで(少なくとも小さな苦労で)解決するためのいくつかヒントをお伝えしましょう。PagerDutyとのインテグレーションの解説もあります。
以下にベストプラクティスのリストがあります。私たちはあなたが午前3時に起こされたときに、「ウサギの穴」に素早く移動できることを願っています。
問題の影響を特定する
あなたは午前3時の深い眠りの霧の中でコンピュータにつまずき、あなたが今受信したPagerDutyの警告のことをクリアな頭で考えようとします。最初にやりたいことは、問題の影響を知ることです。
この問題はInternet Explorerにのみ影響するのか? 特定のデータセンターの顧客のみか? あなたは聞くべき最も良い質問を知っています。そして今はそれをする時です。
Sentryは、問題に割り当てられたタグ(さまざまなキーと値のペア)というシステムを実装し、問題ごとに要約します。タグでバグのホットスポットを発見し、ブラウザ情報について顧客との間で行き来することを避けることで、時間とストレスを低減できます。
問題を再現するためにユーザーの手順をトレースする
問題の原因が明白でない場合、ユーザーがどのように操作したかを理解することが役立ちます。Sentryは、ユーザーがブレッドクラムとして取得したパスを自動的に追跡します。もちろん、ログを検索して手動でつなぎ合わせることもできますが、楽とは言えない作業でしょう。
スタックトレースからコンテキストを取得する
この時点で、あなたはウサギの穴を見つけ、1、2歩中に入りました。もう少し進みましょう。そしてもう一歩。
理論的にはすでにバグを再現しているので、コードを掘り下げて、何が間違っていたのか、なぜそうなのかを知ることができます。これらの質問に答える鍵はコンテキストです。あなたがこの穴から抜け出る道を見つけるために必要なのは。
そのコンテキストを取得する1つの方法は、スタックトレースを調べることです。おそらく例外が起きた場所を知ることができます。スタックトレースは、バグの原因となる一連のイベントや、バグのコード行を見つけるための洞察を与えてくれて、とても助けになります。
もっとたくさんのコンテキストが必要ですか? Sentryはスタックトレースを見せてくれるだけでなく、未展開のソースコードやローカルスタックをなど、すべてのスタックトレースを強化します。
必要に応じてオリジナルの開発者を追加
バグを突き止めて何が原因であるのかが分かれば、あなたはそれを修正するまでいじることができます。さもなくば、正しい人にバグを処理させることによって、前にしていたこと(食べたり、寝たり、人生を楽しむなど)に戻ることができます。バグフィクスを任せることは楽しくないかもしれませんが、エラー解決プロセスを簡素化し、迅速化することが最終的に必要です。
PagerDutyのお客様は、デベロッパーをステークホルダーまたはレスポンダーとして追加することができます。
Sentryは、ソースコード管理プラットフォームとの深い統合を提供し、エラーを引き起こした可能性のあるコミット-suspect commits(疑いのあるコミット)-を明らかにします。 Sentryは、問題を最もうまく解決できる開発者も示します。
アラートの優先順位付け
正直に言えば、すべてのエラーに眠りから起こす価値があるわけではありません。もし対応不可能な通知ならば、何とかしましょう。有効なツールを利用してください。
あなたの管理下にないgoofyプラグインに起因する警告やJavaScriptエラーを除外したいですか? PagerDutyのイベント管理を使用するか、 Delete&Discardを使用してSentryから直接削除してください。
これらのベストプラクティスはSentryとPagerDutyでなくともできますが、なぜ最善のもの以外に煩わされるのでしょうか? 結局のところ、何万人もの顧客が間違うわけにはいきません。
そして、おそらくあなたが推測したように、SentryとPagerDutyは共同で素晴らしい仕事をします。実際に、PagerDutyとの公式のインテグレーションがあります。私たちのインテグレーションは、あなたが定義したインシデント対応やインテリジェンスワークフローに従い、PagerDutyを介してアラートを送信します。開発チームと運用チームにエスカレーションポリシーや通知の緊急性、アプリ内のあらゆる場所からの対応などにより、エラーやアラートを表示します。
Neil ManvarはSentryのソリューションエンジニアマネージャーです。長年のソフトウェア開発経験の後、NeilはDevOpsのソリューションエンジニアリングに移りました。常にオンコールで、Cinnabon(訳注:米国の菓子パンチェーン)の前ではいつも立ち止まります。
本記事は米国PagerDuty社のサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。