mcpskills.net
技能MCP智能体提示词
mcpskills.net — A curated directory of AI agent Skills and MCP servers
TermsPrivacy
← 返回技能
Development

发布与上线

为生产环境上线做准备。在准备部署到生产环境、设置监控、规划分阶段灰度发布或需要回滚策略时使用。

作者:Addy Osmani仓库 →来源 →

自信地发布。每一次上线都应当是可回滚、可观测且增量进行的。

使用场景

  • 首次将某项功能部署到生产环境
  • 向用户发布重大变更
  • 迁移数据或基础设施
  • 任何带有风险的部署(其实每一次部署都有风险)

上线前检查清单

代码质量

  • [ ] 所有测试通过(单元、集成、端到端)
  • [ ] 构建成功且无警告
  • [ ] Lint 与类型检查通过
  • [ ] 代码已审查并批准
  • [ ] 没有应在上线前解决的 TODO 注释
  • [ ] 生产代码中没有 console.log 调试语句
  • [ ] 错误处理覆盖了预期的失败模式

安全

  • [ ] 代码或版本控制中无密钥
  • [ ] npm audit 未显示严重(critical)或高危(high)漏洞
  • [ ] 所有面向用户的端点都做了输入校验
  • [ ] 已设置认证与授权检查
  • [ ] 已配置安全响应头(CSP、HSTS 等)
  • [ ] 认证端点已限流

性能

  • [ ] Core Web Vitals 处于「Good」阈值内
  • [ ] 关键路径上无 N+1 查询
  • [ ] 图片已优化(压缩、响应式尺寸、懒加载)
  • [ ] 包体积在预算范围内
  • [ ] 数据库查询有合适的索引

无障碍

  • [ ] 所有交互元素均支持键盘导航
  • [ ] 屏幕阅读器能够传达页面内容与结构
  • [ ] 色彩对比度满足 WCAG 2.1 AA(文本 4.5:1)
  • [ ] 错误消息具有描述性,并与对应表单字段关联

基础设施

  • [ ] 生产环境已设置环境变量
  • [ ] 数据库迁移已应用(或随时可应用)
  • [ ] DNS 与 SSL 已配置
  • [ ] 静态资源已配置 CDN
  • [ ] 已配置日志与错误上报
  • [ ] 存在健康检查端点且能正常响应

功能开关(Feature Flag)策略

通过功能开关发布,以将部署与发布解耦:

const flags = await getFeatureFlags(userId);

if (flags.taskSharing) {
  return <TaskSharingPanel task={task} />;
}

return null;

功能开关生命周期:

1. DEPLOY with flag OFF     → Code is in production but inactive
2. ENABLE for team/beta     → Internal testing in production
3. GRADUAL ROLLOUT          → 5% → 25% → 50% → 100%
4. MONITOR at each stage    → Watch error rates, performance
5. CLEAN UP                 → Remove flag and dead code path

分阶段灰度发布

灰度发布步骤

1. DEPLOY to staging
   └── Full test suite in staging
   └── Manual smoke test of critical flows

2. DEPLOY to production (feature flag OFF)
   └── Verify deployment succeeded (health check)
   └── Check error monitoring

3. ENABLE for team (flag ON for internal users)
   └── Team uses the feature in production
   └── 24-hour monitoring window

4. CANARY rollout (flag ON for 5% of users)
   └── Monitor error rates, latency, user behavior
   └── 24-48 hour monitoring window

5. GRADUAL increase (25% -> 50% -> 100%)
   └── Same monitoring at each step

6. FULL rollout (flag ON for all users)
   └── Monitor for 1 week
   └── Clean up feature flag

灰度发布决策阈值

| 指标 | 推进(绿色) | 暂停并调查(黄色) | 回滚(红色) | |--------|-----------------|-------------------------------|-----------------| | 错误率 | 在基线 10% 以内 | 高于基线 10%-100% | 超过基线 2 倍 | | P95 延迟 | 在基线 20% 以内 | 高于基线 20%-50% | 高于基线 50% 以上 | | 客户端 JS 错误 | 无新增错误类型 | 新增错误占比 <0.1% | 新增错误占比 >0.1% | | 业务指标 | 中性或正向 | 下降 <5% | 下降 >5% |

何时回滚

出现以下情况时立即回滚:

  • 错误率超过基线 2 倍
  • P95 延迟增加超过 50%
  • 用户上报的问题激增
  • 检测到数据完整性问题
  • 发现安全漏洞

监控与可观测性

应监控什么

Application metrics:
├── Error rate (total and by endpoint)
├── Response time (p50, p95, p99)
├── Request volume
├── Active users
└── Key business metrics

Infrastructure metrics:
├── CPU and memory utilization
├── Database connection pool usage
├── Disk space
└── Network latency

Client metrics:
├── Core Web Vitals (LCP, INP, CLS)
├── JavaScript errors
└── Page load time

上线后验证

上线后第一个小时内:

1. Check health endpoint returns 200
2. Check error monitoring dashboard
3. Check latency dashboard
4. Test the critical user flow manually
5. Verify logs are flowing and readable
6. Confirm rollback mechanism works

回滚策略

每一次部署都需要回滚计划:

## Rollback Plan for [Feature/Release]

### Trigger Conditions
- Error rate > 2x baseline
- P95 latency > [X]ms
- User reports of [specific issue]

### Rollback Steps
1. Disable feature flag (if applicable)
   OR
1. Deploy previous version: `git revert <commit> && git push`
2. Verify rollback: health check, error monitoring
3. Communicate: notify team of rollback

### Time to Rollback
- Feature flag: < 1 minute
- Redeploy previous version: < 5 minutes
- Database rollback: < 15 minutes

验证

部署前:

  • [ ] 上线前检查清单已完成
  • [ ] 已配置功能开关(如适用)
  • [ ] 已记录回滚计划
  • [ ] 已搭建监控仪表盘
  • [ ] 已通知团队部署事宜

部署后:

  • [ ] 健康检查返回 200
  • [ ] 错误率正常
  • [ ] 延迟正常
  • [ ] 关键用户流程可用
  • [ ] 日志正常流转
  • [ ] 已测试回滚或确认随时可回滚