Administrator
发布于 2026-05-25 / 1 阅读
0
0

数字智能 | 聊聊架构

作者:王概凯(Kevin Wang)
出版:电子工业出版社


全书核心命题

  • 架构不是软件行业的专有词,而是人类社会的普遍现象

  • 架构的本质:通过对生命周期的拆分,达到增长

  • 架构产生的根因:人对时间的恐惧——每个人的时间有限,必须通过分工并行来延长有效生命

  • 软件的本质:用虚拟人替代现实中的人,以降低业务成本、提升生产力


第一部分:认识架构(第1-11章)

第1章 生命周期

  • 所有事物都有生命周期:从出生到消亡(生住异灭)

  • 生命周期核心特征:按时间顺序推进,不可逆

  • 核心生命周期 vs 非核心生命周期

核心:主体不变,必须自己执行(如人必须自己吃饭)

非核心:主体改变,可以分工出去(如种粮、烧饭可委托他人)

  • 内聚的本质:一个生命周期主体的所有行为和状态,都累积在该主体上

  • 拆分规律:生命周期拆分后,非核心部分可在空间上并行,但核心部分仍然时间串行

关键洞见

  • 非核心生命周期拆分出来后,变成通用服务,反而获得更大生命力

  • 大生命周期变精简,可以更专注于自身核心活动


第2章 时间

  • 时间是事物变化的度量,生命周期的变化体现时间

  • 人对时间的恐惧是推动人类进步的根本动力

  • 在有限生命内创造更多产出 = 相当于延长了生命

  • 尽可能做自己最擅长的事,才能获得最大产出


第3章 为什么会产生架构

  • 产生下一代 → 男女群居 → 性别分工 → 地域分工 → 人类架构诞生

  • 分工的意义:原来串行的生命周期活动,通过分工变成空间并行

  • 分工 = 把非核心生命周期交给擅长的人执行,自己专注核心

  • 人类是唯一能按意愿控制、重新组合其他事物生命周期的生命,这是人类架构产生的必要条件


第4章 什么是架构

架构产生的4个条件(缺一不可)

  1. 必须由人执行的工作(不需要人介入就不需要架构)

  2. 每个人时间有限(同时只能专注一件事)

  3. 对目标系统有更高要求(不满足现状)

  4. 目标系统复杂性超过单个人能力极限

架构的4个要点

  1. 根据要解决的问题,界定目标系统边界(找核心生命周期主体)

  2. 围绕核心生命周期进行切分,让非核心生命周期独立,空间并行

  3. 对切分出的部分,确立各自生命周期、主体、负责角色,权责对等

  4. 在非核心与核心生命周期之间建立沟通机制,通过树状架构组装为整体

重要推论

  • 架构是树状的,因为核心生命周期按时间线性推进,非核心围绕核心形成树状

  • 大自然是最好的架构师——道法自然

  • 违背大自然规律的架构,人类必然付出代价


第5章 架构和树

  • 树 = 核心生命周期为主干,非核心生命周期为枝干

  • 树的增长 ≠ 进化;架构增长是"长大",业务基因(目标)不变

  • 业务进化(基因改变)→ 必须重新设计架构,不能在旧架构上修改


第6章 概念

  • 概念是沟通的基础,无共识的概念导致巨大沟通损耗

  • 每个概念背后对应一个生命周期

  • 识别概念的本质 = 识别概念背后代表的生命周期和利益相关人


第7章 什么是抽象

  • 个性是基础,共性从个性中抽取

  • 抽象是发现共性生命周期的过程

  • 抽象不当导致模型错误,导致架构失败


第8章 识别问题

  • 识别问题的困难:容易看表象、容易被既有框架限制

  • 识别问题的方法:找到问题主体 → 识别主体的生命周期 → 找到核心生命周期

  • 问题主体的生命周期就是解决问题的边界


第9章 切分的原则

4条切分原则

  1. 必须在业务的核心生命周期上切分(不能破坏核心生命周期主体)

  2. 权责对等——切分出来的生命周期负责人必须能从该生命周期获利,否则无法落地

  3. 切分出来的生命周期不超出一个自然人的负载

  4. 切分是内部活动,对整个系统外部透明(不改变系统解决的问题)

