架构设计要素:从“金门大桥”到“小泥沟”的实战心法

61 阅读11分钟

架构设计要素:从“金门大桥”到“小泥沟”的实战心法

面向一线开发和准架构师,讲清架构设计要素:目标/方法/输出、分而治之/迭代设计、输入(功能/质量/限制/资产)、输出(规划/设计/测试/部署/采购)与面试策略。


1. 架构设计要素:基本功就像画画

架构设计要素就像画画的基本功:不管你是素描、水粉还是水墨,都得会布局、用笔、观察。架构设计也一样,不管用什么方法论,都得贯穿这些核心要素。

这一章主要讲输入输出、目标方法,为后续实战打基础。关键词是匠心:沉下心来,一步一步勾画,做出能落地、能传承的架构。


2. 架构设计的规划:目标、方法、输出

2.1 目标:Do the Right Thing Right

做正确的事(Do the Right Thing)

金门大桥设计师回小渔村,乡亲说有条“湍急大河”要修桥。设计师大手一挥:复制金门大桥设计,双拱斜拉索桥!

五个月后回到村里,发现“湍急大河”只是半米宽的小泥沟,搭个木质单拱桥就够了。乡亲们只有行人和自行车,没有卡车。

**问题在哪?**没做正确的事。不知道真实需求,没看交互场景,就盲目复制。

把事情做对(Do the Thing Right)

艺术家设计蜂窝状房屋,有人觉得丑,有人拍婚纱照。艺术家靠灵感设计,但:

  • 过两年自己都忘了为什么这样设计
  • 人员变动快,设计无法传承
  • 无法迭代、无法交接

推荐匠人思路

  • 有想法,但不是纯工业制品
  • 普世、易接受、易迭代、易沟通
  • 易交接、易评估、易测试验收

Do the Right Thing Right = 满足客户需求 + 把事情做对 = 普世、易传承、易交接的架构

2.2 方法:架构立方体(Architecture Thinking)

推荐 Architecture Thinking(架构师思维) 方法论,核心是架构立方体,包含:

  • 应用维度、技术维度
  • 功能维度、运行维度
  • 逻辑维度、物理维度

三根箭头转换路径

  1. 功能 → 运行
  2. 应用 → 技术
  3. 逻辑 → 物理

照着流程,把架构图画清晰、细化、丰富,自动完成从应用逻辑到物理落地的完整流程。

2.3 输出:可落地的架构和系统

作曲家不光要有手稿,还要在维也纳金色大厅演奏,让观众欣赏、反馈、传播。

架构师也一样:

  • 有架构设计图、文档
  • 代码化、系统化
  • 让业务负载、用户体验
  • 让口碑传播

输出 = 可落地的架构 + 对应的系统


3. 两个核心设计模式

3.1 分而治之(Divide and Conquer)

Hi-Fi 音响系统案例

音乐发烧友要做 Hi-Fi 系统,买音箱、调音设备、遥控器,但功放系统要么不满足要求,要么太贵。

分而治之过程

  1. 拆分成模块:音箱、调音、遥控、功放
  2. 功放模块无法用商业产品 → 自己开发
  3. 功放里:旋钮、壳子现成;电路板需定制 → 开发 PCB
  4. 电路板里:电阻、电容现成;编解码芯片、放大器芯片需定制 → 流片

关键点

  • 分解到刚好能实现为止:有产品用产品,有开源用开源,不行才定制
  • 适可而止:到流片就够了,不用研究晶体管理
  • 自然拼接:芯片用电路板组装,电路板用壳子封装,用 API 网关/消息队列串联模块

架构设计中的应用

  • 尽量用商业化/开源方案
  • 实在不行才少量定制编程
  • 用 API 网关/消息队列串联低耦合模块
  • 分到合适点就停止,不过度切分

3.2 迭代式设计(蛇咬尾巴循环)

企业架构循环

  • 红箭头:企业和业务能力
  • 黄箭头:IT 能力
  • 蓝箭头:需求 gap、不可达能力、转型能力

出现 gap → 转型 → 调整企业能力 → 改变 IT → 循环

系统架构循环: 了解需求 → 架构设计 → 开发实现 → 架构验收 → 反向箭头重新了解需求 → 迭代

