”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 生产准备清单

生产准备清单

发布于2024-08-05
浏览:893

Production Readiness Checklist

我一直在研究多个项目,我已将应用程序从 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 文档是否完整且最新?
  • [ ] 操作程序是否记录在案?
  • [ ] 是否有全面的故障排除指南?
版本声明 本文转载于:https://dev.to/soumendrak/production-readiness-checklist-1io5?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 // error:“ coss redeclare foo()” 但是,php工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地...
    编程 发布于2025-02-06
  • 您什么时候需要取消多层指针?
    您什么时候需要取消多层指针?
    使用多个级别的指针是有道理的: 在面向对象的编程上下文中,可以使用三重指针来表示复杂的指针层次结构。例如,考虑以下C类结构:类A { 民众: char *b; }; B级{ 民众: char *c; }; 在这里,A对象包含一个指向B对象的指针,而B对象包含指向char的指针。要从...
    编程 发布于2025-02-06
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    Exploiting Regular ExpressionsA more efficient solution involves leveraging regular expressions.正则表达式允许您定义复杂的搜索模式并在单个操作中执行文本转换。示例示例usage 接下来,您可以使用匹配器...
    编程 发布于2025-02-06
  • 为什么我的nvarchar(最大)值将SQL Server 2005中的4000个字符截断为4000个字符?
    为什么我的nvarchar(最大)值将SQL Server 2005中的4000个字符截断为4000个字符?
    convenation crocess 在提供的代码中,字符串是通过对一系列常量和一系列常数和一系列常数和变量均小于4000个字符。在被分配到 @sql1之前,串联的字符串仍被视为较小字符串的集合。 数据类型preceDence [&& && &&&&&&&&&&&&&&&&&&&&&&&...
    编程 发布于2025-02-06
  • 为什么在JDBC Connections中使用class.forname(“ oracle.jdbc.oracledriver”)?
    为什么在JDBC Connections中使用class.forname(“ oracle.jdbc.oracledriver”)?
    class.forname(“ oracle.jdbc.driver.oracledriver”)在jdbc connections中的目的是什么?使用Java,class.forname(“ oracle.jdbc.driver.oracledriver”)命令扮演至关重要的角色。 的目的是确...
    编程 发布于2025-02-06
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    插入记录时如何解决“一般错误:2006 MySQL 服务器已消失”介绍:将数据插入 MySQL 数据库有时会导致错误“一般错误:2006 MySQL 服务器已消失”。当与服务器的连接丢失时会出现此错误,通常是由于 MySQL 配置中的两个变量之一所致。解决方案:解决此错误的关键是调整wait_tim...
    编程 发布于2025-02-06
  • 在网络开发中保持领先地位:最新新闻,工具和见解#49
    在网络开发中保持领先地位:最新新闻,工具和见解#49
    ?阅读! 创始人模式:一般假设:一家初创公司的管理正在向经理模式变化 - 经理模式 - 在商学院管理和教授的众所周知的方式。 Founder mode is less known and understood, but may be more effective. / start...
    编程 发布于2025-02-06
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    在尝试将image存储在mysql数据库中时,您可能会遇到一个可能会遇到问题。本指南将提供成功存储您的图像数据的解决方案。 easudy values('$ this-> image_id','file_get_contents($ tmp_image)...
    编程 发布于2025-02-06
  • 我应该在使用块内明确关闭SQLConnection吗?
    我应该在使用块内明确关闭SQLConnection吗?
    答案在于使用关键字的行为。退出使用块时,在包含的对象上调用.dispose()方法。对于sqlConnection,.dispose()自动关闭连接并发布任何关联的资源。 ]使用cn作为new System.data.sqlclient.sqlConnection() CN.OPEN ...
    编程 发布于2025-02-06
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    [2明确担心Microsoft Visual C(MSVC)在正确实现两相模板实例化方面努力努力。该机制的哪些具体方面无法按预期运行?背景:说明:的初始Syntax检查在范围中受到限制。它未能检查是否存在声明名称的存在,导致名称缺乏正确的声明时会导致编译问题。为了说明这一点,请考虑以下示例:一个符合...
    编程 发布于2025-02-06
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python 导入编解码器 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有表情符号 emoji_pattern = re.compile(“ [”...
    编程 发布于2025-02-06
  • 在Sqlalchemy中过滤布尔值时,如何处理Flake8警告?
    在Sqlalchemy中过滤布尔值时,如何处理Flake8警告?
    避免使用sqlalchemy滤波器中布尔比较的flake8警告在使用sqlalchemy时,在过滤器条款中使用布尔比较通常是通常的。但是,Flake8在使用“ ==”操作员进行布尔比较时可能会引起警告。 sqlalchemy filter行为,但是,在sqlalchemy filter子句中,“ ...
    编程 发布于2025-02-06
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php 您的目标可能是检索“ varnum”属性值,其中提取数据的传统方法可能会使您感到困惑。 - > attributes()为$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ at...
    编程 发布于2025-02-06
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式界面中实现垂直滚动元素的CSS高度限制 考虑一个布局,其中我们具有与可滚动的映射div一起移动的subollable map div用户的垂直滚动,同时保持其与固定侧边栏的对齐方式。但是,地图的滚动无限期扩展,超过了视口的高度,阻止用户访问页面页脚。 可以限制地图的滚动,我们可以利用CSS...
    编程 发布于2025-02-06
  • 如何处理大于INT64大的十六进制字符串?
    如何处理大于INT64大的十六进制字符串?
    如何处理非常大的hexadecimal strings 考虑hexadecimal String 0x00000000d3c21bcecceda1000000。 进口 ( “编码/JSON” “ FMT” “数学/大” ) func main(){ 六边形:=“ ...
    编程 发布于2025-02-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3