くどう
yumiKudo_Panda7
コマンドモデルとリードモデルは、段階的に分離していくのが、アーキテクチャの可逆性を担保させる意味でも重要です。
①最初は、論理的には分離されているものの、物理的には1つのDB上でアトミック性を担保する。
②そこから、それぞれに異なるデータ品質要求が来ると、物理的に異なるDBにするものの、通信は同期で連携。(結果整合かつ同期通信
③そこからさらに疎結合化が進むと、両者のモデルは通信も非同期で、完全に独立した状態になります。
この段階的に進めていくためには、
【同期通信かつアトミックなサーガ → 同期通信かつ結果整合なサーガ → 非同期通信かつ結果整合なサーガ】
という風に、アーキテクチャを【※段階的に可逆性を担保させながら】進化させるメカニズムを抑えておく必要があります。
このメカニズムを用いながら、より安全にコマンドとリードを分離していく工程をご紹介します。