关键点

  • 一个循环不是结束,是下一个循环的开始
  • 蛇嘴咬蛇尾,循环往复
  • 不停更新功能需求、改善非功能性需求
  • 性能更强、吞吐量更大、安全性更好

匠心精神:通过不停迭代,实现完美的 IT 架构。


4. 架构设计的输入:四大块

4.1 功能性需求:WH 分析法

WH = Who/Which + What + How

宠物管理系统例子

  • Who/Which:谁在用系统?

    • 人:宠物保姆(店员/店长)
    • 动物:各种宠物
    • 系统:外围用户认证系统、第三方监控系统、第三方支付系统
  • What:系统要做什么?

    • 给猫喂食
    • 给猫洗澡
    • 让猫滚毛线球
    • 召唤虚拟小狗(汪汪汪吓唬猫)
  • How:如何交互?

    • 人放置猫粮 → 猫吃空猫粮(喂食)
    • 猫四仰八叉躺盆子里(洗澡)

注意:How 关注用户如何体验系统(交互),不是内部如何实现(实现细节可忽略)。

4.2 质量需求:怎么分析法

怎么安全、怎么快、怎么稳定、怎么方便、怎么牛...

两大场景

  1. 运行质量:系统正常运行时,用户体验到的质量

    • QPS、TPS、响应延迟
    • 用户实实在在感受到的
  2. 准备质量:用户体验前,系统管理员准备的质量

    • 代码发布速度
    • 扩缩容速度(秒级扩展到上万个节点)

快猫 vs 慢牛

  • 慢牛:系统很牛,但准备过程很长
  • 快猫:系统不强,但像猫一样敏捷
  • 理想:又快又强大(准备质量好 + 运行质量牛)

质量要结合功能需求

  • 召唤虚拟小狗:5 秒响应(运行质量)
  • 给猫洗澡:准备 5 分钟(加热倒水铺满澡盆),洗完猫很舒服(运行质量)

每个质量挂在一个功能需求或系统需求上。

4.3 限制:三角形分析法

青铜级玩家(项目管理角度):

  • 范围:金门大桥 vs 小泥沟
  • 时间:多久完成
  • 资源:设计越细越浪费,用现成产品/开源方案节省资源时间

王者架构师

  1. 业务限制

    • CEO 希望市场份额达到 X%
    • 用户口碑达到 Y
    • 系统必须 10 毫秒响应,支撑 N 万 TPS/QPS
  2. 技术限制

    • 容器化技术能实现什么功能?有什么问题?
    • 中间件技术能达到什么要求?有什么限制?
    • 业务与技术限制互相沟通,找到合理切入点
  3. 法律法规限制

    • 欧洲:GDPR(个人敏感信息管理),数据放欧洲指定城市,支持快速删除
    • 美国:PCI DSS(支付安全)
    • 中国:安全银行民间证件要求
    • 地域性要求、摆放要求、架构设计要求
    • 可能导致必须外包、必须对接外部系统(如资金托管需牌照)

关键点

  • 限制制约架构发展,但也让架构真正落地
  • 空泛架构 = 口头架构
  • 受业务/法律/技术制约的架构 = 真真正正落地的架构

4.4 现有手段:资产和技术

  • 上一个项目的积累
  • 前一个产品的代码、库、架构设计文档、思路
  • 已熟悉的技术

配合需求,实现完整的架构设计思路。


5. 架构设计的输出:五大工件

5.1 架构规划

甘特图

  • 左边:具体任务(需求分析、设计、编码、测试)
  • 顶上:时间维度
  • 方块:前后依赖、交叠、并发

燃尽图

  • 任务达成 story point
  • 灰色线:目标
  • 红色点:实际完成(通常追不上灰色线)

没有规划的架构师不是好架构师(虽然可能追不上规划)。

5.2 研发设计

  • 需求工程图
  • 功能工程图
  • 运行工程图
  • 十张图 + 五六张文档 = 十几个工件

5.3 测试方案(Test Driven Design)

架构师不光指导开发,还要指导测试。

TDD 循环

  • Red(失败)→ Green(成功)→ Refactor(重构)
  • 蛇头咬蛇尾循环

