2010-05-19 45 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