松耦合无界零售系统搭建之DDD和微服务实战阎华京东7FRESH架构师阎华软件架构师原京东POP平台架构组架构师,现在负责京东7FRESH架构部的⼯工作,包括保障7FRESH系统的整体架构⼀一致性和合理理性,有超过15年年软件设计开发经验,主要关注复杂业务系统的灵活可扩展架构的设计。�•复杂性和规模增长的解决之道•DDD设计实践•DDD和微服务的关系•DDD编码实践7FRESH面临的复杂性挑战•线上线下融合,场景多种多样•业务深度整合,集成无处不在•业态创新活跃,应用随需应变复杂性和规模增长的解决之道知识�抽象�分治�衡量分治的标准高内聚低耦合⾏行行李李⻋车厢�观光⻋车厢�普通⻋车厢�“�每个车厢都要符合承重要求,行李车厢承重能力要高于其他车厢,车厢间的连接要牢固且易于拆卸,有足够的灵活性方便转弯�”�连接�“�大件行李应该单独存放,避免占用普通车厢中的空间,餐车应该在整个列车的中间,方便乘客用餐�”�•运行时进程间通信,能够容错和故障隔离•去中心化管理数据和去中心化治理•服务可以独立的开发、测试、构建、部署按业务组织全功能团队•高内聚低耦合,职责单一•关注业务领域,建立边界并构建通用语言,高效沟通•对业务进行抽象,和业务专家一起建模•尽可能维持代码和业务的低表示差异微服务和DDD不同的关注点微服务DDD设计模型系统的/解决方案的维度领域模型真实的/业务的维度DDD概览•关注按领域定义,在限界上下文内形成统一语言,提升业务和技术的沟通效率•关注领域设计在落地时和设计模型及实现模型的低差异,减小业务和技术之间的鸿沟战略战术✔✔✔✔✔表示本次演示中药用到的概念✔•复杂性和规模增长的解决之道•DDD设计实践•DDD和微服务的关系•DDD编码实践DDD设计实践按业务划分限界上下⽂文�消除隐式数据依赖�明确定义上下游关系�下游的⾃自我保护�按业务划分限界上下文识别业务领域使用工具行业经验从业务能力的角度识别核心域/支撑域/通用域多维度抽象⻔门店�仓库�⽣生产加⼯工�按业务划分限界上下文哪些部分应用了DDDAndroid�App�Gateway�iOS�APP�⼩小程序�WEBAPP�浏览器器�服务1�服务2�服务n�HTTPSHTTPSJSFJSFOPENAPI�第三⽅方�JSF基础设施�第三⽅方服务�BFF模式微服务模式JSFJSFMQ消除上下文间的隐式数据依赖订单�《值对象》�明细�《实体》购买者�《值对象》�商品�《值对象》用户上下文商户上下文商品上下文交易上下文……服务上下文•跨上下文之间不存在实体引...