领域驱动设计&中台/化繁为简--DDD驱动复杂业务软件架构的演进CONTENTS CONTENT 产品介绍 业务挑战及架构目标 架构演进 总结展望 业务挑战与架构目标 建筑造型多样化,业务模 型复杂度越来越高 业务挑战 新业务基于现有业务进行 扩展,而应用场景及性能 要求不同,既复用又独立; 产品云+端转型,核心业 务逐步实现服务化,不同 业务演化路径不同 简化业务模型复杂度 架构演进目标 不同业务间解耦 各业务独立演化 单体架构 构建领域模型 CONTENTS CONTENT 产品介绍 业务挑战及架构目标 架构演进 总结展望 架构演进 1 2 3 领域拆分 架构分层 构建领域模型 业务分析 2 1 3 4 分析业务流程 提炼业务规则 分析业务用例 识别业务对象 子域拆分 • 业务流程 • 专业知识 建模子域 计算子域 登录与 授权子域 报表子域 指标子域 做法子域 限界上下文拆分 按照行业钢筋平法规则,基于构件剖面描述钢筋布筋的模型 基于业务用例识别业务对象 • 截面多边形 • 箍筋 • 纵筋 • 弯钩 • 端头 基于业务对象的钢筋模型 • 不同构件归纳抽象 • 分析业务对象及其关系 • 识别聚合、实体、值对象 柱截面钢筋模型 压顶截面钢筋模型 人防截面钢筋模型 截面钢筋 截面多边形 点筋 截面钢筋 规格 端头 弯钩 规格 线筋 位置 位置0 码力 | 33 页 | 1.25 MB | 1 年前3
刘道平-从0到1,移动政务应用小程序系统架构演化势。 6、探索需求 -- 分析可行性,选取合适的需求场景 什么需求适合进入第1版本? 1.服务对接方式:提供API接口,而非H5页面 2.认证方式:基于后台API方式,而非要求用户再次输入 3.服务类型:属于查询、办理类,而非资讯信息、办事指南 4.服务具有便民、高频特征 帅选出第1版本要接入的百项高频便民事项 典型需求梳理场景 - 残疾人服务事项分析 7、产品设计—淬取政务服务信息要素、以用户为中心的展示 应用平台 小程序 端 APP端 运营数 据分析 一体机 端 1.项目建设,考虑的维度有:需求-产品-前后端开发-测试-上线… 2.产品研发,需考虑的维度:产品可扩展,如多端支持(小程序端、APP端、一体机端); 功能可扩展,如支持个人中心、证照、办事、资讯、特色专区等;可移植、易安装等; 及衍生的支撑工具系统,如运营数据分析; 产品视角 目录 一、移动政务应用服务现状与痛点0 码力 | 35 页 | 15.60 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造命令⻛风暴暴 寻找聚合 什什么是聚合? 如何寻找聚合? 聚合是⼀一组相关领域模型的集合 , 是⽤用来封装业务的不不变性。确保 关联关系紧密的领域模型能够内 聚在⼀一起。 1. 按照事件顺序依次通过提问来分析: • 这个事件会改变的领域模型是什什么?明确 领域模型(简单理理解就是事件中的涉及的 业务名词) • 这个领域模型是否可以独⽴立访问?如果是 就是聚合 • 如果不不能独⽴立访问应该需要通过哪个领域 退货单 ⼊入库单 投诉单 商品 ⽀支付订 单 订单 划分限界上下⽂文 事件⻛风暴暴 命令⻛风暴暴 寻找聚合 划分限界上下⽂文 什什么是限界上下⽂文? 如何探索限界上下⽂文? 业务的扩展会产⽣生越来越多的领域模 型,任何⼤大型项⽬目都会存在很多的领 域模型。当不不同领域模型对应的软件 代码被放在⼀一起后,软件就变得庞⼤大 且复杂,代码难于理理解、且容易易出现 bug,所以需要通过限界上下⽂文来明 商户履履⾏行行订单 订单 商品 1. 订单 2. 商品 3. *** 明确服务的范围 明确核⼼心模型 明确服务包含的数据表 可视化的拆解遗留留系统 微服务架构、绞杀模式、代码依赖分析、数据库依赖分析、 遗留留系统拆解评分表、降⻰龙⼋八步 庖丁解⽜牛拆解的最⾼高境界 了了解⽜牛的⽣生理理构造 避开筋腱⻣骨节交错的组织 从⻣骨节的缝隙下⼿手 ⼗十九年年⼑刀依然锋利利 再看⼀一眼微服务架构0 码力 | 54 页 | 3.85 MB | 1 年前3
QCon北京2018-《美团配送系统架构演进实践》-阴永俊加强对配送骑手的管控能力 提升配送全业务的运营效率,降低成本 履约流程:下单 -> 派单 -> 接单 -> 取货 -> 送达… 业务团队:招聘、采购、物料、培训、薪酬、保险.... 运营团队:运力结构、经营分析、绩效考核.... 客服团队:问题跟进、定责… 基础设施不断升级 与 用户消费升级 促使即时配送全面信息化 人工智能 大数据 GPS+GIS 移动互联网 智能手机/APP • 预测供需结构,智能派单调度 订单中心 (送什么) 品类 重量 支付状态 运单中心 (配送任务) 运单归属 配送状态 调度中心 (工程框架) 需求池 运力池 计算平台 策略平台 (算法策略) 算法框架 分析平台 经营规划 (目标) 盈亏 绩效 奖惩 业务管理 (过程) 运营工具 任务系统 骑手运营 (人) 任务 活动 等级 结算平台 (钱) 清算 结算 对账 接单网关 订单中心 (送什么) 品类 重量 支付状态 运单中心 (配送任务) 运单归属 配送状态 调度中心 (工程框架) 需求池 运力池 并行计算 策略平台 (算法策略) 算法框架 分析平台 经营规划 (目标) 盈亏 绩效 奖惩 业务管理 (过程) 运营工具 任务系统 骑手运营 (人) 任务 活动 等级 结算平台 (钱) 清算 结算 对账 接单网关0 码力 | 31 页 | 15.26 MB | 1 年前3
微服务和Service Mesh 在多个行业落地实践设计要点二:接入层设计 www.163yun.com 设计要点三:无状态化 www.163yun.com 设计要点四:服务拆分与服务发现 www.163yun.com 设计要点亓:数据库横向扩展 www.163yun.com 设计要点六:缓存的设计 APP缓存 CDN 接入层 静态资源 动态资源静态化 应用本地缓存 分布式缓存 • 安全靠白名单各自为战 • 调用统计与分析无从谈起 • 无服务治理能力,或各自造轮子 www.163yun.com API网关 37 • API网关带来的能力 - 请求透明代理与路由 - 调用审计 - 统一API规范与接口管理 - 基于ak/sk的认证鉴权 - 服务/API审计与调用分析 - 不同维度故障隔离、服务熔断与降级0 码力 | 39 页 | 3.06 MB | 1 年前3
领域驱动设计&中台/演进式架构的平台化落地发 服务运⾏行行治理理 服务 部署 运⾏行行架构治理理 故障 分析 定义架构 约束条件 微服务架构设计 服务地图 设计 API设计 部署架构设计 微服务⼯工程创建 开发 框架 架构 ⻛风格 资源 配置 … 架构演进 服务 关系 分析 代码 质量量 分析 数据 库分 析 领域 模型 分析 运⾏行行资 源管理理 PaaS、 容器云资 源管理理 公共 部分 是否⾃自动⽣生成API/ Dockerfile/流⽔水线 ⽣生成 代码 到GIT 仓库 架构分析- 从契约反向识别实现与模型差异 架构分析- 架构Fitness Function检查 代码质量量分析- 配置Sonar地址、展⽰示分析结果 数据结构分析- 测试环境的反向⼯工程可视化 数据结构分析- ⽣生产环境脚本导入可视化 领域模型- 基于代码守护的反向可视化 运⾏行行时部署架构可 契约变 更更评审 未评审 契约 提⽰示 已申请资源 登记 服务部署 脚本⽣生成 部署架构 推到⽬目标 运⾏行行(测 试、⽣生产) 单服务 更更新 服务⽰示例例 ⽇日志 问题定 位分析 调⽤用链可 视化 ⽣生成 流⽔水 线 对接流⽔水线执 ⾏行行部署 分享 契约 应⽤用架构变更更 评审 关联变更更到需求 需求 查看需求 我的任务 对接外部 系统0 码力 | 42 页 | 2.95 MB | 1 年前3
海尔实时计算平台技术选型与实践不影响业务系统性能 代码埋点: • 优点:采集能力强 • 缺点:时间、人力成本大 实时数据采集-数据如何获取? 可视化埋点: • 优点:成本低,速度快 • 缺点:行为记录信息少,支持的分析方式少 • Flume 日志收集可选技术 • Fluentd • Logstash • Scribe Flume Agent Source Incomin g Data Sink 海尔实时计算平台技术选型与实践 开源技术改造经验-数据可视化 数据可视化目标 目标:为公司所有数据分析类项目,提供数据洞察和展示工具。 数据可视化可选方案 • Caravel • Saiku • Zeppelin Zeppelin主要特性 主要特性: • 数据提取 • 数据发现 • 数据分析 • 数据可视化和协作 Zeppelin优势-多语言支持 多语言支持 • 强大的解析器0 码力 | 41 页 | 3.21 MB | 1 年前3
从百度文件系统看大型分布式系统设计中的定式与创新• 文件系统 - The Baidu File System - 持久化存储 百度文件系统架构 设计一个分布式系统要考虑的 • 数据与计算的分片 • 分区故障容忍 • 数据一致性 • 系统扩展性 • 延迟与吞吐 • 成本与资源利用率 • … 数据与计算的分片 • 哈希分片 - 简单、均衡 - 扩容复杂、易用性差 - 一致性哈希、虚拟节点 • 按范围、数据量分 - 使用简单 - 需要管理元数据 写入 2. 通知 3. 读取 多副本冗余 一致性问题 • 怎么定义写成功 - 3副本成功, 影响可用性 • 可以读从节点 - 刚写入的读不到 - 不一致 • 只允许读主节点 - 扩展性受限 数据处理模块 数据接收模块 存储 主 从 从 1. 写入 2. 通知 3. 读取 CAP理论 • 简要历史 - Eric Brewer 1998年提出 - 2002年证明 一致性与延迟的折衷 - 要求强一致的, 容忍延迟 - 要求低延迟的, 选择最终一致 提升系统扩展性 • 架构的可扩展性 - 拆分元数据节点 - 引入MetaServer 提升系统扩展性 • 设计的可扩展性 - 保证在规模扩大5倍或10倍是正常工作 • BFS避免了过渡设计 - 用设计中的不可扩展达到最大的可扩展 • 最多支持6万台机器 • 最多支持100亿文件 分布式存储系统设计的特殊性0 码力 | 24 页 | 937.45 KB | 1 年前3
领域驱动设计&中台/如何让DDD落地火起来,主要的功 劳也要给队友“微服务”,那么这是为什什么呢? DDD的⽬目标是什什么 软件设计的⻔门槛是什什么 DDD⾥里里难懂的概念 谁来做领域专家? 产品经理 技术组长 架构师 系统分析师 如何从需求到DDD? 我想要⼀一个电商 平台,我可以在 上⾯面卖东⻄西 ? Event Storming⾥里里缺少了了什什么信息 提交订单的时候 要做什什么检查? 如何添加商品? 仓库聚合锁定库存服务 发送 LockStockCommand ⽣生成 ⽣生成 接收 ⽣生成 QueryOrderCommand 订单域查询服务 接收 OrderList ⽣生成 需求分析到⽤用户故事 Story6 创建订单 作为⼀一个商城顾客 我可以确定购物⻋车中的商品和数量量,然后提交商品订单 为了了在商城上购买商品 Acceptance Criteria 1 - Given:导航【购物⻋车】0 码力 | 32 页 | 3.25 MB | 1 年前3
《58到家技术架构快速规划与落地》 - 沈剑• 分发类实现Tips (1)易扩展的配置 (2)远端接口探测,命令执行 (3)可以无需agent • 汇总类实现Tips (1)agent快速部署 (2)agent从中央获取配置 (3)快速的本地检测 58集团技术专场 2. 监控平台-日志 ERROR日志监控Tips (1)路径规范 (2)日志分级 (3)日志切分 (4)易扩展的配置 日志关键字监控Tips (1)异常关键字 (1)异常关键字 (2)正常关键字 (3)易扩展的配置 58集团技术专场 2. 监控平台-接口 Keepalive统一监控 (1)框架统一实现 (2)中心统一调度 处理时间统一监控 (1)框架统一实现 (2)本地初步汇总 (3)日志收集/udp上报 http接口统一监控 (1)http状态码?内容? (2)易扩展的配置 58集团技术专场 2. 监控平台-接口 • 哪种监控最精准?0 码力 | 42 页 | 1.52 MB | 1 年前3
共 20 条
- 1
- 2













