skillup

技術ブログ

アーキテクト設計全般

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

投稿日:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

執筆者:


comment

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

関連記事

no image

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

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

no image

値オブジェクトやファーストコレクションなどについて

以前から言葉としては知っていたけれど、オブジェクト思考の重要な概念に関して。 Contents1 値オブジェクト(Value Object)2 ファーストコレクション(コレクションオブジェクト) 値オ …

no image

例外発生時で考えるべきポイント

いままでもいろいろ考えてきましたが、例外が発生した時のポイント(あるいはその周辺)について再度考えて見ようと思います。 Contents1 トランザクションスコープ2 どんな例外をなげるか3 例外を発 …

no image

オブジェクト指向設計 単一責任のクラスの設計

オブジェクト指向をするうえでの大事なポイントなど Contents1 単一責任のクラス設計1.1 メモ1.2 実際のコーディング上のコツ1.3 感想1.4 参考文献 単一責任のクラス設計 メモ 単一責 …

no image

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

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

アーカイブ