観測記録
アプリケーションの実行時に発生するあらゆる現象 (phenomenon, フェノメノン)を意味的に分類し、原因、深刻度、対応方針、関係者、技術的な文脈(トレース情報や実行環境)などとともに記録することで、ログ、監視、分析、監査、トラブル対応、アラート通知、エラー通知などに一貫して活用することができます。
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 |
システム全体を停止させる致命的な障害 |
|
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ノード、リージョンなど) |
関連技術
観測記録は医療分野などの応用で分析パターンとして取り上げられてきましたが、観測記録やドメイン・イベントといった概念が広く注目されるようになったのは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)
参照
用語集
- 現象 (phenomenon, フェノメノン)
-
「現象」はドメイン内で発生する様々な事象を表します。 その中で記録に値するものは観測記録として保存されます。 さらに観測記録の中で、ドメインにおいて意味を持ち対応する振る舞いを引き起こすものをドメイン・イベントとしてモデル化します。
- エラー (error)
-
汎用的な表現として用いられる用語。ソフトウェア工学では多義的に使われ、バグや障害全般を指す。SimpleModeling では広義のラベルとして使用し、個別には Mistake・Defect・Fault・Failure・Deviation に整理する。
- 観測記録 (observation, オブザベーション)
-
Observationは、Phenomenon(現象)の中から記録に値すると判断されたものを保存した記録です。 観測記録はログ、モニタリング、監査、トラブルシューティングの基盤となります。
- SimpleModelingリファレンス・プロファイル (SMRP, SimpleModeling Reference Profile)
-
SimpleModelingのリファレンス・プロファイルです。 SimpleModelingによる文芸モデル駆動開発の説明を具体的にするために、リファレンス・プロファイルを定義しています。
- オブザーバビリティ (observability, 可観測性)
-
Observabilityは、システムやドメインの内部状態を外部からの観測を通じて推論・理解できる性質を表します。 単なるモニタリング可能性を超え、現象(Phenomenon)や観測記録(Observation)を一貫して収集・関連付け、ドメイン・イベント(Domain Event)として意味づけられることで、システムの挙動を総合的に把握できる状態を指します。
- ドメイン・イベント (Domain Event, ドメインイベント)
-
Domain Eventは、Observation(観測記録)の中でドメインに意味を持ち、対応する振る舞いや処理を引き起こすものを表します。 ドメイン・イベントはシステムや業務上の状態変化を明確にモデル化し、アプリケーション層や他システムとの連携を駆動します。
- 逸脱 (deviation)
-
計算値や観測値が、基準値や真値から外れている状態。観測可能な量的ずれを表す。
- 障害要因 (fault, フォルト)
-
システム内部に存在する技術的な欠陥。Defect が具現化したもので、実行時に Failure を引き起こす可能性がある。IEEE 610.12 に基づく。
- 障害 (defect)
-
成果物(設計書、仕様書、コードなど)に存在する不完全さや不足。要求や仕様を満たさず、修正や置換が必要となる状態。ISO/IEC 24765 に基づく。
- コンポーネント (Component)
-
責務・契約・依存関係を明示的に定義し、再利用可能で交換可能な単位としてカプセル化されたソフトウェア構成要素。論理モデルでは抽象構造単位として、物理モデルでは実装・デプロイメント単位として扱われる。
- UML (Unified Modeling Language)
-
オブジェクト指向分析・設計のための統一モデリング言語。クラス図、シーケンス図、ユースケース図などを通じてシステム構造と動作を表現する。UPおよびCBDの基盤言語。