架构切分总结

  1. 切分导火索:人的负载超限,时间不够

  2. 切分实质:对利益相关人的利益进行切分或合并,保证权责对等

  3. 切分结果:必须体现在组织架构上,架构才能落地

  4. 切分结果:一定是树状——分层越少越好,平衡树效率最高

多线汇报(矩阵架构)是权责不对等的信号,必须快速调整


第10章 架构与流程

  • 流程 = 多角色为完成同一目标,按时间顺序协作的过程

  • 流程本质是生命周期的表现形式

  • 流程核心是业务的核心生命周期

  • 流程把架构拆分后的不同角色串联起来,通过遍历架构树,重新组成业务生命周期整体

  • 审批流程 = 权力下放的工具,体现组织架构树的遍历

  • 流程梳理常见误区被流程分支细节迷惑,忘记了流程背后是业务核心生命周期(只见树叶,不见树干)


第11章 什么是架构师

架构师的本质

  • 架构师做的事:挖掘核心生命周期 → 剥离非核心生命周期 → 合理分配权责 → 预判未来增长 → 提前规划(战略架构)

  • 架构师的独特性:社会分工职责是"给别人分工"

  • 架构师必须具备调动资源的权力,否则只是"军师"(建议者),架构无法落地

  • 架构师的报酬应由增长结果决定(正向反馈机制)

  • 具备头衔的不一定是架构师,真正的架构师不一定有头衔

  • 一个好的领导就是好的架构师

人人都是架构师

  • 任何人一旦思考"如何做得更好、更多",就在做架构思考

  • 不识别核心与非核心生命周期,追逐不恰当方向,就会陷入时间焦虑


第二部分:软件架构(第12-27章)

第12章 什么是软件

  • 软件历史 = 用机器模拟人的历史的延伸

  • 冯·诺依曼结构 + 图灵机 = 可编程的大脑(电脑)

  • 软件的本质:把人类的业务虚拟到计算机中,用虚拟人替代现实的人

  • 软件是业务的使能者(Enabler):把业务成本从高降低,不是创造新业务

  • 计算机的成本受限于电力,只要电力充足,可以无限增长("天空才是极限")

  • 软件打破了物理时空限制,极大提升生产力


第13章 软件的生命周期

软件生命周期的拆分

  • 软件开发生命周期(非核心)→ 产出软件

  • 软件运行生命周期(核心)→ 持续服务用户

  • 软件访问生命周期(核心中的核心)→ 用户每次访问

关键推论

  • 软件的开发可以外包,代码可以开源;但软件运维是核心竞争力,严防死守

  • 迭代的本质:以核心生命周期为最高优先级,先实现业务核心,再不断丰富和拆分

  • 版本并行开发:代码生命周期必须独立切分,避免不同版本的冲突

  • 线上版本只有一个(必须保持核心生命周期连续),开发版本可以多个并行


第14章 什么是软件架构

软件架构要解决的两大问题

  1. 业务的问题:业务的主体、生命周期、核心/非核心拆分

  2. 计算机的问题:如何实现业务、如何跑起来、如何支持访问量增长

软件架构的定义

  • 通过对软件生命周期的拆分,在符合业务架构的前提下,以达到软件本身访问增长目的的方式

  • 包括:软件开发团队组织架构 + 代码架构 + 硬件部署架构 + 软件运维监控体系

核心推论

  • 离开组织架构,任何软件架构设计都是纸上谈兵

  • 架构不是进化,是长大——业务基因(核心生命周期目标)不变

  • 架构拆分越细,并行度越高,业务长得越大


第15章 什么是软件架构师

软件架构师的困境

  • 软件工程师天然专注于技术,而非业务——要成为架构师,必须克服对业务的恐惧

  • 把"完成业务目标"当作自己最大利益,而非"完成自己的编码任务"

软件架构师的核心职责

  1. 深入理解业务组织架构和业务生命周期拆分

  2. 根据业务特点形成软件开发的业务体系(软件开发业务架构)

  3. 形成与业务架构匹配的软件开发团队组织架构

  4. 对软件进行架构拆分,匹配业务架构

关键认知

  • 软件架构师对技术的态度:技术是工具,用来支撑业务,不是目的

  • 技术人员对技术的态度:热爱并追求技术本身,对技术不平等

  • 架构师必须是软件团队组织的领导,否则架构无法落地(拆分权力和执行权力都要有)

  • "不写代码就没资格叫架构师"这个说法是从软件工程师角度的误解


