Skip to main content
Version: Next

イベント トレーサビリティ (Event Sourcing)

イベント トレーサビリティ パターンは、ソフトウェア設計のアイデアです。この設計思想は、通常、CRUD ベースのシステム設計の従来の方法とは異なります。CRUD アプリケーションには、通常、いくつかの制限があります:

  1. 通常、CRUD アプリはデータ ストアを直接操作します。このような実装は、データベースの最適化が不十分なためにパフォーマンスのボトルネックを引き起こす可能性があり、アプリのスケーリングが困難になります。
  2. 通常、特定の領域では、データ更新のエラーを防ぐために、同時実行の問題を処理するために注意する必要があるデータがあります。通常、このような問題を回避するには、"ロック" や "トランザクション" などの関連テクノロジを導入する必要があります。ただし、パフォーマンスが低下する可能性があります。
  3. データの変更履歴は、通常、追加の監査手段を追加しない限り追跡できません。通常、データ ストアにはデータの最終状態が保存されます。

CRUD アプローチとは対照的に、イベント トレーサビリティは、上記の制限を設計的に回避します。次に、上記の「転送」ビジネス シナリオを中心に、イベント トレーサビリティの基本的な動作について簡単に説明します。

CRUD アプローチを使用して "転送" を実装します。

CRUDによる「送金」の実現

「転送」は、イベントトレーサビリティによって達成されます。

イベントトレーサビリティによる「転送」

上の図に示すように、転送業務に関連する残高の変更は、イベント トレーサビリティ パターンによってイベントとして格納されます。また、ビジネス自体も実現しますが、これはいくつかの利点をもたらします:

  • イベントを使用すると、口座番号の任意の段階で残高を復元し、口座残高の追跡をある程度実現できます。
  • 2 つのアカウントのイベントは個別に処理されます。したがって、2 つのアカウントの処理速度は互いに影響しません。たとえば、アカウント B の転送は、追加の処理が必要な場合に若干の遅延が発生する可能性がありますが、アカウント A は引き続き転送できます。
  • イベントをサブスクライブすることで、ビジネスの非同期処理を行うことができます。たとえば:データベースの統計を更新したり、SMS 通知を送信したりするその他の非同期操作があります。

もちろん、イベントトレーサビリティパターンの導入は、イベントトレーサビリティに関連するいくつかの技術的な問題を導入します。たとえば:イベントによって消費されるストレージは膨大であり、最終的な整合性を適用する必要があり、イベントは不変であり、リファクタリングが困難になる可能性があります。これらの問題については、いくつかの記事でより詳細に説明されています。読者は、理解と評価のために、後続の拡張読書を読むことができます。

参考文献