Skip to main content
Version: Next

「イベント」(Event)

Claptrap は、イベントのトレーサビリティに基づくアクタ モードです。イベントは、当然、重要な役割を果たします。

Claptrap を操作するには、イベントを渡す必要があります。イベントは、Claptrap State を変更する唯一のパラメータです。したがって、Claptrap を使用してシステムを構築すると、すべてのシステム操作がイベントに変換され、Claptrap に渡されます。イベントには、次の特性があります:

イベントは順序付けされています#

各イベントには、一意のシーケンス番号が含まれています。このフレームワークでは、このシリアル番号はバージョン番号 (Version) と呼ばれています。イベントのバージョン番号は、1 から 1 ずつインクリメントされるシーケンスです。イベントの順序付けにより、状態の計算に同時実行の問題がないことを確認します。これは、状態データの信頼性の重要な保証です。

イベントの順序付けは、Claptrap がイベントを実行する順序を直接表します。この順序を確保する必要があるので、Claptrap はイベントを実行するときにイベントごとに処理する必要があります。これは、アクタ モードのシングル スレッド機能に自然に適合します。

イベントは不変です#

イベントが生成されると、不変になります。イベントのトレーサビリティは、イベントの不変性のためにデータを信頼できます。イベントを読み取るだけで、任意のイベントの実行後の状態を復元できる可能性があるためです。しかし、不変性は物理的な制限ではありません。物理ストアのイベント データは変更できます。ただし、これは危険であり、非常に推奨される動作ではない可能性があります。古典的なデザインパターンの「開閉原理」を「拡張に開放し、修正を閉じる」と要約することができます。なぜ「修正の閉鎖」を強調するのですか?著者の見解では、閉鎖の修正の理由は、実際には、変更によってもたらされた未知の性質です。過去に実行されたコードのために生成されたデータ。彼らはすべての特定の閉鎖を形成している。これらは、既存のテストで検証されています。変更しようとすると、テストを調整する必要があり、変更がさらに悪化することは良いことではありません。イベントの不変性は自然であり、要件です。

では、バグが原因で過去のイベント データが正しくなく、バグを修正する必要がある場合はどうでしょうか。著者のアドバイスは、既存のイベントを変更しようとしないでください。現在の状態を修正するには、新しいイベントとアルゴリズムを追加する必要があります。古いコンテンツを調整しないでください。筆者は,これは開閉の原則により合致すると考えている.開発者は、独自の裁量で行う必要があります。

イベントは永続的です#

イベントは、Claptrap State の正確性を確保するための重要なパラメータです。したがって、イベントが永続的に保存されている必要があります。ただし、これは絶対的なケースではなく、次の条件が満たされると、イベントは失われた:

  1. イベントが失われる前に、永続的な State スナップショットが存在します
  2. 対応する Claptrap はライフ終了であり、再びアクティブ化されはありません

逆に、上記の条件が満たされていない場合は、運用環境のイベントが永続化レイヤーに正しく保持され、適切な災害復旧手段が既に使用されていることを確認する必要があります。

ICON#

claptrap