2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

イベントソーシングについて学んだこと

Posted at

はじめに

イベントソーシングについて学んで分かったことをまとめています。

イベントソーシングの概要

イベントソーシングを簡単に表現すると、アプリケーションに発生した出来事(イベント)を永続化する仕組みのことです。永続化したイベントを順次処理していくことでアプリケーション状態の復元を可能にします。
イベントソーシングを用いない場合の多くはモデルを永続化することになります。例えば、銀行口座システムで顧客Aの口座から10万円の引き出しがあった場合に、モデルを永続化する場合とイベントソーシングを使う場合の永続化のイメージは以下です。

  • モデルを永続化する場合

モデル永続化.png

モデルを復元する場合は、単純にDBから情報を取ってきます。

  • イベントソーシングを使う場合

イベントソーシング.png

アプリケーション上でモデル(顧客Aの口座情報)が必要な場合は、それまでに永続化されたイベントを順次処理してモデルを復元します。

メリット

イベントソーシングの最大のメリットは、アプリケーションで行った出来事の全てを記録して特定の時点のアプリケーション状態を復元できる点です。
そのため、銀行のシステムをはじめとした、エンティティに発生した出来事(口座からの引き出し、預け入れなど)をいつでも追跡可能であることが求められるシステムでイベントソーシングを採用することで恩恵を多く受けることができます。加えてアプリケーションが、寿命の長いエンティティ(先述した銀行の口座などがこれにあたる)を扱っている場合にもイベントソーシングを採用するうまみがあります。

デメリット

イベントソーシングはどんなアプリケーションでも汎用的に活用できる考え方ですが、従来の永続化とは扱うデータが異なるため、求められる永続化のデータ形式も異なります。これがデメリットであるといえます。ですので、イベントソーシングを適用しようとしてるアプリケーションが、イベントソーシングのメリットを受けられる特徴を持っているのかをしっかり吟味して採用することが重要です。

まとめ

イベントソーシングについて学んだことをまとめました。
アプリケーションにイベントソーシングを採用しようとする際には、メリットを享受できるのかを吟味したうえで採用することが大事であることが分かりました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?