耐久性のあるリアルタイム分析の設計

常に最新のデータを反映したダッシュボードが必要です。また、規模が拡大しても正確性を維持し続ける必要があります。イベントソーシングはこれを解決します。

フロー:

  • プロデューサー: サービスがドメインイベントを送信します。
  • イベントバス: KafkaまたはKinesisがイベントをログに保存します。
  • プロセッサー: ログを読み取り、リードモデルを更新します。
  • リードモデル: PostgresまたはRedisが最終的なメトリクスを保存します。
  • クエリAPI: ダッシュボードからここでデータを取得します。

設計における重要なルール:

  • イベントを不変(イミュータブル)にします。イベントを更新してはいけません。
  • べき等性キーを使用します。これによりデータの重複を防ぎます。
  • スキーマにバージョンを付与します。これにより、システムの破損を防ぎます。
  • 決定論的なプロジェクションを使用します。これによりデータの整合性を維持します。

構築方法:

  • コアとなるイベントを特定します。
  • ストレージツールを選択します。
  • メトリクス用の初期プロジェクションを構築します。
  • 重複排除を実装します。
  • スキーマレジストリを作成します。
  • イベントラグを監視します。

この構成により、データのスケーリングと監査が可能になります。すべての変更の完全な履歴を保持できるからです。

出典: https://dev.to/therizwansaleem/designing-a-durable-event-sourced-analytics-platform-for-real-time-dashboards-58fd