第16章 业务、架构和技术三者的关系

  • 技术是工具,业务是目的,架构是桥梁

  • 业务 → 架构(对业务生命周期的拆分)→ 技术(实现架构拆分)

  • 技术人员和业务人员冲突的根因:两者话语权分散,权责不对等

  • 重新发明轮子:对已有技术不理解背后的问题,导致重复创造

  • 开源技术:他人的非核心生命周期拆分出来,以服务形式共享给所有人


第17章 软件研发

软件开发的核心活动(必须顺序推进)

  1. 确定业务需求

  2. 编码

  3. 测试

开发模式的两种类型

  1. 不信任工程师为基础,以避免犯错为核心(传统瀑布式)→ 大量文档、低效

  2. 信任工程师为基础,以工程师为核心(互联网敏捷式)→ 工程师掌握业务,高效

敏捷的本质:快速迭代并得到反馈——控制单次迭代周期足够短,快速发现并纠正错误

核心推论

  • 业务团队和软件工程师合体 → 效率提升几个层次

  • 只有软件工程师成为业务专家,写出来的软件才是靠谱的

  • 先有人,有业务,才有软件——这个次序绝对不可以颠倒


第18章 软件的架构拆分

软件拆分的原动力

  • 来源于业务本身的拆分所形成的组织架构(业务组织架构 → 软件架构)

  • 每个专业领域自身遇到瓶颈 → 继续细分 → 树变高变宽

软件开发团队拆分的3种情况

  1. 多个业务团队对应一个软件开发团队 → 依赖混乱,扯皮不断(最差)

  2. 一个业务团队对应多个软件开发团队 → 沟通低效,最终同样混乱(次差)

  3. 一个业务团队对应一个软件开发团队 → 边界清晰,高效协作(最佳)

重要结论

  • 软件开发团队的组织架构必须和业务团队的组织架构匹配成树状

  • 业务组织发生变化,软件开发团队必须同步调整

架构一步到位是错误的:架构应随业务流量的实际增长而拆分,超前拆分增加复杂度和成本


第19章 如何写好代码

代码的4层架构

  1. 服务(Service):专注用户访问通道,组合业务模型提供服务,严禁混入业务逻辑

  2. 黏合代码(Manager/Repository):管理业务对象的生命周期,连接业务和存储

  3. 业务模型(Domain):实现业务生命周期活动,包含全部业务逻辑(唯一有逻辑的层)

  4. 存储(Repository):专注数据的保存和加载,严禁混入业务逻辑

业务逻辑内聚的好处

  • 服务、管理者、存储代码只需连通性测试,不需要单元测试

  • 业务代码可以独立做单元测试,不需要模拟上下文

  • 存储设备可以按自身最小粒度工作,容易横向扩展

  • 系统有问题时,定位快速:要么业务逻辑问题,要么访问环境问题

业务逻辑分散的危害

  • 分散到服务:多用户共享同一通道,需求变更相互影响,权责不对等

  • 分散到存储(SQL复杂化):存储CPU不堪重负,无法横向扩展,只能纵向扩展(高成本)

代码重用原则

  • 服务代码:不要重用(不同用户访问通道必须隔离)

  • 业务模型:必须重用(所有服务的目标)

  • 不同用户的访问通道不能共享,必须拆分

业务模型与DTO的关系

  • 业务模型对用户不可见,通过DTO转换

  • DTO与视图保持一致,隔离用户需求频繁变化对业务模型的影响


第20章 单元测试

  • 单元测试只测业务代码(有逻辑的部分)

  • 访问代码(服务、管理者、存储)没有逻辑 → 不需要单元测试

  • 需要大量Mock的测试,说明业务逻辑散落到了访问代码中

  • Mock维护成本高 → 最终形同虚设的根因就在此

  • 结论:让业务逻辑内聚,单元测试自然简单,不需要Mock


第21章 软件架构与面向对象

  • 面向过程:按时间顺序推进(图灵机本质,是计算机最擅长的)

  • 面向对象:对应业务中不同生命周期主体(每个对象是一个生命周期)

  • 二者不是对立关系

内部实现(核心生命周期活动):面向过程

