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

生产准备清单

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

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]删除
最新教程 更多>
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-05-18
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-05-18
  • 查找当前执行JavaScript的脚本元素方法
    查找当前执行JavaScript的脚本元素方法
    如何引用当前执行脚本的脚本元素在某些方案中理解问题在某些方案中,开发人员可能需要将其他脚本动态加载其他脚本。但是,如果Head Element尚未完全渲染,则使用document.getElementsbytagname('head')[0] .appendChild(v)的常规方...
    编程 发布于2025-05-18
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的使用column方法可能会导致错误。 df.with...
    编程 发布于2025-05-18
  • 图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    在chrome 中删除一个频繁的问题时,在与Chrome and IE9中的图像一起工作时,遇到了一个频繁的问题。和“边境:无;”在CSS中。要解决此问题,请考虑以下方法: Chrome具有忽略“ border:none; none;”的已知错误,风格。要解决此问题,请使用以下CSS ID块创建带...
    编程 发布于2025-05-18
  • CSS可以根据任何属性值来定位HTML元素吗?
    CSS可以根据任何属性值来定位HTML元素吗?
    靶向html元素,在CSS 中使用任何属性值,在CSS中,可以基于特定属性(如下所示)基于特定属性的基于特定属性的emants目标元素: 字体家庭:康斯拉斯(Consolas); } 但是,出现一个常见的问题:元素可以根据任何属性值而定位吗?本文探讨了此主题。的目标元素有任何任何属性值,属...
    编程 发布于2025-05-18
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-05-18
  • 在Python中如何创建动态变量?
    在Python中如何创建动态变量?
    在Python 中,动态创建变量的功能可以是一种强大的工具,尤其是在使用复杂的数据结构或算法时,Dynamic Variable Creation的动态变量创建。 Python提供了几种创造性的方法来实现这一目标。利用dictionaries 一种有效的方法是利用字典。字典允许您动态创建密钥并分...
    编程 发布于2025-05-18
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-05-18
  • Java开发者如何保护数据库凭证免受反编译?
    Java开发者如何保护数据库凭证免受反编译?
    在java 在单独的配置文件保护数据库凭证的最有效方法中存储凭据是将它们存储在单独的配置文件中。该文件可以在运行时加载,从而使登录数据从编译的二进制文件中远离。使用prevereness class import java.util.prefs.preferences; 公共类示例{ 首选项...
    编程 发布于2025-05-18
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-05-18
  • 如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    编程 发布于2025-05-18
  • 如何使用node-mysql在单个查询中执行多个SQL语句?
    如何使用node-mysql在单个查询中执行多个SQL语句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    编程 发布于2025-05-18
  • 如何在鼠标单击时编程选择DIV中的所有文本?
    如何在鼠标单击时编程选择DIV中的所有文本?
    在鼠标上选择div文本单击带有文本内容,用户如何使用单个鼠标单击单击div中的整个文本?这允许用户轻松拖放所选的文本或直接复制它。 在单个鼠标上单击的div元素中选择文本,您可以使用以下Javascript函数: function selecttext(canduterid){ if(do...
    编程 发布于2025-05-18
  • PHP SimpleXML解析带命名空间冒号的XML方法
    PHP SimpleXML解析带命名空间冒号的XML方法
    在php 很少,请使用该限制很大,很少有很高。例如:这种技术可确保可以通过遍历XML树和使用儿童()方法()方法的XML树和切换名称空间来访问名称空间内的元素。
    编程 发布于2025-05-18

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

Copyright© 2022 湘ICP备2022001581号-3