我有两个环境。一个是发展,一个是生产。将代码从开发合并到生产时,错误开始弹出,而不是开发,所以很难找出问题所在。有关如何修复此方案下的错误的任何建议?另外,prod中有不在dev中的bug是正常的吗?
答案 0 :(得分:2)
您需要做的是拥有一个预生产环境。预生产环境是生产环境的精确复制。
部署到您的预生产环境并进行一些测试。如果一切正常,那么请部署到您的生产环境。
定期使用生产数据刷新预生产环境。
如果你有生产中的错误。首先确保从生产环境刷新预生产。在预生产中调试问题要容易得多。
答案 1 :(得分:1)
由于生产环境在硬件,网络,并发性,用户数量等方面与开发环境不同,因此生产中缺少开发中没有的错误是很常见的。我不想要说“正常”,因为经过合理测试的应用程序通常不会产生重大的生产错误。
诊断仅限生产错误的最常用方法是在发生错误时有足够的日志记录来了解应用程序的状态。但当然,完全诊断错误的正确方法取决于错误。
最好完全避免生产错误。一些策略:
将单个版本的代码部署到所有环境,以便所有测试都在部署到生产环境的相同版本的代码上完成。如果单个版本需要在不同的环境中做不同的事情,可以通过使这些内容可配置并在不同的环境中而不是代码中更改配置(环境变量,配置文件,数据库数据等)来实现。
使开发和生产环境尽可能相似:使用相同或类似的操作系统,使用相同版本的语言运行库和库等。一些项目在VM上开发,以便他们可以准确同样的发展和生产环境。
完全自动部署,因此手动错误无法引入错误。
在部署到生产环境之前,部署到类似生产的登台环境并在那里进行测试。
进行金丝雀部署,以便在影响所有用户之前检测出仅限生产的漏洞。