Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

T08: Architecture Decision Draft(架构决策文档)

⭐⭐⭐⭐ 中高级 | 设计系统架构、做出技术选型决策

核心概念

架构决策需要考虑:

  1. 功能需求 - 系统需要做什么
  2. 非功能需求 - 性能、可靠性、安全性等
  3. 技术选项 - 不同的技术方案
  4. 权衡分析 - 各方案的利弊
  5. 决策记录 - 记录why,而不仅是what

好的架构决策应该:

  • 清晰表述问题
  • 列举所有候选方案
  • 分析每个方案的优缺点
  • 明确选择标准
  • 记录最终决策和理由
  • 说明风险和缓解方案

最佳实践

🎯 原则1: 问题驱动

  • 不要为了用新技术而用
  • 应该解决实际的问题
  • 说明这个决策解决什么问题

🎯 原则2: 权衡分析

  • 列出关键属性(性能、成本、学习曲线等)
  • 对比每个方案
  • 明确优先级

🎯 原则3: 团队共识

  • 多个视角的意见
  • 与相关团队讨论
  • 获得关键stakeholder的同意

🎯 原则4: 定期审视

  • 决策是否有效
  • 环境是否改变
  • 是否需要调整

常见架构决策类型

决策1: 系统分层架构

Prompt:

请帮我设计[应用名]的系统架构。

需求:
- 功能:[功能描述]
- 用户规模:[预期用户数]
- 并发:[并发数]
- 地理分布:[单地区/多地区]

约束:
- 技术栈:[偏好的技术]
- 成本预算:[预算约束]
- 时间:[开发周期]
- 团队:[团队大小和技能]

请设计:
1. 整体分层(表现层、业务层、数据层等)
2. 主要组件和职责
3. 数据流向
4. 扩展性考虑

提供架构图说明。

决策2: 技术栈选型

Prompt:

请帮我评估这些技术栈方案。

需求:开发高性能的Web API

候选方案:
1. Spring Boot (Java)
   - 成熟度:高
   - 性能:中等
   - 学习曲线:中等

2. FastAPI (Python)
   - 成熟度:中等
   - 性能:高
   - 学习曲线:低

3. Go with Echo
   - 成熟度:中等
   - 性能:很高
   - 学习曲线:高

评估维度:
- 开发速度
- 运行性能
- 部署复杂度
- 团队熟悉度
- 生态支持
- 长期维护

我们的优先级:[优先级排序]

请给出对比分析和推荐。

决策3: 数据库选择

Prompt:

我的应用需要选择数据库。

应用特点:
- 数据:用户、订单、商品
- 查询模式:[查询模式说明]
- 写入模式:[写入模式说明]
- 数据规模:[预期数据量]
- 实时性要求:[延迟容忍度]

候选数据库:
1. MySQL
2. PostgreSQL
3. MongoDB

请对比这些数据库在我们场景下的适用性。

架构决策记录(ADR)模板

标准ADR格式:

# ADR 001: [简短标题]

## 状态: [Proposed/Accepted/Deprecated/Superseded]

## 背景

[为什么需要这个决策,当前面临的问题或机会]

## 决策

[我们决定采纳...]

## 理由

[为什么选择这个方案而不是其他]

- 优点1
- 优点2
- 优点3

相比其他方案:
- 方案A:[为什么不选]
- 方案B:[为什么不选]

## 后果

[这个决策带来的结果,包括好的和坏的]

### 积极后果:
- [好处1]
- [好处2]

### 消极后果:
- [风险1]
- [风险2]

## 相关决策

- ADR 002: [相关决策]

## 验证方式

[怎样验证这个决策的有效性]

## 审视时间

[何时应该重新审视这个决策]

🎓 下一步

  • 架构设计好后 → T09: API Design
  • 开始实现 → T02: Feature Implementation
  • 性能问题 → T12: Performance Optimization