31. CQRS - 1.単一物理データストアモデル
● 書き込みと読み込みのモデルを別物として用意する
DB
Data
Model
User
Interface
Application
IF
IF
DB
User
Interface
IF
IF
Write
Model
Read
Model
32. CQRS - 1.単一物理データストアモデル
● 書き込みと読み込みのモデルを別物として用意する
● 書き込みモデル:
テーブル毎に対応したエンティティ等
● 読み込みモデル:
テーブルをJoinした結果、SQL viewの取得結果1行などを1モデルとする
→ それぞれ適したモデルを扱えるので、処理効率が良い書き方ができる
コードがシンプルになる
DB
Data
Model
User
Interface
Application
IF
IF
DB
User
Interface
IF
IF
Write
Model
Read
Model
33. CQRS - 2.複数物理データストアモデル
● 書き込みと読み込みのデータストアを物理的に分離する
DB
User
Interface
IF
IF
Write
Model
Read
Model
34. CQRS - 2.複数物理データストアモデル
● 書き込みと読み込みのデータストアを物理的に分離する
DB
User
Interface
IF
IF
Write
Model
Read
Model
Write Data
Store
Read Data
Store
User
Interface
IF
IF
Write
Model
Read
Model
35. CQRS - 2.複数物理データストアモデル
● 書き込みと読み込みのデータストアを物理的に分離する
● Read Data Store
○ シンプルなのはread-onlyのレプリカ
○ 全く別の機構を選択することも可能 (Readをelastic searchにするなど)
→ 参照/更新のストア分離により、それぞれの負荷に合わせたスケーリングが可能
異なるアーキテクチャのデータストアを利用可能
DB
User
Interface
IF
IF
Write
Model
Read
Model
Write Data
Store
Read Data
Store
User
Interface
IF
IF
Write
Model
Read
Model
52. ● 業務ロジックをドメイン層に凝集する
● アプリケーションサービス層はドメイン層が許可した操作を必要に応じて呼ぶ
● この辺りはDDDの思想に基づいた設計
アーキテクチャ
Business
Logic
Data
User
Interface
Infrastructure
Application
Service
Domain
Model
User
Interface
Infrastructure
(@little_hand_s から参考資料たどれます
「ドメイン駆動 + オニオンアーキテクチャ概略」 )
54. ● ドメイン層をWrite Model (ドメインモデル)とRead Modelに分割する
● インフラ層の実装クラスをWriteとReadで異なるORMで実装する
アーキテクチャ
Application
Service
Domain
Model
Query
Model
User
Interface
Infrastructure
Application
Service
Domain
Model
User
Interface
Infrastructure
interface
実装クラス