レギュラーセッション

なぜコマンド側にアクターモデルが必要になるのか

j5ik2o 加藤潤一

この問いは、CQRS/ESを触った人なら一度は悩むポイントです。

CQRS/ES のコマンド側をオブジェクトモデルで実装することは可能です。しかし、イベント書き込み時のロック競合、同時更新の制御、分散環境での一貫性維持といった課題に直面します。これらを根本的に解決する仕組みが「アクターモデル」です。集約をアクターとして実装し、クラスタシャーディングによって「1集約=1実体」を保証すれば、ロックレスかつ逐次的に状態を管理できます。さらにメッセージ駆動により時間・場所・障害からの分離が得られ、リアクティブシステムとしてスケールと耐障害性を自然に実現できます。

近年注目される DCB(Data Consistency Boundary)との比較も交えながら、なぜコマンド側にアクターモデルが適しているのかを、Pekko/Akka を題材に深堀りして解説します。

1