89 lines
4.5 KiB
Markdown
89 lines
4.5 KiB
Markdown
---
|
||||
|
|
title: 架构目标(Architecture Goals)总结
|
|||
|
|
tags: [architecture, goals, SLO, NFR, governance]
|
|||
|
|
created: "<% tp.file.creation_date('YYYY-MM-DD') %>"
|
|||
|
|
updated: "<% tp.file.last_modified_date('YYYY-MM-DD HH:mm') %>"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
> 架构目标 = 面向业务的**可度量**NFR 套件 + **清晰边界与取舍** + **工程化落地**(观测、演练、回滚)+ **持续复盘**。
|
|||
|
|
|
|||
|
|
## 1. 目标框架(Framework)
|
|||
|
|
- 业务价值:增长/转化/留存/合规/成本
|
|||
|
|
- 质量属性(NFR):可用性、性能、安全、可维护性、可扩展性、可观测性、韧性、成本、合规
|
|||
|
|
- 约束:预算、交付周期、团队能力、地域/数据主权、遗留系统边界
|
|||
|
|
- 产出:SLO/阈值、数据源、验证方法、Error Budget、ADR/Trade-off 记录
|
|||
|
|
|
|||
|
|
## 2. 维度与指标(Dimensions & KPIs)
|
|||
|
|
| 维度 | 典型指标 |
|
|||
|
|
|---|---|
|
|||
|
|
| 可用性 | 月度 SLO(如 99.95%)、MTTR、MTBF、Error Budget |
|
|||
|
|
| 性能 | P95/P99 延迟、QPS/TPS、并发连接、队列时长 |
|
|||
|
|
| 可靠性/韧性 | 错误率、降级成功率、熔断/限流命中、故障演练通过率 |
|
|||
|
|
| 安全 | 高危漏洞处置时限、证书/密钥轮换周期、加密覆盖率、审计合规 |
|
|||
|
|
| 可维护性 | 变更 Lead Time、变更失败率、回滚时长、代码可测试性 |
|
|||
|
|
| 可扩展性 | 扩缩容时间、峰值利用率、容量裕度 |
|
|||
|
|
| 可观测性 | RED/USE 覆盖率、追踪采样策略、告警→行动闭环率 |
|
|||
|
|
| 成本 | Cost/Txn、成本结构占比(计算/存储/网络/日志/监控) |
|
|||
|
|
| 合规 | 数据驻留/留存期/可删除、审计通过率 |
|
|||
|
|
|
|||
|
|
## 3. SMART 化表达(Examples)
|
|||
|
|
- 可用性:**99.95%/月**;“可用”定义= P95 ≤ 400ms 且错误率 ≤ 0.2% → Error Budget ≈ 22 分钟/月
|
|||
|
|
- 性能:`/checkout` **P95 ≤ 250ms、P99 ≤ 600ms** @ 5k QPS
|
|||
|
|
- 安全:高危漏洞 **≤ 24h** 修复;静态数据加密 **100% 覆盖**
|
|||
|
|
- 维护:主干集成 Lead Time **≤ 1 天**;单键回滚 **≤ 15 分钟**
|
|||
|
|
- 成本:**Cost/1000 req ≤ $0.08**;监控+日志成本 **≤ 18%**
|
|||
|
|
|
|||
|
|
## 4. 制定流程(Playbook)
|
|||
|
|
1) 业务对齐 → 明确北极星指标
|
|||
|
|
2) 关键路径建模 → C4 + 时序 + 依赖图
|
|||
|
|
3) 设定 SLO 与成本上限 → 基于历史与压测基线
|
|||
|
|
4) 明确约束与非目标(不做/后做)
|
|||
|
|
5) 方案权衡 → Trade-off Matrix + ADR
|
|||
|
|
6) 接入度量/告警/演练 + 灰度/回滚策略
|
|||
|
|
7) 月度/季度复盘 → 目标、成本、事故与技术债
|
|||
|
|
|
|||
|
|
### Trade-off Matrix(简表)
|
|||
|
|
| 方案 | 可用性 | 成本 | 复杂度 | 交付周期 | 结论 |
|
|||
|
|
|---|---:|---:|---:|---:|---|
|
|||
|
|
| 单 Region 多 AZ | 高 | 中 | 中 | 快 | 先上 |
|
|||
|
|
| 多 Region 主备 | 更高 | 高 | 高 | 中 | 次阶段 |
|
|||
|
|
| 多 Region 多活 | 最高 | 最高 | 最高 | 慢 | 暂缓 |
|
|||
|
|
|
|||
|
|
## 5. 落地抓手(Engineering Levers)
|
|||
|
|
- 变更安全网:金丝雀 + 自动回滚 + 契约测试 + DB 迁移对称脚本
|
|||
|
|
- 韧性底座:超时/重试退避/熔断/隔离舱/限流/降级 **统一库 + 配置化**
|
|||
|
|
- 容量模型:峰值 N 倍冗余;弹性扩容 **≤ 5 分钟**
|
|||
|
|
- 观测默认开启:RED/USE 指标、端到端追踪、Runbook 与告警绑定
|
|||
|
|
- 数据主权:谁是“真源”、一致性策略(强一致/最终一致/CQRS/Outbox)
|
|||
|
|
|
|||
|
|
## 6. 冲突与解法(Trade-offs)
|
|||
|
|
- 可用性 ↔ 成本:分层 SLO + 主备先行,逐步演进多活
|
|||
|
|
- 性能 ↔ 一致性:核心写强一致,读侧 CQRS + 最终一致
|
|||
|
|
- 安全 ↔ 体验:风险分层验证(低风险免验证,高风险二验)
|
|||
|
|
- 可观测性 ↔ 成本:追踪采样 + 热点全量;日志冷热分层
|
|||
|
|
|
|||
|
|
## 7. 评审清单(Checklist)
|
|||
|
|
- [ ] 与业务北极星对齐,定义“可用/达成”的**判定条件**
|
|||
|
|
- [ ] 每个目标 **可度量**(阈值、数据源、验证方法)
|
|||
|
|
- [ ] 明确 **非目标/边界** 与阶段性演进计划
|
|||
|
|
- [ ] 关键链路有端到端观测与 **Runbook/告警**
|
|||
|
|
- [ ] 具备 **压测与容量评估**、留足冗余
|
|||
|
|
- [ ] 灰度/回滚/契约测试/DB 迁移流程完备
|
|||
|
|
- [ ] 安全与合规评审通过,关键证据归档
|
|||
|
|
- [ ] 成本上限与分摊模型可视化
|
|||
|
|
- [ ] ADR/Trade-off 文档化并归档
|
|||
|
|
|
|||
|
|
## 8. 模板(Templates)
|
|||
|
|
|
|||
|
|
### 8.1 SLO 模板
|
|||
|
|
```text
|
|||
|
|
【目标名称】结算服务端到端可用性
|
|||
|
|
SLO:99.95% / 月;滑动窗口:5 分钟
|
|||
|
|
“可用”定义:P95 ≤ 400ms 且 错误率 ≤ 0.2%
|
|||
|
|
Error Budget:≈ 22 分钟/月
|
|||
|
|
数据源:Prometheus / OTel(checkout_end_to_end_*)
|
|||
|
|
发布策略:金丝雀 + 自动回滚
|
|||
|
|
韧性参数:依赖超时 800ms;重试指数退避上限 2 次
|
|||
|
|
演练计划:季度混沌、半年度跨 AZ 切流
|
|||
|
|
负责人:结算团队 TL
|