はじめに
イベントソーシングについて学んで分かったことをまとめています。
イベントソーシングの概要
イベントソーシングを簡単に表現すると、アプリケーションに発生した出来事(イベント)を永続化する仕組みのことです。永続化したイベントを順次処理していくことでアプリケーション状態の復元を可能にします。
イベントソーシングを用いない場合の多くはモデルを永続化することになります。例えば、銀行口座システムで顧客Aの口座から10万円の引き出しがあった場合に、モデルを永続化する場合とイベントソーシングを使う場合の永続化のイメージは以下です。
- モデルを永続化する場合
モデルを復元する場合は、単純にDBから情報を取ってきます。
- イベントソーシングを使う場合
アプリケーション上でモデル(顧客Aの口座情報)が必要な場合は、それまでに永続化されたイベントを順次処理してモデルを復元します。
メリット
イベントソーシングの最大のメリットは、アプリケーションで行った出来事の全てを記録して特定の時点のアプリケーション状態を復元できる点です。
そのため、銀行のシステムをはじめとした、エンティティに発生した出来事(口座からの引き出し、預け入れなど)をいつでも追跡可能であることが求められるシステムでイベントソーシングを採用することで恩恵を多く受けることができます。加えてアプリケーションが、寿命の長いエンティティ(先述した銀行の口座などがこれにあたる)を扱っている場合にもイベントソーシングを採用するうまみがあります。
デメリット
イベントソーシングはどんなアプリケーションでも汎用的に活用できる考え方ですが、従来の永続化とは扱うデータが異なるため、求められる永続化のデータ形式も異なります。これがデメリットであるといえます。ですので、イベントソーシングを適用しようとしてるアプリケーションが、イベントソーシングのメリットを受けられる特徴を持っているのかをしっかり吟味して採用することが重要です。
まとめ
イベントソーシングについて学んだことをまとめました。
アプリケーションにイベントソーシングを採用しようとする際には、メリットを享受できるのかを吟味したうえで採用することが大事であることが分かりました。