战略设计Domain:领域 , 你们公司是干啥的 , 你都不知道吗?
Core Domain:你们公司的卖货的 , 那卖货就是你们与其它竞争对手的关键竞争环节 。 这就是核心域 , 就是核心业务 , 为啥聪明人都往核心业务挤?核心业务的汤也比边缘业务的饭好啊 。
SubDomain:你们公司的卖货的 , 但是用户没法付钱 , 那也没法干 , 支付就是子领域 。
Supporting Domain:你们公司是卖货的 , 但是客户想看一些指标 , 你总得有系统能支持吧?可能就是些写写 SQL 的系统 。 支持域 。
Generic Domain:你管你们公司干什么呢?员工的在职离职 , 工资发放总得有系统能支持吧 , 这些就是通用域 。
除了第一个 Domain, 其余四个 domain 重要性逐级递减 , 递减的意思是 , 如果公司要裁员 , 那是从下面往上面裁 。
前面我说有些程序员觉得 DDD 战略设计没用 , 你连自己所在的组 , 从事的工作职责对于公司来说重不重要都不清楚 , 那被裁的时候也别哭哦 。
统一语言:这个就更好理解了 , 比如跳水这个词 , 你说跳水的时候指的是这个:
而你同事说跳水的时候指的是这个:
这里你们聊的是工作 , 那说明你们一定不是在同一个上下文里工作 , 可能你们俩一个在体育赛事部门 , 另一个可能是在金融部门 ,DDD 认为可以用统一语言来进行领域划分工作 。 划分后在同一个上下文内 , 同一个名词大家说出来意思一致 。 这就是Bounded Context ,ain 。
既然拆分了 , 如果我们还在同一个 domain 内 , 那完成业务流程是需要协作的 , 这个不同 Context 的协作方式就叫Context Maps 或者 Integration Type 。
名词很恶心 , 但具体的方法就两种 , 两个微服务要么通过 RPC 通信 , 要么通过 MQ 通信 。
如果通过 RPC 通信 , 那 callee 一般是 caller 的爹 , 很多时候 callee 挂了是要影响 caller 的(当然也有熔断之类的方法避免一起死) 。
通过通过 MQ 通信 , 那上游一般是下游的爹 , 因为上游一个重构 , 下游们可能就都炸了 , 最终一致都是屁话 , 多少公司的最终一致都是靠人肉修的 。
这种爹和儿子的关系就是Conformist 。 如果爹能多考虑一下儿子的需求 , 那就是Customer-Supplier关系 , 毕竟顾客名义上还是上帝 。 如果跨系统有一些需要共享的定义 , 比如公司里的业务分类 , 可能大家都要从某个系统的 PHP 文件里解析出来在自己的系统里去用 , 那这时候可能得去使用别人的代码 , 这种叫Shared-Kernel , Kernel 一改 , 大家一起死 。
最后 , 有时候我们可以用一个叫 ACL 的东西拦住上游的一些修改对我们的业务逻辑侵入:
防腐层:Anti-Corruption-Layer , 就是我要把外部系统的变化拦截在对接层 , 不要让别人的屎甩到我身上 。
【数字市场法案|为什么用了 DDD 以后,代码更难懂了?】讲到这里 , 基本的概念我们已经都过一遍了 , 你要说 DDD 一点用处都没有 , 那我也是不同意的 , 至少看完了这些书 , 我知道去哪里能赚到更多的钱了 。
- 纸质表格|“数字化”助推火箭升空
- 跨境|跨境电商迈入数字化变革期
- 华为|意识到离不开中国了?外媒称华为、中兴或将重新打入美国市场
- 数字化转型|新一代iPad Pro正在路上 外观、配置大升级
- “亿元级”消费券激发市场活力
- 疫情期间获近亿元A轮投资,青浦这家企业数字化服务商乘“长三角数字干线”发展快车逆势上扬
- 苹果|618市场怎么样?手机市场销量排行一边倒?这又说明了什么?
- 电信|印度电信和IT部长:印度本土研发的5G技术有潜力赢得全球市场
- 中兴|使用中兴Axon40UItra之后,明白屏幕完美,却在市场上遇冷的原因
- 电子商务|欧洲跨境电商销售额市场排名公布,第一名令人意外!