整体组织(不同生命周期主体):面向对象

  • 面向对象的误区:脱离生命周期谈面向对象,导致对象设计混乱


第22章 软件架构与设计模式

  • 模式 = 对常见问题的标准化解决方案

  • 设计模式的本质 = 对某类生命周期拆分问题的模式化解法

  • 设计模式和架构的关系:设计模式是局部架构拆分的固化,架构是整体的生命周期拆分

  • 设计模式的误区:把设计模式当法典强行套用,不考虑背后的业务问题


第23章 软件架构与软件框架

  • 框架 = 对业务模型或设计模式中稳定部分的封装,留有扩展余地

  • 框架背后必有一个模式,背后有架构的拆分

  • 框架无法单独运行;可以单独运行的叫服务

  • 框架是本地引用,服务是远程调用

  • 用好框架的前提:先理解框架解决什么问题(理解其背后的业务模型)


第24章 软件运维

运维的业务目标:保证用户访问生命周期不受影响

变更管理三步

  1. 隔离:建立生产环境隔离区,控制所有变更入口

  2. 监控:实时感知系统运行状态(类比ICU)

  3. 预警:基于历史周期性数据设定基线,自动报警,主动发现问题

变更的分类

  • 被动变更:硬件老化、用户访问量突增(无法预测,需要冗余容错)

  • 主动变更:软件/硬件/电力变更(主动变更引发的问题占线上故障2/3以上,软件变更占一半以上)

核心推论

  • 运维工程师本质也是软件工程师,只是专注领域不同

  • 云运维/第三方运维兴起 = 运维生命周期被拆分为非核心生命周期,形成新的行业分工


第25章 软件访问生命周期

用户访问路径的演进

  • 直接硬件访问 → 操作系统 → C/S架构(客户端/服务器)→ 应用服务器 → 虚拟化/容器

规模扩展的两种方式

  • 横向扩展(Scale-Out):复制自己,增加集群(解决单点故障,且扩展成本低)

  • 纵向扩展(Scale-Up):增强个体能力(有上限,成本高)

  • 计算机成本便宜后,横向扩展成为首选

集群(Cluster)的要点

  • 路由(Router):把用户请求按规则转发到集群内某台机器

  • 负载均衡:路由必须定时检查机器健康状态和剩余容量

  • 用户状态共享:集群内不同机器必须共享用户状态,否则集群对用户不透明

数据中心(Data Center)

  • 多数据中心 = 集群的集群,按地理位置分布

  • 解决问题:减少网络延迟(就近访问)+ 防止单数据中心故障导致全局不可用

  • 路由策略:按用户来源地理位置路由到对应数据中心


第26章 软件架构与大数据

大数据的本质

  • 不是数据有多"大",而是对关系型数据库处理方式的颠覆

  • 大数据 = 针对大量数据集的快速处理技术(解决T+1实时性不足的问题)

做好大数据的路径

  • 理解数据 → 理解行为 → 理解业务 → 理解业务目标 → 明确业务主体 → 理解生命周期 → 理解架构拆分

核心推论

  • 大数据的焦点不在"大",在"数据",更在数据背后的业务生命周期

  • 不理解架构拆分,不理解生命周期,无论用什么数据处理技术,都无法形成有效决策

  • 业务生命周期的架构拆分,是理解业务数据的基础


第27章 软件架构与建筑架构

相同点

  • 都是为人服务,解决人类生命周期问题,形成社会分工

  • 都以增长为目的,都形成树状架构

不同点

维度

建筑架构

软件架构

服务对象

人类在物理空间中的生命周期

业务(现实世界的虚拟化)

拆分对象

物理空间(稳定、可预测)

时间(业务逻辑,变化频繁)

建造者与使用者

天然相近(设计师也是人)

天然分离(工程师≠业务人员)

扩展方式

以空间为主,有物理限制

以软件复制为主,几乎无上限


第三部分:软件架构的应用(第28-33章)

第28章 交易

  • 交易的出现:分工导致交换,货币降低交换成本

  • 企业的实质:把多个人的生命周期活动整合起来,通过交易完成增长

  • 软件对交易的影响:把交易的时空限制打破,降低交易成本

  • 企业的核心:持续为用户创造价值并完成交易