架构师职责

  • 跳出循环之外,在循环开始前考虑:
    • 整体测试框架
    • 最核心的测试用例
  • 让研发/测试工程师通过循环落地、验证架构、完成代码

TDD 框架和关键 use case/test case 的选型、制定由架构师完成

5.4 部署方案

物理架构

  • 服务器、网络、机房、云平台

应用架构师 vs 系统架构师

  • 应用架构师:对接系统架构师,审核部署方案
  • 系统架构师:完成非功能性物理架构
  • 配合观察:功能性是否在非功能性物理架构上实现
  • 共同实现:业务要求、质量要求(可用性、稳定性、扩展性、高可用、性能)

非功能性扩展面

  • 可用性 → 容灾多活单元化
  • 性能 → CDN 缓存

准备过程的质量能力

  • 快速发布:应用发布、数据发布、网络发布
  • CI/CD:全自动实现开发测试环境 → 准生产发布

5.5 采购目标设定(招标需求)

RFP(Request for Proposal)

  • 招标流程最关键的文件
  • 大部分内容描述招标需求
  • 由架构师来写

POC(Proof of Concept)原型验证

  • 验证环境、验证案例
  • 成功/失败标准、打分考核项
  • 由架构师来写

资深架构师 vs 新架构师

  • 新架构师:参与招标、参与原型设计文档选择,不参与最后盖章
  • 资深架构师:有拍板权、图章权

影响力与身价

  • 百万级项目决策人 → 对接总监级(研发总监、产品总监)→ 百万年薪
  • 千万级项目决策人 → 对接 CTO → 首席架构师/主架构师 → 千万级身价

6. 面试实战:三道题

6.1 架构设计的整体思路和步骤

核心:架起需求到落地的桥梁

要点

  • 从需求出发,到最后落地
  • 分而治之:分解需求、分解模块
  • 迭代化思想:逐步落地、细化、可实现化
  • 架构立方体方法论:不同视角、不同视图

拿高分

  • 结合实际:讲清楚项目需求、如何理解、如何拆解
  • 功能性/非功能性、应用/技术/功能/运行模块、逻辑/物理视图
  • 利用立方体思路进行转换

6.2 架构设计中通常要考虑哪些因素

核心:架构设计的输入

要点

  • 功能需求(WH 分析法)
  • 质量(怎么分析法:运行质量、准备质量)
  • 限制(业务/技术/法律法规三角形)
  • 现有资产和技术

拿高分

  • 结合实际项目方法
  • 功能需求:Who/Which/What/How 讲清楚
  • 质量:多个“怎么”,运行时/准备时多个层次
  • 限制:项目角度、企业架构角度等多维度

6.3 架构设计中该如何分配工作时间

考察点

  • 架构设计过程:更关注哪些环节
  • 输出:关注哪些输出、比例如何
  • 风格:组成派(大部分时间做设计)vs 决策派(大部分时间开会讨论)
  • 时间管理:如何管理项目

拿高分

  • 结合架构设计的五大输出:规划、设计、测试、部署、采购
  • 分析时间分配比例,体现广度(面很广)和深度(某个点很深)
  • 组成派:九成时间在设计 → 细问设计方法、时间价值
  • 决策派:一半时间在采购/外包决策 → 细问决策依据、牺牲、限制

三道题总结

  • 一题考输出(整体思路步骤)
  • 一题考输入(考虑因素)
  • 一题考过程(时间分配)

7. 总结:匠心精神

架构设计要素贯穿整个架构设计过程:

  • 目标:Do the Right Thing Right
  • 方法:架构立方体
  • 输出:可落地的架构和系统
  • 模式:分而治之、迭代式设计
  • 输入:功能需求、质量、限制、资产
  • 输出:规划、设计、测试、部署、采购

关键词:匠心。沉下心来,一步一步勾画,做出能落地、能传承、能交接的架构。


8. 延伸思考

  • 找一个相对复杂的项目,作为后续章节的实战案例
  • 讲一讲当时如何设计、如何进行架构实践
  • 听完这一章后,有什么感触,希望通过什么方式进一步优化
  • 后续章节会逐步深入:实际画图、实际写工件,对着原有项目重新画架构图、重新写工件

把架构师的基本功练扎实,把匠心精神练出来。