5.6.4 提前想想会出什么错——风险评估
一句话破题
风险评估就是提前问自己:什么可能出错?出错了怎么办?
风险评估的意义
没有风险评估:
开发到一半发现 → 技术选型有问题 → 推倒重来
有风险评估:
开发前就发现 → 调整方案或准备备选 → 平稳推进常见技术风险类型
| 风险类型 | 示例 | 影响程度 |
|---|---|---|
| 技术可行性 | 第一次用某个技术 | 高 |
| 性能风险 | 担心扛不住流量 | 中 |
| 安全风险 | 认证、数据泄露 | 高 |
| 依赖风险 | 第三方服务不可用 | 中 |
| 时间风险 | 工作量低估 | 中 |
风险评估模板
markdown
## 风险评估
### 风险 1:Prisma 不熟悉
- **概率**:高(第一次使用)
- **影响**:中(可能需要更多时间)
- **缓解措施**:
- 先做一个小 demo 熟悉 API
- 准备好官方文档作为参考
- 复杂操作让 AI 协助
### 风险 2:图片上传性能
- **概率**:低
- **影响**:中
- **缓解措施**:
- 前端压缩后再上传
- 使用 CDN 加速
- 设置文件大小限制
### 风险 3:用户量突增
- **概率**:低(初期)
- **影响**:高
- **缓解措施**:
- 使用 Vercel 自动扩容
- 数据库连接池
- 添加缓存层(后续)风险矩阵
高影响
↑
┌───────┼───────┐
│ 关注 │ 优先 │
│ │ 处理 │
├───────┼───────┤
│ 接受 │ 关注 │
│ │ │
└───────┼───────┘
低概率 ←───┼───→ 高概率
│
低影响| 象限 | 行动 |
|---|---|
| 高概率 + 高影响 | 优先处理,制定详细缓解计划 |
| 高概率 + 低影响 | 关注,准备简单应对方案 |
| 低概率 + 高影响 | 关注,准备应急预案 |
| 低概率 + 低影响 | 接受风险,出问题再处理 |
实际案例:博客系统风险
markdown
## 博客系统技术风险评估
### 高优先级风险
| 风险 | 概率 | 影响 | 缓解措施 |
|------|------|------|----------|
| 认证实现不当 | 中 | 高 | 使用成熟的 next-auth |
| 密码存储不安全 | 中 | 高 | 使用 bcrypt 加密 |
### 中优先级风险
| 风险 | 概率 | 影响 | 缓解措施 |
|------|------|------|----------|
| 首页加载慢 | 中 | 中 | SSG + CDN |
| 数据库查询慢 | 低 | 中 | 添加索引 |
### 低优先级风险
| 风险 | 概率 | 影响 | 缓解措施 |
|------|------|------|----------|
| Markdown 解析问题 | 低 | 低 | 用成熟库 |风险应对策略
针对不同风险,有不同的应对方式:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 规避 | 换一种方案 | 风险太大不值得冒 |
| 转移 | 用第三方服务 | 不想自己承担 |
| 缓解 | 降低概率或影响 | 必须面对但可以准备 |
| 接受 | 承认风险存在 | 影响小或成本低 |
让 AI 帮你发现风险
你:分析这个博客系统技术方案可能有什么风险
AI:## 潜在技术风险
### 安全风险
1. **XSS 攻击**:Markdown 渲染时可能执行恶意脚本
- 缓解:使用 sanitize-html 清洗输出
2. **CSRF 攻击**:POST 接口可能被跨站调用
- 缓解:next-auth 自带 CSRF 保护
### 性能风险
1. **N+1 查询**:列表页加载作者信息
- 缓解:使用 Prisma include 预加载
2. **大文件上传**:内存溢出
- 缓解:限制文件大小,使用流式上传
### 依赖风险
1. **Vercel 免费额度用尽**
- 缓解:监控用量,准备备选方案实用建议
- 列出所有担心的点:宁可多想不要遗漏
- 评估概率和影响:不是所有风险都需要处理
- 每个风险都要有对策:哪怕是"接受"
- 新技术先做 Spike:写个小 demo 验证可行性
