生产环境调试的好方法?将数据复制到开发环境?

5
我稍微思考了一下。其实问题是在生产环境出现了错误。捕获的数据导致Web应用程序与其他环境表现不同。因此,在其他环境中的数据也会与生产环境不同步(预计如此)。然而,某个漏洞出现了,由于数据的差异,它只发生在生产环境中。
我在想要解决这类问题的好方法是什么?当然是需要更多测试。但除此之外呢?可以在dev中创建新数据,但整个问题的核心是某个数据点或某些操作的组合导致了数据点的错误。也许可以使用其他数据源来获取“实际”数据点,这与“预期”数据点不同。对于这个问题的描述可能不太准确,但它试图同时作为一个例子和一个通用生产漏洞的定义。
我知道这不是一个非常具体的问题。希望有相关参考文献可以提出好的建议。
1个回答

4
这是一个非常有趣的问题。我曾经采用的一种方法是故意在生产环境中进行最终测试(TIP)。
在你用许多尖锐的针刺穿我的模拟人物之前,请听我说一分钟关于持续部署的事情:)
这个想法是将新版本部署到生产环境中,然后使用自定义路由来在旧和新的生产版本之间进行流量调度。原则上,这是很简单的:你首先将旧版本路由到当前客户端,将新版本路由到工程团队。您的客户不会看到任何更改,但您的团队可以开始测试新版本,包括诸如灾难恢复和压力测试之类的混乱情况。您希望能够发现你在问题中谈到的那种错误。
如果出现问题,只需回滚新构建即可。如果测试没有发现任何问题,则可向5%的客户端发布,并逐渐增加至10%,20%等等。
虽然在原则上很简单,但需要从一开始就计划一些问题。第一个问题是数据和数据架构,在旧版本和新版本之间需要正确地运行。只要您的web应用程序使用的服务设计为在部署新构建后进行至少一个回滚,并且您的新构建了解旧数据和新数据,那么您应该会没问题。
第二个问题是API /接口更改。您需要创建一个新的API /接口,大部分重定向到旧API /接口,除了新/更改代码。
其他问题包括版本之间配置和设置的不兼容更改。这些问题并不致命,但在事先需要进行一些规划和测试。最大的奖励是,您可以在不影响客户的情况下安全地在生产环境中进行代码的最终测试。
有关在生产环境中进行测试的一些链接:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接