歡迎光臨
每天分享高質量文章

Docker和持續交付部署型別

在本篇博文的姊妹篇《五步走戰略建立良好的持續交付流程》中,我們看到了高性能IT團隊如何採用Docker來實現持續交付(CD)的最佳實踐。其中,CD可以通過大量的部署方法實現,而Docker只是幫助實現必要的可定製的“基於工作流”的集成/構建過程的一種工具而已。


持續交付部署型別

下麵,我們就四種主要的部署型別,來聊一聊它們各自的優缺點。
  • 服務內最小部署

  • 應用程式滾動部署

  • 藍/綠部署

  • A / B測試

這四種部署型別又可分為兩個子類別:應用程式和基礎架構部署。


服務內最小部署

通過這種方法,我們指定了在更新剩餘百分比的同時保持在服務狀態的應用程式中的最小實體數,因此可以部署到盡可能多的標的。重覆此過程,直到所有服務器都更新為新版本。
例如:如果我們有5個容器,每個容器運行我們當前的應用程式A,那麼我們設置我們的策略以保持繼續提供服務的數量最小為2。我們使3個服務器離線,以將它們更新到我們的新版本B。一旦這些完成並正常對外提供服務,我們就可以更新剩下的2個了。

缺點
  • 這個過程存在多個階段,所以需要以Swarm之外的監控和健康檢查的形式進行支持

  • 對於基礎設施發生變化的情況下,效果不好

  • 對正在運行的服務器進行更改——萬一發生故障,恢復時間可能會很長

優點
  • 組件更新少,意味著可測性的提高;在正常提供服務的過程中進行應用程式和代碼更改

  • 無需停服務,沒有額外的基礎設施成本

  • 這個過程通常比滾動部署更快(見下麵)

滾動部署

考慮將滾動部署作為最小服務內容的擴展。但是,我們並沒有定義應該保持聯機狀態的容器數量,而是指定最大數量的容器進行更新。
例如:我們有和前面一樣的5個容器,但是這次我們通過指定可以同時更新的容器的數量來初始化滾動更新,例如2個。這個過程一次移動兩個容器的更新,直到集群中的所有服務器被更新。
註意:Docker Swarm支持滾動更新。預設情況下是一次更新一個容器。也可以自定義,使用 -update-parallelism引數設置即可。

缺點
  • Docker滾動更新有兩種方式來處理部署過程失敗的情況:

    通過暫停,允許人為介入並回滾修複

    或忽略報錯繼續執行,這意味著你可能錯過在容器運行過程中出現的問題

  • 比服務中最小部署(見上面)更複雜

  • 在部署時間方面可能是效率最低的;時間長短取決於每個階段更新的時間

  • 我再次推薦Swarm之外的監控和健康檢查

優點
  • 不用停機

  • 可以暫停,允許有限的多版本測試

  • 允許進行自動化測試——在繼續之前評估部署標的

藍/綠部署

當遵循藍/綠(又名紅/黑)方法時,我們短時間複製我們的“整個”基礎設施。複製的基礎架構托管新的應用程式,而舊的基礎架構繼續運行,直到測試完成並切到新的系統。這種部署方式已經存在很長一段時間,但在雲之前,這是一個非常昂貴的部署方法。現在,我們可以將系統部署到一個全新的環境中,從而實現獨立的評估,並且由於Cloud的原因,成本也將大大降低。一旦測試完成,我們將應用程式切換到新版本並關閉舊版系統。

如圖所示,藍色表示你當前的環境版本,而你要部署的新變體是“綠色”。通常,藍綠切換源於DNS的更改,儘管你也可以通過修改Auto Scaling來部署Blue / Green。
缺點
  • 需要高級編排工具

  • 就像資料庫一樣風險是存在的

  • 在短時間內會產生一些額外的成本

  • 非自然的用戶流量會使你的服務器不穩定,這也是一個風險點

優點
  • 由於基礎設施不動,所以降低了風險

  • 接近零停機,無需停服務

  • 使用DNS更改時,交換機是乾凈的並受控制的

  • 過程是完全自動化的,並提供一個更好的驗證視窗

  • 在切換之前可以測試整個環境的健康和性能


A / B測試

A / B部署與Blue / Green幾乎完全相同,但是在這種方法中,我們只將少部分流量發送到我們的新環境(綠色)。這種方法能夠切換環境,同時改變基礎設施,但比Blue / Green部署更精確。

缺點
  • 與前述的部署方法相比,需要移動很多部件

  • 更複雜,風險更高

  • 需要完全自動化一切操作

優點
藍/綠部署的所有好處,plus:
  • 我們可以提前預知規模和在生產中進行灰度發佈

  • 用來測試新功能並逐步評估性能,穩定性和健康狀況

  • 方便獲得客戶反饋,同時減少致命的影響和低級的錯誤

綜上所述,那生產上選擇哪種部署方法最合適呢?這取決於哪種方法最適合你的業務和技術需求。如果你的應用程式對用戶群強依賴,我們強烈建議盡可能利用A / B測試。
如果你希望將整個過程自動化,那麼我們希望邀請你查看我們的SaaS平臺Caylent,以便在你的雲中部署應用程式(如WordPress)。我們的DevOps容器管理系統可以自動完成上面說的整個流程以及更多你需要的。
原文鏈接:https://dzone.com/articles/docker-amp-continuous-delivery-deployment-types

赞(0)

分享創造快樂