知识卡片
详细设计阶段发现方案不可行的风险及三种预防手段
内容
详细方案设计阶段可能遭遇一种极端但代价高昂的情况:细化到具体技术细节时,才发现之前选定的备选方案根本落不了地。这通常不是运气不好,而是备选方案评估阶段本身就遗漏了某个关键技术点或关键质量属性——书中提到一个真实案例,某方案在备选阶段评估时被判定可行,但进入详细设计后才发现细节点太多、方案体量庞大到要开发长达一年,最终不得不废弃原方案、重新调整项目目标,根源就是备选方案评估时完全没把”开发周期”这个质量属性纳入考量。要有效规避这类风险,有三种手段。第一,架构师不能只做选型判断,还必须对备选方案的关键技术细节有真正深入的理解——比如选定Elasticsearch做全文搜索,前提是架构师本人清楚它的索引、副本、集群等核心设计原理,而不能只是道听途说”这个技术很牛”就拍板,更不能养成”细节我们不讨论”的口头禅,这种只谈概念、扛不住细节追问的角色通常被戏称为”PPT架构师”——懂很多名词、能说服领导,但技术栈缺乏深度,一旦被问到具体技术选型背后的优缺点权衡就露怯,往往还会把选型问题简单归结为”听朋友说这个更好”这类没有实质依据的理由。第二,通过分步骤、分阶段、分系统的方式主动降低方案本身的复杂度——方案越复杂,某一个被忽略的细节推翻整个方案的概率就越高,适度拆解和降低复杂度本身就是在降低”细节点太多导致返工”这种风险。第三,如果方案本身确实复杂到难以避免,就应该采用设计团队协作的方式而非依赖一两个架构师单打独斗——集体讨论能有效弥补个别架构师存在的思维盲点或经验盲区,这一点对复杂方案尤其关键。
参考来源
- 位置:《从零开始学架构》第13讲《架构设计流程:详细方案设计》"架构设计第4步:详细方案设计"(源文件:_epub-src/OEBPS/text00001.html)
- 结论依据:原文说明"这个项目的主要失误就是在备选方案评估时忽略了开发周期这个质量属性",并给出三条预防措施"架构师不但要进行备选方案设计和选型,还需要对备选方案的关键细节有较深入的理解……更不能成为把'细节我们不讨论'这句话挂在嘴边的'PPT 架构师'""通过分步骤、分阶段、分系统等方式,尽量降低方案复杂度……如果方案本身就很复杂,那就采取设计团队的方式来进行设计",直接支撑本卡片结论。
- 原始内容:这个项目的主要失误就是在备选方案评估时忽略了开发周期这个质量属性……架构师不但要进行备选方案设计和选型,还需要对备选方案的关键细节有较深入的理解……如果方案本身就很复杂,那就采取设计团队的方式来进行设计,博采众长,汇集大家的智慧和经验,防止只有 1~2 个架构师可能出现的思维盲点或者经验盲区。