skillup

技術ブログ

アーキテクト設計全般

エラーの告知や収集、通知などについて

投稿日:

障害対応時は基本的にエラーの情報を見て以下のようなことを考えることになりますが、

  • どういうエラーを出すのか
  • どのようにエラーを拾うのか
  • システム管理者にどのように告知するのか

などはいろいろ議論の余地が分かれるところだと思います。

今までいろいろと書いてきましたが、まとめ系の記事として残しておこうと思っております。

どういうエラーを出すのか

エラーコードやExceptionに関する件ですね。

基本的には誰にどんな情報を伝えるのか、ということが目的になるかと思います。

誰に・・API使用者とシステム運用者

どんな情報・・API使用者に対しては端的でわかりやすい情報。システム運用者に対しては障害の詳細な情報です。

  • エラーの内容がコードに対して適当である。
  • 観点としては、その情報をみただけで、どの問題が特定できる(コード値:E0001など)があることが望ましい。問い合わせた時に、これがあるとすぐにわかるため
  • 使用者に必要な情報が完結に提供されている(「在庫が不足しています」など)
  • 逆に詳細すぎるシステムの情報などは当然画面に出さない → この情報はログやエラーリポーティングサービスなどで拾う必要がある

ユーザーに見せるエラーメッセージに関する考察

APIのエラーコードに関して

ちなみに開発時に複数のベンダーが入り乱れる場合があり、詳細な情報をあえて出したほうがよいかも・・・などと思いました。

どのようにエラーを拾うのか

主に障害対応のエラーの抽出ですね。

生ログ、ログサービス(cloud watch)、Sentryみたいなレポーティングサービスなどに分類されるかだと思います。

ログ対策(どのように情報を抽出するか)

どれも経験あるんですが、個人的にはSentryだけだと限界があるので、Sentryをメインにしつつ、cloudwatchみたいなログサービスを併用していくってことになるのがいいんではないかと思います。

エラーでてないんだけど、なんかおかしい・・みたいな挙動をする時がちょくちょくあってそういうときは生ログをどうしても見ていくことにならざるをえないとおもいます。

システム管理者にどのように告知するか

エラーが発生した時ですが、第一段階としてどのエラーを告知するのか、が大事になってきます。

ログレベルの切り分けにもなってくるとおもいますが、

正常系ではないけれど、原因がユーザー自信が自覚できるものなので、告知をしなくてよいものもあると思います。(代表的なものとして画面のバリデーションなど)

完全な異常系・・ようは500などで完全な異常系ですね。単純なExceptionになり、プログラムのエラーなどになります。あるいはおこりえないデータ不備系ですかね。これは最優先で告知する必要があるでしょう。

完全な異常系をどのようにしらせるかですが、

メール、slack、backlog、生ログとしてerrorのものをはく・・・なんでもあるかと思います。

開発側がそれをみることが習慣になっているものですね。今の時代(2023年9月現在)だとslackが多いのかなあ・・と思います。

-アーキテクト設計全般
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

アプリケーションアーキテクチャについて 〜ドメインモデルに関して〜

前回のトランザクションスクリプトパターンの反省から 今回はいわゆるドメインモデルの具体例に関して。 ドメイン駆動型設計には以下のような特徴があります。 大きく、アプリケーションの構成を以下のように分け …

no image

HTTPリクエストの分類について(POST、PUT、PATCT)

HTTPリクエストの分類(主に更新系のもの)について。 Contents1 POST2 PUT3 PATCH POST 更新系の代表的なHTTPリクエストですね。 通常はデータの取得=GET、更新=P …

no image

ここ1年ぐらいで再確認したネタなど

今の現場では比較的、いわゆるモダンな環境で開発をしていることもあり、非常に勉強になります。 今の現場に入る前に10年近くはPHPをやっていますが、まだまだ知らないこと(といいますか新しいことがふえてき …

no image

テストコードの粒度に関して

テストコードを書いていることの悩みの1つにテストコードをどの粒度で書けばいいのか、ということがあります。 例えばバッチの場合、大きく分けると エントリーポイントのFeatureテスト Unitテスト( …

no image

ステートパターンについて

トランザクション系のデータの場合、スタータスの遷移がキーになることが多く、仕様の把握に関してこの部分の理解が重要です。 今まで、ステータスの遷移に関してはExcelを使って表現していたことが多かったの …

アーカイブ