サブドメイン(コアドメイン・支援・汎用)
定義
大きなビジネスドメインを、関心事の違いで分割した部分領域。DDDでは3種類に分類する:
| 種別 | 説明 | 例 |
|---|---|---|
| コアドメイン | 競争優位の源泉。ここが会社の差別化ポイント | ECサイトのレコメンドエンジン、物流の最適ルーティング |
| 支援サブドメイン | コアを支えるが、競合との差別化にはならない | 在庫管理、受注処理 |
| 汎用サブドメイン | どの会社でも同じ。既製品・OSSで代替できる | 認証、メール送信、会計 |
なぜ重要か
すべてのサブドメインに同じ投資をしてしまうと、コアドメインに十分なリソースが回らない。分類することで:
- コアドメインに最高の設計・最高の人材を投入できる
- 支援サブドメインはシンプルな実装(トランザクションスクリプト等)で十分と割り切れる
- 汎用サブドメインは外部サービスや既製品で代替し、自前開発を避けられる
適用場面
- 新機能の開発依頼が来たとき「これはどのサブドメインか?」を問う
- コアドメインには豊かなドメインモデルを設計し、ドメインエキスパートと密に連携する
- 汎用サブドメインにはAuth0・Stripe・SendGridなどSaaSを採用する判断をくだす
- 技術的負債の返済優先度を「コアドメインから」と決める根拠にする
関連概念
- → 境界づけられたコンテキスト
- → コンテキストマップ
- → ドメインモデル設計
出典
実践ドメイン駆動設計(Vaughn Vernon)第2章