ドメインイベントの不変性
定義
ドメインイベントの不変性とは、ドメインイベントの不変性が表す概念を独立した責務または契約として扱うことである。設計上は、この意味を利用者が観測できる契約と、実装側が維持する条件へ分解する。
仕組み・規則・例
入力、保持状態、処理、出力、失敗条件を列挙し、この概念を所有する境界で一貫して検査する。注文処理を例にすると、注文ID、現在状態、要求操作を入力とし、許可された新状態または理由付きエラーを出力する。表題の概念が関わる条件を一つの境界で検査すれば、保存方式や通信方式を変更しても意味を保てる。
具体的なテストでは正常例だけでなく、空値、境界値、重複、順序逆転、途中失敗を扱う。並行実行がある場合は、版番号や一意キーを使って競合または二重処理を検出する。
適用範囲と限界
ドメインイベントの不変性は、名前を導入するだけでは効果がない。解決対象の変更理由が存在し、導入後に責務や依存が明確になる場合に採用する。新しい抽象、変換、永続状態には理解と運用のコストがあるため、小規模で変化しない処理では直接的な実装も比較する。性能、一貫性、拡張性の優先順位と撤回条件を記録し、実測に基づいて見直す。