Event Sourcing / イベントソーシング

イベントソーシングとは

イベントソーシングは、アプリケーションの状態に対するすべての変更をイベントのシーケンスとしてキャプチャして保存することに焦点を当てたアーキテクチャパターンです。エンティティの現在の状態を保存する代わりに、イベントソーシングでは、現在の状態に至るまでのイベントの履歴を保存します。現在の状態は、発生した順序でイベントを再生することで再構築できます。

イベントソーシングの主要な概念

  1. イベント
    • エンティティの状態の変更を表します。
    • イベントのタイプ、タイムスタンプ、関連するデータなど、変更に関するすべての関連情報を含みます。
    • イミュータブルであり、追記専用のイベントストアに保存される必要があります。
  2. イベントストア
    • イベントの保存と取得に最適化されたデータベースです。
    • イベントの追記専用のログを提供し、イベント履歴の整合性とイミュータビリティを保証します。
    • データベースや分散ログシステムなど、様々なストレージ技術を使用して実装できます。
  3. イベントハンドラ
    • イベントを処理し、システムの状態を更新する責務を持ちます。
    • イベントストアの新しいイベントをリッスンし、読み取りモデルやその他のダウンストリームシステムに対応する変更を適用します。
    • 同期または非同期のプロセスとして実装できます。

イベントソーシングのメリット

  • システムの状態に対するすべての変更の完全な監査証跡を提供します。
  • 過去の状態の再構築と、時間に基づくクエリの実行が可能になります。
  • 複雑なビジネスロジックとドメイン駆動設計の実装が容易になります。
  • 異なるユースケースに最適化された複数の読み取りモデルの作成を可能にします。

イベントソーシングのデメリット

  • イベントの処理と状態の再構築の必要性により、複雑さが増します。
  • イベントスキーマの進化と下位互換性を慎重に検討する必要があります。
  • 大規模なイベント履歴と複雑な状態の再構築では、パフォーマンスへの影響がある可能性があります。

イベントソーシングの適用シーン

  • 複雑なビジネスロジックを持ち、監査証跡や履歴データが必要なシステムに最適です。
  • 過去の状態を再構築したり、時間に基づくクエリを実行したりする必要があるアプリケーションに適しています。
  • 複数の読み取りモデルが必要な場合や、書き込みモデルと読み取りモデルのパフォーマンス特性が異なる場合に推奨されます。

イベントソーシングは、CQRS(Command Query Responsibility Segregation)と組み合わせて使用されることが多く、スケーラブルで保守性の高いシステムを構築するための強力な基盤を提供します。イベントソーシングは、イベント駆動アーキテクチャの構築を可能にし、イベントの再生、イベントベースのコラボレーション、複数のサービス間でのデータの一貫性などの高度な機能を実現します。

セキュリティ

まだありません
ローコード管理画面開発SaaSのクエリアなら

管理画面開発の4つの面倒ごとを省略

管理画面開発を高速化するクエリアの基本機能

UIコンポーネント

クエリアなら、ユーザーインターフェイスをデザインする必要はありません。管理画面や、業務ツールに必要なパーツはすでに用意されており、適切なパーツを適切な場所にドラッグ&ドロップするだけでインターフェイスを構築できます。
さらに詳しく見る

データフロー

リクエストを記述したり、ロジックを組んだりすることができるデータフローを使うことで、データソースから返ってきたたデータを表示することも、データソース内のデータを操作することも簡単にできるようになります。フローとして一連の処理をひとまとまりにすることで、複雑な操作も可能です。
さらに詳しく見る

権限管理

本来であれば複雑で大掛かりな開発が必要とされる権限管理機能も、クエリアなら楽に実現できます。どのユーザーがどのページにアクセスすることができるか管理することはもちろん、大切なデータソースに対しても、ユーザーごとにアクセス制限を設けることができます。また、権限グループ機能を使えば、特定の部署やチームごとに権限を管理することも可能です。
さらに詳しく見る

監査ログ

監査ログ
大切なデータに対して実行された処理を、ログとして閲覧することができます。いつ、誰が、どのページで、どのようなクエリを実行したのかを詳細に確認できます。また、ログはCSVフォーマットでダウンロードすることで、必要な人に送ったり、表計算ソフトなどでの分析に活用することも可能です。
さらに詳しく見る