第29章 产品

  • 产品 = 满足特定用户生命周期需求的解决方案

  • 商品 = 参与市场交换的产品

  • 产品的生命周期:产品定义 → 上市 → 销售 → 退市

  • 识别产品的方法:从用户的核心生命周期出发,找到用户最需要解决的问题

  • 产品列表、产品详情、商品规则:都是围绕用户购买生命周期进行的架构拆分


第30章 用户

  • 用户的生命周期:注册 → 活跃 → 沉默 → 流失

  • 用户的核心利益:用最少时间最低成本完成自己的核心生命周期活动

  • 客户的出现:用户中需要频繁交互、深度服务的子集

  • 用户识别:基于唯一标识(账号体系)贯穿用户整个生命周期


第31章 订单

  • 订单 = 交易双方对交易内容的契约,记录交易生命周期的状态

  • 订单的生命周期架构拆分:

创建 → 支付 → 履约 → 完成 / 取消

  • 订单是业务核心生命周期的载体

  • 订单支付 = 独立的支付生命周期(可拆分为独立服务)


第32章 交易系统

企业架构拆分路径

  • CEO(一个人)→ 业务量增大 → 按核心生命周期拆分 → HR/市场/产品/订单/支付/结算等团队

  • 组织架构变化 → 软件架构随之变化

软件系统建模步骤

  1. 识别业务核心生命周期(找主干)

  2. 识别业务组织架构(找树的结构)

  3. 用代码实现业务模型(虚拟化组织架构)

  4. 围绕核心生命周期实现用户访问通道

  5. 数据持久化(记忆外存化)

服务的粒度原则

  • 以业务生命周期为单位,一个业务生命周期对应一个服务

  • 服务粒度过大:耦合严重;粒度过小:调用链路过长

用户系统的拆分

  • 用户注册/登录/信息维护 → 独立用户服务

  • 用户授权(权限)→ 独立权限服务

  • 不同业务线的用户访问通道必须隔离


第33章 事务

  • 事务 = 多个操作构成的原子单元,要么全成功,要么全回滚

  • 数据库事务的滥用:把所有操作堆进一个数据库事务,导致锁范围过大、性能差、扩展难

  • 正确使用数据库:数据库只负责存储,事务只管自身存储边界

  • 服务调用的事务问题:跨服务的一致性不能依赖数据库事务,要用最终一致性/补偿机制

  • 最终一致性思想:允许短暂不一致,通过异步对账、补偿来保证最终正确


全书核心观点速查

架构篇

  • 架构的目的是增长,通过切分生命周期达到并行

  • 架构结果必须是树状;分层越少越好

  • 架构的执行(组织架构落地)比设计更重要

  • 架构师 = 具备权力的业务领导,而非只有头衔的技术顾问

软件篇

  • 软件 = 虚拟人,模拟现实业务

  • 软件架构的核心是业务的核心生命周期识别和拆分

  • 代码架构:业务逻辑必须内聚在业务模型层,服务和存储不能有业务逻辑

  • 软件开发团队的组织架构必须和业务团队组织架构一一匹配

方法论

  • 遇到任何问题:先找主体 → 找核心生命周期 → 分析拆分 → 确定权责 → 建立组织

  • 技术是手段,业务是目的;不理解业务的技术人员无法做好架构

  • 迭代的前提是先实现业务核心生命周期,宁愿粗糙,不要跑偏


全书金句

  • 架构产生的本质是人类对时间的恐惧。

  • 架构是支撑业务长大的,而不是进化的。

  • 离开了组织架构,任何软件架构设计都是纸上谈兵。

  • 具备头衔的架构师不一定是架构师,真正的架构师不一定有架构师的头衔。

  • 一个好的领导就是一个很好的架构师。

  • 软件的开发可以外包,运维才是核心竞争力。

  • 大自然是最好的架构师,她所做的只是让每种生命能够顺应自己的生命周期。

  • 只有软件工程师成为业务专家,写出来的软件才是靠谱的。

  • 先有人,有业务,才有软件——这个次序绝对不可以颠倒。

  • 大数据的焦点不在"大",在"数据",更在数据背后的业务生命周期。

  • 做好内聚的前提是去发现生命周期及其主体。

  • 不理解人类社会本身,计算机和软件相关的技术是很难掌握好、应用好的。


评论