観測記録
アプリケーションの実行時に発生するあらゆる現象 (phenomenon, フェノメノン)を意味的に分類し、原因、深刻度、対応方針、関係者、技術的な文脈(トレース情報や実行環境)などとともに記録することで、ログ、監視、分析、監査、トラブル対応、アラート通知、エラー (error)通知などに一貫して活用することができます。
SimpleModelingでは、このような「あらゆる現象」の中で記録対象となるものを観測記録 (observation, オブザベーション)と呼びます。
SimpleModelingリファレンス・プロファイル (SMRP, SimpleModeling Reference Profile)では観測記録を記述するためのオブジェクトとしてorg.simplemodeling.observation.Observationを用意しています。
構成要素
SMRPで導入されるorg.simplemodeling.observation.Observationオブジェクトの構成を説明します。
Observationオブジェクトは次の属性群で定義されます。
-
意味的情報
-
関係対象
-
トレース情報
-
付加情報
意味的情報
意味的情報は、観測した現象を記述する属性群で定義されます。
- phenomenon
-
Observed event or phenomenon観測された出来事や現象(例:Timeout, Failure)
- cause
-
原因(例:ValidationError, NullPointer)
-
深刻度(例:INFO, WARN, ERROR, FATAL)
-
- strategy
-
対応方針(例:Recoverable, Retriable, Escalatable)
- handler
-
対応すべき責任主体(例:EndUser, Developer)
Phenomenon
Name | 説明 |
---|---|
Failure |
機能が期待通りに動作しない現象 |
Rejection |
入力や要求が受理されない現象 |
Incident |
運用中に発生した予期しない事象 |
Deviation |
基準値や仕様から外れる逸脱 |
Cause
CauseKindは現象の原因の種類を表します。
Name | 説明 |
---|---|
Defect |
設計や実装の不備 |
Fault |
システム内部に潜在する欠陥 |
Anomaly |
通常と異なる振る舞いや挙動 |
Root Cause |
根本的な原因 |
Severity
Severityは現象の重大度や影響範囲を示します。
Name | 説明 |
---|---|
Fatal |
システム全体を停止させる致命的な障害 (defect) |
Error |
機能の一部が利用できなくなる障害 |
Warn |
異常の兆候があるが継続可能 |
Info |
参考情報や軽微な事象 |
Debug (バグ) |
開発・調査のための詳細情報 |
Trace |
システム動作を逐次記録した低レベル情報 |
Strategy
Strategyは現象が発生した際の対応方針を示します。
Name | 説明 |
---|---|
Manual |
人手による介入が必要 |
Recoverable |
自動回復が可能 |
Retriable |
再試行により回復が期待できる |
Escalatable |
上位レベルの担当者やシステムに引き継ぐ |
Alert |
監視や通知を発する |
Ignored |
無視しても支障がない |
Handler
Handlerは現象の対応を担う主体の分類です。
Name | 説明 |
---|---|
EndUser |
利用者自身が対処する事象 |
ApplicationAdmin |
アプリケーションの管理者が対処する事象 |
SystemAdmin |
システム基盤の管理者が対処する事象 |
Developer |
開発者による修正が必要な事象 |
関係対象
関係対象は、現象に関連する主体やリソースを示す属性群で定義されます。
項目 | 説明 |
---|---|
subject |
実行者(例:ユーザー、APIクライアント) |
object |
対象となったリソース(例:注文データ、ファイル) |
component |
処理を実行したコンポーネント(例:OrderService) |
location |
実行場所や環境(例:k8sノード、リージョンなど) |
トレース情報
トレース情報は、分散トレーシングなどの外部オブザーバビリティ機能と連携する属性群で定義されます。
項目 | 説明 |
---|---|
traceId |
リクエスト全体のトレースID(分散トレーシング対応) |
spanId |
個々の処理単位を表すスパンID |
関連技術
観測記録は医療分野などの応用で分析パターンとして取り上げられてきましたが、観測記録やドメイン・イベントといった概念が広く注目されるようになったのは2010年代中盤以降と考えられます。背景にはクラウド・アプリケーションの要請が大きく影響しています。
UML
-
The Unified Modeling Language (UML) User Guide 2nd (2005)
-
The Unified Modeling Language Reference Manual 2nd (2005)
ドメイン駆動設計
-
Domain-Driven Design : Tackling Complexity in the Heart of Software (2004)
-
Implementing Domain-Driven Design (2013)