Open1
(読書メモ)【Learing Domain Driven Design】
下記、書籍を読んで翻訳して読み砕いて要約する
Learning Domain-Driven Design: Aligning Software Architecture and Business Strateg
戦略的設計
事業ドメインを分析
- 複雑な問題を解決するうえで、コーディングなどの技術を理解するだけでは、効果的なソリューションの設計・構築ができないので、問題について理解することが大事です
ビジネスドメイン: 企業の主要な活動領域
例)
- アマゾンが小売とAWSのサービスを展開
- Uberがライドウェアとフードデリバリーを展開
- 吉野家が飲食事業を展開
3つのビジネスドメイン
- コアサブドメイン
- 企業が他社と差別化するための領域に当たる。最適化して発展させることで収益に影響していき、ノウハウ、発明、知的財産になりうるもの。
- 簡単であれば、長期的に競合優位性に欠けるので、必然的に複雑になりうる。
- ジェネリックサブドメイン
- 実装上の複雑性はあるものの他社とは差別化ができず、どこの企業でも同じような方法で行っている領域。認証・認可などの領域のようにいかなる企業でもニーズがあり、競合優位性になりずらい。
- サポートサブドメイン
- 企業活動にとって必要不可欠であるが、競合優位性がとりにくい領域。シンプルにデータの入力やETL操作・CRUD操作を提供する。商品のカタログ化して顧客に提供するようなソリューションを提供する。
サブドメインの境界はどうやって見つけるか?
- 多くの企業はすでにその事業において差別化するためソリューションが存在するが、実際にサブドメインが明確に分類されている状態でない
- 組織単位、部門単位で考えることからはじめよう
- オンラインショップを例に考える
- 在庫管理、カスタマーサポート、発送、会計など様々な部門がある
- 発送部門について考えた時、発送情報の管理システムはジェネリックサブドメイン、顧客管理はサポートドメインで満たすことができる。最適な発送ルートを分析するような場合、コアドメインになりうる。
- ジェネリックサブドメインの中でもコアサブドメイン・サポートサブドメインになりうるものを分析していく作業を行っていくことで分類していく
- 境界については、サブドメインはユースケースのセットであるという定義することができ、同じアクター、ビジネスエンティティを伴い、密接に関連するデータセットを操作する。細分化をやめるタイミングがサブドメインの境界になる
- コアサブドメイン:商品の発送のユースケースのセット
- 発送担当が商品の発送依頼を確認する
- 発送担当が商品の発送を配送業者に配送依頼する
- 発送担当が商品を配送業者に受け渡す
- 発送担当が商品の配送状況を確認する
- コアサブドメイン:商品の発送のユースケースのセット