我一直致力于多个项目,我已将应用程序从 PoC 转移到生产环境。
这些是我为自己和我的团队准备的清单,以确保我们为生产做好准备。
这里检查表是重点,因为应用程序采用 Python 编程语言并通过 Kubernetes 部署到 AWS。
并非所有这些都是强制性的,但它们是我发现最有用的。
1. 警报和指标
- [ ] 是否针对基础设施问题设置了警报(例如内存或 CPU 使用率增加、服务不可用)?
- [ ] 是否针对关键的应用程序特定逻辑故障设置警报?
- [ ] 我们可以查看基础设施和资源使用情况的历史数据(过去几个小时/几天)吗?
- [ ] 有实时监控仪表板吗?
2. 仪表板和SOP
- [ ] 是否有处理警报和已知问题的 SOP 文档?
- [ ] 有适用于常见场景的操作手册吗?
- [ ] 是否有适当的事件响应计划?
3. 待命映射和节奏
- [ ] 是否有针对应用程序级问题的待命人员映射?
- [ ] 是否有针对基础设施相关问题的待命人员映射?
- [ ] 是否有明确的轮换时间表和升级政策?
4. 部署
- [ ] 是否已确定合适的实例类型(GPU 或 CPU)?
- [ ] 是否已指定所需的服务器类型?
- [ ] 是否支持故障转移的多可用区?
- [ ] 是否支持多地区?
- [ ] 是否针对流量高峰设置了自动缩放(例如 HPA、Keda)?
- [ ] 是否为服务器配置了健康检查?
- [ ] 是否定义并记录了资源限制?
- [ ] 是否有蓝绿或金丝雀部署策略?
- [ ] 是否有明确的回滚计划和程序?
5. 可观察性和追踪性
- [ ] 是否有显示相关指标的仪表板(例如请求计数、HTTP 状态代码、使用情况)?
- [ ] 我们可以端到端跟踪单个请求以进行调试吗?
- [ ] 有日志聚合和分析系统吗?
- [ ] 分布式追踪实现了吗?
6.负载测试
- [ ] 是否进行了容量规划以确定服务器的负载处理能力?
- [ ] 是否有定义的性能基准?
- [ ] 是否进行了压力测试?
7. 质量
- [ ] 有自动化单元测试吗?
- [ ] 有自动化集成测试吗?
- [ ] 是否执行静态代码分析(例如复杂性检查)?
- [ ] 代码覆盖率是否经过测量并处于可接受的水平?
- [ ] 是否有生产健全性测试用例?
- [ ] 是否有 CI/CD 管道?
- [ ] 是否定期进行安全扫描和漏洞评估?
8. 发布
- [ ] Swagger/OpenAPI 文档是否可用并且是最新的?
- [ ] 是否有 API 和版本的版本控制系统?
- [ ] 是否有既定的沟通渠道来进行定期维护?
- [ ] 是否有变更管理流程?
- [ ] 功能标志是否用于逐步推出新功能?
9. 灾难恢复和业务连续性
- [ ] 备份和恢复程序是否已到位并经过测试?
- [ ] 有数据复制策略吗?
- [ ] 是否已定义恢复时间目标 (RTO) 和恢复点目标 (RPO)?
- [ ] 是否定期进行灾难恢复演习?
10. 合规性和安全性
- [ ] 数据在静态和传输过程中是否加密?
- [ ] 访问控制和身份验证机制是否到位?
- [ ] 是否定期进行安全审核?
- [ ] 应用程序是否符合相关行业标准(例如 GDPR、HIPAA)?
11. 文档
- [ ] 系统架构文档是否可用并且是最新的?
- [ ] API 文档是否完整且最新?
- [ ] 操作程序是否有记录?
- [ ] 有全面的故障排除指南吗?