我們的團隊最近對連續部署非常感興趣,但是我們遇到了一些關於如何真正將代碼部署到Heroku上的障礙 - 看起來不可避免的是,需要一定量的停機時間做一個代碼推到Heroku。可以將Heroku配置爲進行真正的無縫部署嗎?
在傳統的環境中,代碼部署可能會是這個樣子:
- 推的代碼到一個臨時目錄中的某個地方(舊代碼仍然住)
- 對數據庫運行遷移(更通常情況下,事先運行遷移會更安全,並且可以防止那些會破壞代碼的少數人)
- 從負載平衡器中取出一半(或一些百分比的服務器)。
- 將代碼部署到這些服務器。
- 如果可能,運行某種自動化冒煙測試的/行使服務器,所以他們很「熱」
- 交換機哪些服務器是進出負載平衡器
- 沖洗和重複的。
對Heroku,我有過兩個關鍵步驟的控制非常少:
- 我不能先運行數據庫遷移。我考慮解決這個問題的一個方法是保持數據庫遷移分開分開,並將這些推向heroku首先 - 雖然痛苦,但會加劇問題 - 但只會加劇...
- Dyno spin-up time can take相當長的時間 - 顯然,這比Rails更多的是Heroku的問題,但關鍵的問題是我不能像上面的負載平衡器shuffle那樣做,以確保我的應用程序在新部署的服務器之前準備好並加載被放回負載平衡器。相反,我幾乎別無選擇,只能給用戶一個10-15秒的加載屏幕,希望最好(如果我使用上面的數據庫部署策略,那麼做兩次)
我們使用維護但如果我們轉向全面持續部署(我們可能每天大約有10-20次部署,並且10-20 * 30秒的維護屏幕開始累計),它不會成爲可擴展的解決方案。
有沒有人遇到類似的問題?你是如何解決他們的?任何偉大案例研究/ true連續部署在heroku上的成功案例?
這看起來非常適合我們!謝謝你讓我知道! –
我在www.versioneye.com的生產環境中使用此功能,並且完美地工作。有一些人認爲需要注意。這不是大數據庫遷移的解決方案。但是爲了推出更少的數據庫更改功能,它是完美的。我喜歡它。 –