Debugging 在一个可以';不能在开发环境中复制吗?

Debugging 在一个可以';不能在开发环境中复制吗?,debugging,testing,web,deployment,Debugging,Testing,Web,Deployment,我有两个环境。一个是发展,一个是生产。当将代码从开发阶段合并到生产阶段时,不在开发阶段的bug就会出现,因此很难找出问题所在。在这种情况下,有没有关于如何修复bug的建议?另外,在prod中出现不在dev中的bug是正常的吗?在生产中出现开发中没有的bug很常见,因为生产环境在硬件、网络、并发性、用户数量等方面与开发环境不同。我不想说“正常”,因为经过合理测试的应用程序通常不会有重大的生产缺陷 诊断仅限生产的bug最常见的方法是有足够的日志记录,以便在bug发生时了解应用程序的状态。当然,诊断错

我有两个环境。一个是发展,一个是生产。当将代码从开发阶段合并到生产阶段时,不在开发阶段的bug就会出现,因此很难找出问题所在。在这种情况下,有没有关于如何修复bug的建议?另外,在prod中出现不在dev中的bug是正常的吗?

在生产中出现开发中没有的bug很常见,因为生产环境在硬件、网络、并发性、用户数量等方面与开发环境不同。我不想说“正常”,因为经过合理测试的应用程序通常不会有重大的生产缺陷

诊断仅限生产的bug最常见的方法是有足够的日志记录,以便在bug发生时了解应用程序的状态。当然,诊断错误的正确方法完全取决于错误

最好完全避免生产缺陷。一些策略:

  • 将单一版本的代码部署到所有环境,以便所有测试都在部署到生产环境的同一版本的代码上完成。如果单个版本需要在不同的环境中执行不同的操作,那么可以通过在不同的环境(而不是代码)中进行配置和更改配置(环境变量、配置文件、数据库数据等)来实现

  • 使开发和生产环境尽可能相似:使用相同或相似的操作系统,使用相同版本的语言运行库和库等。一些项目在虚拟机上开发,以便它们在开发和生产中具有完全相同的环境

  • 完全自动化部署,因此不存在手动错误引入bug的机会

  • 部署到类似于生产的暂存环境,并在部署到生产之前在那里进行测试

  • 进行金丝雀式部署,以便在影响所有用户之前检测到仅在生产环境中漏掉的bug


您需要做的是有一个预生产环境。预生产环境是生产环境的精确复制

部署到预生产环境并执行一些测试。如果一切正常,则部署到您的生产环境中

定期使用生产数据刷新预生产环境


如果你在生产中有一个bug。首先确保从生产环境中刷新预生产。在预生产阶段调试问题应该容易得多。

通过“合并”,您的意思是生产代码与开发代码在某种程度上不同吗?Dave,是的,这就是我的意思。我在回答中添加了一个非常重要的点。