イベントソーシングとは?
イベントソーシングは、発生したイベントを正本となるデータとして保存し、その履歴から現在の状態を導き出す方式です。 各イベントには、「カートに商品を追加した」「注文をキャンセルした」といった業務上の変更を記録します。
カートに本が一冊入っているという事実だけでなく、顧客が二冊追加し、その後一冊を取り除いたことまで把握できます。この履歴は単に参照用として残すのではなく、カートの状態を再構築するために使います。
カートに次の履歴があるとします。
この三つのイベントを順に読み取って適用すると、本Aが一冊という同じ結果になります。このように記録済みの履歴を適用して状態を計算することを、リプレイと呼びます。
顧客がさらに商品を追加すると、システムはリクエストを確認して新しいイベントを追記します。二つのリクエストが同時にカートを変更する場合、追記時に読み取り済みのストリームのバージョンを確認し、変更の競合を検出する必要があります。
リプレイはデータを再構築する処理です。確認メールを再送したり、決済を再実行したりしてはいけません。
イベントソーシングは、契約のライフサイクルや繰り返される注文の調整など、変更履歴が業務の重要な一部となる領域に適しています。履歴を保持し、処理する作業に見合う利点が必要です。
アプリケーションに最新の状態と確認用の記録だけが必要なら、通常の保存方式に監査ログを組み合わせる方が単純な場合があります。
ジュニアからシニアまで、詳細な回答付きのIT面接質問ライブラリ。
寄付する