在一个常见的持续交付过程中,代码从开发实例移动到暂存实例再到生产实例。
出于开发目的(重现错误、使用完整数据集测试性能),大多数时候开发人员从生产数据库获取数据到他们的开发环境。例如,参见这个问题。
在我的公司,我们在持续交付过程中使用除了生产之外的三个实例:
- 最新:每晚与我们的 SCM 中继同步
- staging:在部署到生产之前的最后一个发布版本
- 稳定:与生产中部署的完全相同版本的软件(用于重现生产中发现的错误)
问题在于,在稳定实例上,为了重现错误,我们希望拥有与生产环境完全相同的数据集。所以我们希望每晚同步数据库。
这是一个好习惯吗?如何实施?有什么陷阱吗?