2010-05-19 46 views
26

我即将在生产中部署一个相当复杂的站点,并且首次需要一个临时环境,可以在更现实的环境中测试事情,尤其是关于某些无法运行的外部服务本地。暂存数据库良好实践

我的总体规划是开发&测试首先在本地,推动简单的改变(小bug修复,HTML/CSS,JS等)直接生产,而对于较大的变化,首先推到分段子域进行彻底的测试,然后到生产。

我不认为我需要保持暂存和生产数据库同步(偶尔手动更新会做),但我想知道是否有任何关于维护暂存环境的一般良好做法一个生产环境,尤其是涉及到数据库时。

任何一般的想法/建议/经验,将不胜感激。

UPDATE:

感谢您的意见,我得到的要点。我想这是值得花一些时间来思考这个。接受了流行的答案。

回答

26

通过绕过分段和进行生产更改是一种灾难和废用配方。当你做出这些改变时,小调的定义开始改变。其次,随着两种环境的分离(即分段不再匹配生产),事情就会中断,您在分段环境中失去信心。为了充分利用临时服务器,您应该对其进行自动化部署,完全测试,然后才能将其部署(自动化)到生产环境(无论变化多小)。你还应该确保整个环境尽可能相似,并保持这种状态。这显然包括数据库。我通常每天或每小时设置一次同步(取决于构建网站或应用程序的频率)以维护数据库,并且通常会将其作为构建过程的一部分运行。

+7

+1。分级环境的全部目的是模拟将要投入生产的东西。如果生产中的变化没有反映在您已经上演的代码中,那么为什么还要使用登台服务器呢? – NotMe 2010-05-19 14:42:07

+1

您可以请分享一些想法如何自动同步数据库? – geckob 2015-12-21 03:37:42

+1

@geckob应该是一个单独的问题,因为它将取决于特定的数据库,操作系统,你在哪里运行它(虚拟的,在数据​​中心,云)等 – 2015-12-21 21:54:35

7

正如有人开发一个软件tool与部署过程中的每一步帮助,我可以说,最好的做法,当涉及到分段环境是反映生产环境正是。这包括一个相同的数据库模式(数据不相关,偶尔备份/刷新很好),相同的操作系统版本,更新的服务包,网络服务器设置等。

在理想的世界中,功能或用户接收测试不需要在分期中完成,因为分段环境的目的只是测试部署到生产。然而,在实际应用中,有时您的暂存环境也可以成为您的功能性或UA测试环境。

每次更改生产服务器上的设置或更改配置时,都应该更改登台服务器上的设置,这将确保如果您可以将应用程序部署到登台,那么很有可能会部署到生产环境错误。

+11

我不同意“数据不相关”。根据系统的不同,生产数据可能会在您的暂存环境中显示各种不可预测的问题......这是一个重点:) – Dolph 2010-05-19 13:49:59

+3

@Dolph - 当我说数据时,我的意思是“订单”或“员工”。如果你在数据库中存储任何类型的配置,那么你是正确的,因为它肯定需要是相同的。但是,如果明文数据以某种方式破坏您的应用程序,那么应该在QA测试期间捕获这些数据。当然,如果你的临时和测试环境是相同的,那么经常刷新你的临时数据库可能是一个好主意;) – 2010-05-19 14:00:59

+3

在一个完美的世界中,我会同意。但根据我的经验,真实世界的用户总是找到方法来生成没有其他人期望的数据。 – Dolph 2010-05-19 14:14:22