八步,助你成为架构师
架构思维是通用的, 掌握架构思维有利于提升自身专业素养
一、理解功能需求
二、发现隐藏的质量需求: 即DFX, 包括可伸缩性、可用性、可扩展性、可测试性、是否兼容历史版本等
三、 知道约束是什么
- 给定或选定的不可更改的设计决策
- 设备硬件约束
- 历史包袱等
- 需求限制等,比如必须用阿里云,不能用谷歌云
- 安全约束
四、已有的架构能否满足, 列举已有的架构有哪些
-
- MVC模式:“模型-视图-控制”, 经典的 WebUI 架构,控制处理请求从而更新模型和返回视图,模型更新驱动视图更新,视图请求控制处理。
- 分层模式:应用通常分为多层(控制层、服务层、领域层、数据层、基础设施层),是最常见的技术架构模式。
- 端口适配模式:系统通过各种端口适配器将输入转换为系统能够处理的输入,或者将系统输出转换为外部能够接收的输出。通常也称为接口模式,用于子系统交互或消息适配。模拟器也是适配器的一种
- 插件模式:系统支持加载不同的插件来完善自身功能。微内核是一种插件模式,其自身只包含最核心的模块,其它模块通过插件机制动态加载进来。
- 管道过滤器模式:由一系列过滤器通过管道连接,构成一个处理流水线。linux 管道就是典范。
- SOA:应用分解为多个分布式的服务组件,通过消息总线和标准服务对象格式来通信。
- 微服务模式:应用分解为多个分布式的微服务组件,通过 RPC 或消息队列来通信。
- 事件驱动模式:组件的变化会产生事件,任何组件都可以发布和监听事件。当事件发布时,监听者获得通知并进行处理,从而又会创建事件,推动进一步的监听和处理,往复循环。
- 发布订阅模式:订阅者订阅消息发布者的某类消息。当消息发送后,订阅者将接收消息进行处理。通常用于解耦多个生产者和消费者。
- 共享数据模式:多个应用通过共享数据库来访问数据。通常是有一个中心数据库,只有少量组件有写权限,而其它组件具备读权限。
- AKF立方体:从功能职责、数据、服务实例三个维度来分解架构职责。
- 单体应用模式:构建一个单体应用,包含了所有的模块和功能组件。通常是为了尽快交付一次性使用系统,不考虑长远维护。
不同的技术架构模式具备不同的整体结构特征,对于不同质量属性的支持程度也是不同的,引入的系统复杂度也是不同的。各个架构模式的详细讲解及所能达成的质量属性,可参阅: 《软件架构基础(影印版)》。
五、设计架构并可视化
- 遵循原则:
-
以人为本、推迟决策、善于借鉴、化虚为实
-
考虑开发实现
-
- 采用ARS工作簿
六、评估设计
- 架构简报:关于架构整体设计及架构设计变更的阐述及及时更新到关注人。
- 决策矩阵:类似技术选型的对比表格,说明各个方案的利弊,是否切合当前项目需求,最终决策及考量和依据。
- 场景走查:用实际场景走查,看看技术方案是否满足。在中型系统重构时,尤其要用此法来检验新方案能否解决所有已有的业务场景。
- 测量和监控:关于性能、稳定性相关的问题,需要通过测量和监控来论证可行性。
- 问题、评论、关注事项:团队成员对技术设计方案进行评论、指出问题、讨论问题。
- 风险风暴:团队成员一起来进行风险风暴,一起讨论设计方案在应对需求时存在的潜在风险及应对方案。
- 合理性检查:检查技术方案在满足需求、约束、规范方面的合理性。
- 代码审查: 通过代码审查,确定设计方案落实到系统实现中。
七、开研讨会决策讨论并修改
- 利用团队的智慧
- 让开发、产品、测试等参与评审,让别人多批评
八、 多实践
参考资料
- 架构设计入门知识 - 知乎 (zhihu.com)
- 架构师修炼之道阅读笔记
- 《架构师修炼之道》书籍