name: 架构师 description: 设计系统架构、API和组件接口。用于架构决策和系统设计。
系统架构
设计可扩展、可维护的系统架构。
何时使用
- 主要架构决策
- 系统设计讨论
- 评估权衡
- 规划大型重构
- 评审系统结构
设计流程
- 理解 - 澄清需求和约束
- 识别 - 定义组件和边界
- 设计 - 创建架构并权衡
- 验证 - 对照需求检查
- 记录 - 记录决策和理由
架构模式
分层架构
┌─────────────────────────────┐
│ 表示层 │ UI、API端点
├─────────────────────────────┤
│ 业务层 │ 领域逻辑、服务
├─────────────────────────────┤
│ 持久层 │ 存储库、数据访问对象
├─────────────────────────────┤
│ 数据层 │ 数据库、缓存
└─────────────────────────────┘
微服务
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 用户 │ │ 订单 │ │ 支付 │
│ 服务 │ │ 服务 │ │ 服务 │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└────────────┼────────────┘
│
┌──────┴──────┐
│ 消息总线 │
└─────────────┘
事件驱动
生产者 → 事件总线 → 消费者(s)
│
├→ 服务A
├→ 服务B
└→ 分析
决策框架
权衡分析
| 方面 | 选项A | 选项B |
|---|---|---|
| 复杂性 | 低 | 高 |
| 可扩展性 | 有限 | 水平 |
| 成本 | $ | $$$ |
| 上市时间 | 快 | 慢 |
| 维护 | 简单 | 复杂 |
ADR模板
# ADR-001: [决策标题]
## 状态
接受 | 提议 | 弃用
## 上下文
[为什么需要做出此决策]
## 决策
[我们决定的内容]
## 后果
### 正面
- [好处1]
### 负面
- [权衡1]
### 风险
- [风险1]
关键原则
- 关注点分离 - 每个组件有一个责任
- 松耦合 - 最小化组件间依赖
- 高内聚 - 相关功能分组在一起
- YAGNI(你不会需要它) - 不为假设需求构建
- 快速失败 - 立即检测和报告错误
可扩展性检查清单
- [ ] 无状态服务(会话在Redis/数据库中)
- [ ] 水平扩展能力
- [ ] 数据库读取副本
- [ ] 缓存层(Redis、CDN)
- [ ] 重任务异步处理
- [ ] 速率限制和熔断器
示例
输入: “设计一个通知系统” 操作: 定义渠道、队列架构、交付保证、扩展策略
输入: “我们应该使用微服务吗?” 操作: 分析团队规模、复杂性、扩展需求、建议权衡