知识卡片

短期与长期利益的抉择,及架构可追溯性的四个好处

结构图卡

内容

架构设计里几乎所有矛盾冲突点——时间与成本、效率与时间、局部与整体、安全与便利、灵活与稳定——都可以归结为短期利益和长期利益之间的抉择:只关注矛盾一面来达成短期目标时,对长远的影响不会立即显现,但随时间推移必然会逐渐浮出水面(比如一味追求处理时间缩短,长远看可能带来空间问题;过度追求系统的发散性,长期容易导致碎片化和内聚性变差;过度追求效率可能让成本飙升,过分追求安全容易让用户体验变差)。这些矛盾点本质上只是一个事物的正反两面,偏重一方往往意味着另一方被忽视,最好的做法是找到一个平衡点,并且始终锚定”系统架构设计始终是为了实现企业战略和业务架构的目标”这个远期方向,去预见短期决策可能带来的未来影响、避免给未来的系统演进设置过多障碍。为了让这种权衡有据可查,架构的可追溯性——清晰追踪并记录架构设计、实现各阶段所做决策及其背后原因——能带来四个好处:一是提高系统稳定性和可维护性(后期修改扩展时能轻松回顾之前的选择,降低维护成本);二是促进团队内知识共享(标准化的文档规范、公共存储机制让信息传递更容易,也给新加入的架构师提供学习资源);三是有助于团队形成统一思想(架构师团队内部达成共识,也帮团队和业务方逐步形成默契);四是帮助架构师简化设计——因为架构设计不是简单的线性叠加过程(数据架构会反过来影响应用架构决策,技术架构也会反过来影响数据架构决策),有了可追溯机制,做新决策时更容易对照已有决策做相应调整,否则很容易出现决策不断堆叠导致的过度设计。这也呼应了架构设计的最后一条原则——简化设计:只做满足业务架构目标的最低限度设计,系统里每个功能都应该能关联到具体的功能性/非功能性需求决策,其余多余的功能都该被砍掉;唯一不能简化的是框架本身——如果系统未来大概率会发展到某个程度,应该提前按这个远期目标搭好框架,让后续演进都在这个框架内进行,而不是每次演进都要推倒重来。

结构图

flowchart TB
  M["架构矛盾点(时间/成本/效率/局部整体/安全便利/灵活稳定)"]
  M --> D["归结为短期利益vs长期利益的抉择<br/>需锚定远期战略目标寻找平衡点"]
  T["架构可追溯性(记录决策+原因)"]
  T --> T1["提高稳定性/可维护性"]
  T --> T2["促进团队知识共享"]
  T --> T3["形成团队统一思想"]
  T --> T4["防止决策堆叠导致过度设计→简化设计"]
  T4 --> S["简化设计原则:<br/>功能做最低限度,唯独框架不能简化"]

参考来源

- 位置:《架构师启示录:知识模型、落地方法与思维模式》第7章《架构设计》之"7.5.4 短期利益与长期利益的抉择"、"7.5.5 架构的可追溯性"与"7.5.6 简化设计:只进行最低限度的设计"(源文件:_epub-src/EPUB/xhtml/chapter11.xhtml) - 结论依据:原文说明"这些冲突都可以归结为短期利益和长期利益之间的抉择问题……可追溯性可以带来以下4种好处:一是提高系统稳定性和可维护性……四是帮助架构师尽可能简化设计……如果有了架构追溯的机制,在进行新的决策时就比较容易对已做过的决策进行相应调整,否则很可能出现决策不断相加导致架构过度设计的情况……有一个方面不能进行简化,那就是框架", 直接支撑本卡关于短期长期利益抉择及架构可追溯性四个好处的结构图。 - 原始内容:如果系统有较大的可能在未来发展到某种程度,那么我们就应该根据这个远期目标先构建好框架,并确保后续的演进都在该框架内进行,而不是每次演进都需要重新推翻再来一次。