架构设计

架构设计要素

规划

目标:做正确的事、适可而止

输出:可落地的架构

设计模式

分而治之:将一个不存在系统分到可以被实现的单元为止

迭代式设计

输入

功能性需求 + 限制 + 质量要求 + 资产和技术

输出

原则

设计流程

识别复杂度

对于缺乏经验的新人,可以采取倒找法,就是通过已知的复杂性问题来对照本系统从而发现存在的复杂度

设计后备方案

单一方案设计很容易一条路走到黑,通过后备方案打开思路,避免陷入单一视角考虑问题

评估

综合当前的业务发展情况、团队人员规模和技能、业务发展预测等因素,将质量属性按照优先级排序

详细方案设计

当进入了详细设计阶段后发现备选方案不可行,一般情况下主要的原因是备选方案设计时遗漏了某个关键技术点或者关键的质量属性

这可以通过一些方式来避免:

方法论与思维

架构立方体

将设计的视角归为六类

功能性需求 -> 功能性模型

质量性需求、限制性需求 -> 运行性模型

需求分析

需求贯穿了系统的整个生命周期

202110212583

模块定义

系统上下文

屏幕截图 2021-10-03 145624

功能性模型

2021102133612

2021103155635

2021102143029

2021102143223

运行性模型

关注点:监控、容量、系统核心维度

部署单元:安装单元、执行单元、展示单元、数据单元

屏幕截图 2021-10-03 133833

2021103142736

屏幕截图 2021-10-02 131037

资产复用

复用能加快项目、避坑、减少意见冲突

架构验证

误区

企业架构设计

SCN策略能力网络

CBM基于模块的业务模型

信息架构

技术架构三角模型

策略差距

架构转型

架构评估

ATAM评审

关注产品本身

表述:

调查分析:

产品与架构讨论进行优先级场景、实现难度发现 安全性、性能预估等

场景讨论:

相关人士进行技术方案确定、风险点事项确认 识别出架构师没发现的风险点

报告生成:

得到会议纪要 共识事项 跟进事项 风险点等书面文档

CBAM成本效益分析方法

关注成本与效益

优先级评估:

选择前30%优先级的需求 在评估最好与最坏的业务场景下的性价比

ROI计算:

通过一系列计算得到投资回报率

系统容量评估

流量预估:使用历史数据 模型预测 -> 系统容量评估:根据预估结果评估各业务方所需的资源 -> 业务预热 -> 全链路压测 -> 容量微调、生成报告 -> 限流降级方案(做误差兜底)

应用容量与水位

根据当前QPS与单机QPS计算得到当前的集群负载情况 这个阈值可以用来被监控预警及做扩容缩容的一个基准线

容量精调

线上压测需要注意点到为止 达到性能阈值后要及时停止 防止影响线上业务

线上应急预案

故障等级:

故障预案:

线上异常回退:

版本控制 + 金丝雀/灰度

架构设计文档模板

备选方案模板

1. 需求介绍[描述需求的背景、目标、范围等]
2. 需求分析[全方位地描述需求相关的信息]
  5W
  [5W 指 Who、When、What、Why、Where。
  Who:需求利益干系人,包括开发者、使用者、购买者、决策者等。
  When:需求使用时间,包括季节、时间、里程碑等。
  What:需求的产出是什么,包括系统、数据、文件、开发库、平台等。Where:需求的应用场景,包括国家、地点、环境等,例如测试平台只会在测试环境使用。
  Why:需求需要解决的问题,通常和需求背景相关]
  1H
  关键业务流程
  8C
  [8C 指的是 8 个约束和限制,即 Constraints,包括性能 Performance、成本 Cost、时间 Time、可靠性 Reliability、安全性 Security、合规性 Compliance、技术性 Technology、兼容性 Compatibility]
3. 复杂度分析[分析需求的复杂度,复杂度常见的有高可用、高性能、可扩展等]
4. 备选方案
5. 备选方案评估

架构设计模板

1. 总体方案[核心内容就是架构图,以及针对架构图的描述,包括模块或者子系统的职责描述、核心流程]
2. 架构总览
3. 核心流程
4. 详细设计
5. 架构演进规划