Slide 15
Slide 15 text
CQRS: Command Query Responsibility Segrigation
(コマンド-クエリ責任分離)
15
イベント駆動を利用したマイクロサービスデザインパターンのひとつ
注文サービス
create, update
delete
配送サービス
create, update
delete
注文
イベント
発送イベント
注文履歴サービス
query
Query API
Event Handler
注文テーブル
配送テーブル
検索用 注文/配送
JOINテーブル
C,U,D
C,U,D
C,U,D
R
CQRSの基本動作:
• 検索用に予め必要なデータ要素を全て
含むJOINテーブルを用意する
• 更新系要求はサービス個別のDBを更新しつ
つ、更新イベントを検索サービスに送信する
• 検索サービスは更新イベントを拾い、
順次検索用JOINテーブルを更新する
利点:
• 検索の応答性能向上
• サービス間の非依存性(separation of
concerns)の向上
欠点:
• 一時的にデータの一貫性が損なわれる
(結果整合性の許容)
メッセージ
ブローカー
ex. kafka