目次を表示する

DCB(Dynamic Consistency Boundary)

プロローグ ── 集約の「窮屈さ」に名前がついた

プロローグ ── 集約の「窮屈さ」に名前がついた

シリーズ構成(全7章)

Ch.1 プロローグ(本章) / Ch.2 DDD 集約の復習と限界 / Ch.3 DCB とは何か / Ch.4 DCB の仕組み — タグ・クエリ・楽観的ロック / Ch.5 実践ユースケース / Ch.6 DCB と集約の共存 / Ch.7 エピローグ


集約 vs DCB — 静的境界から動的境界へのパラダイムシフト

この記事で何を扱うか

Domain-Driven Design(DDD)における**集約(Aggregate)**は、一貫性の境界を定める強力な設計パターンだ。しかし実務で集約を使い込むと、必ずぶつかる壁がある。

「この一貫性ルールは、2つの集約をまたいでいる」

たとえば講座予約システムを考える。

ルール1: 1つの講座に登録できる受講者は最大30名
ルール2: 1人の受講者が同時に登録できる講座は最大10件

ルール1 は「講座」集約に閉じる。ルール2 は「受講者」集約に閉じる。しかし両方を同時に満たすことを保証するには、2つの集約にまたがるトランザクションが必要になる。

DDD の教科書的な回答は「Saga で結果整合性にする」だが、これは「一時的に30名を超えて登録され、補償トランザクションで戻す」ことを許容するということだ。ビジネスルールとして本当にそれでいいのか?

**Dynamic Consistency Boundary(DCB)**は、この「集約の窮屈さ」に正面から取り組む新しいアプローチだ。


対象読者

対象:DDD の集約パターンを実務で使った経験があるエンジニア
      イベントソーシングに関心がある、または実践しているエンジニア
      「集約の境界設計でいつも悩む」という方
難易度:★★★★☆
読了時間:約1.5時間
前提知識:DDD の基本概念(集約、エンティティ、境界づけられたコンテキスト)
         イベントソーシングの基礎(なくても読める)

DCB の出自

DCB は Sara Pellegrini が 2023年4月のブログ記事 “Kill Aggregate!” で提唱した概念に端を発する。同年、ヨーロッパ各地のカンファレンス(DDD FR、JAX Mainz、Spring I/O Barcelona、Voxxed Days Brussels)でも講演を行い、概念が広まった。その後 Bastian Waidelich が Sara と共に概念を精緻化し、Paul Grimshaw を加えた3名で DCB の仕様を策定した。dcb.events をオープンプラットフォームとして公開し、コミュニティでの議論と実装が広がっている。

⚠️ 検証注記: 「DCB」の命名経緯について、一部の情報源では Robert Baelde の提案とされていますが、dcb.events の公式サイトおよび Sara Pellegrini のブログではこの帰属を確認できませんでした。Sara の 2023年4月のブログ記事には既に “Dynamic Consistency Boundary” のタグが使われています。

名前は「Dynamic Consistency Boundary」──集約が「静的(設計時に固定)」な一貫性の境界であるのに対し、DCB は「動的(実行時に決定)」な一貫性の境界を提供する。


この記事のゴール

1. 集約の本来の目的と、実務で直面する限界を整理する(Ch.2)
2. DCB のコアコンセプトを理解する(Ch.3)
3. DCB の技術的な仕組み(タグ・クエリ・楽観的ロック)を理解する(Ch.4)
4. 実際のユースケースで DCB がどう作用するかを体感する(Ch.5)
5. 集約と DCB の共存戦略を考える(Ch.6)

では、まず「集約とは何だったか」を振り返るところから始めよう。