CQRSパターンフロー
このドキュメントでは、MBC CQRS ServerlessにおけるCQRS(Command Query Responsibility Segregation)パターンの実装について説明します。
CQRS概要
コマンドフロー - 書き込みパス
書き込み操作のフローです。
コマンドフローのステップ
- リクエスト受信: クライアントがPOST/PUT/DELETEリクエストを送信
- DTOバリデーション: コントローラーがclass-validatorを使用して入力を検証
- コマンドディスパッチ: コントローラーがコマンドを作成してディスパッチ
- ビジネスロジック: コマンドハンドラーがビジネスルールを実行
- 永続化: コマンドサービスが楽観的ロックでDynamoDBに永続化
- イベント発行: ドメインイベントがSNSに発行される
- レスポンス: 成功レスポンスをクライアントに返却
クエリフロー - 読み取りパス
読み取り操作のフローです。
クエリフローのステップ
- リクエスト受信: クライアントがGETリクエストを送信
- クエリディスパッチ: コントローラーがクエリを作成してディスパッチ
- データ取得: クエリハンドラーがデータサービスを呼び出す
- データベースクエリ: データサービスがDynamoDBまたはRDSにクエリ
- レスポンス: データをクライアントに返却