〜なぜ「1トランザクション1集約」の原則をあえて破るのか〜 はじめに: AIに設計レビューさせてみた 少し前に、決済基盤まわりのコードを AI に設計レビューさせてみました。 すると、かなりそれっぽく、そして正論っぽく、こんな指摘が返ってきました。 1つの DB トランザクションで複数集約を更新しています。 集約は一貫性の境界なので、1トランザクションは1集約に閉じるべきです。 言っていることはよく分かります。 DDD を少しでもかじると、一度は通る話です。 でも、そのとき自分が見ていたのは、注文初期化の処理でした。 そこでは例えば、 注文のレコードを作る 積立設定や購入条件をひも付ける 決済準備データを作る 監査ログを残す といった複数のデータを、1つの DB トランザクションでまとめて更新していました。 一見すると、たしかに DDD 的にはあまり綺麗ではありません。 集約をまたいでいて

