iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
Software Development

軟體架構備忘錄系列 第 29

Day 29 DevOps - 佈署策略 (知識點139~144)

  • 分享至 

  • xImage
  •  

思考的問題

確認程式內容正確之後,如何佈署到正式環境並最小化更新風險並減少對使用者的影響?

常見作法包含:QA環境、就地佈署、滾動佈署、金絲雀佈署、藍綠佈署、紅黑佈署


QA環境

描述

QA (Quality Assurance) 環境的目標為建置一個類同於正式環境的測試區域,以驗證各項功能符合需求,同時避免功能測試影響使用者。

實作方式

  • 建置測試環境:QA應用程式運作環境獨立於正式環境,以避免影響測試時影響使用者
  • 連線測試資料庫:QA環境連線的資料庫為測試資料庫,以區隔測試與正式營運資料
  • 自動佈署:CICD產生程式封裝檔案後,自動佈署測試環境
  • 進行驗證:於QA環境驗證功能是否正確

就地佈署

描述

就地佈署 (In-place deployment) 是一種程式部署的方式,通常在程式更新時直接在正式運作環境中進行部署。

優點

  • 建置成本低: 就地佈署不需要額外的運行環境或設備,因此相對來說建置成本較低。

缺點

  • 佈署期間無法提供服務: 由於在使用者使用中的環境進行佈署,因此在佈署期間無法提供服務,這可能會導致服務中斷或停機時間。
  • 風險高: 如果佈署過程中出現問題,由於沒有備援環境,可能會導致系統無法使用,因此需要謹慎進行測試和監控。

滾動佈署

描述

滾動佈署 (Rolling deployment) 是一種程式佈署的方式,通常在程式更新時逐步將新版本部署到各伺服器,而不是一次性對所有伺服器進行佈署。

優點

  • 避免影響使用者: 由於逐步佈署伺服器,因此過程中其他伺服器仍可以正常運行,這有助於避免影響使用者的服務可用性。

缺點

  • 建置成本較高: 滾動佈署需要規劃自動佈署排程和相關基礎設施,這可能會增加部署的建置成本。
  • 資料庫版本問題: 如果新版本的程式需要與資料庫有關,而新舊版本之間的資料庫物件不相容,那麼在滾動佈署時可能會產生程式版本衝突。為解決這個問題,需要謹慎考慮資料庫物件的升級,並確保新版本與舊版本之間的相容性。

金絲雀佈署

描述

金絲雀佈署 (Canary deployment) 是一種程式佈署的方式,在程式更新時先將新版本部署到少量伺服器,引導少部分流量到新版本伺服器。待確認功能正常運作後再佈署其他伺服器。

優點

  • 避免影響使用者: 由於逐步佈署伺服器,因此過程中其他伺服器仍可以正常運行,這有助於避免影響使用者的服務可用性。
  • 避免佈署無法使用的程式:由於只佈署少量伺服器,若發現使用上的問題,可直接取消後續佈署。

缺點

  • 建置成本較高: 金絲雀佈署需要規劃自動佈署排程和相關基礎設施,這可能會增加部署的建置成本。
  • 資料庫版本問題: 如果新版本的程式需要與資料庫有關,而新舊版本之間的資料庫物件不相容,那麼在滾動佈署時可能會產生程式版本衝突。為解決這個問題,需要謹慎考慮資料庫物件的升級,並確保新版本與舊版本之間的相容性。
  • 監控與回滾:需要建置程式運行監控與回滾機制,以確保運行問題時,還原程式版本。

藍綠佈署

描述

藍綠佈署 (Blue-green deployment) 是一種佈署策略,通常用於程式更新。它涉及建立兩個獨立且相同的環境,稱為「藍色」和「綠色」。在佈署新版本時,首先在綠色環境中部署新版本,而藍色環境仍然運行著舊版本。一旦新版本成功部署且測試無誤,流量被切換到綠色環境,使新版本對使用者可用。

佈署方式

  1. 建置藍綠環境: 建立兩個相同的環境,藍色和綠色。
  2. 流量導向藍色環境: 在程式更新之前,將流量導向藍色環境,讓綠色環境保持運行。
  3. 綠色環境佈署: 在綠色環境中部署新版本,流量仍然由藍色環境處理。
  4. 流量導向綠色環境: 當新版本成功佈署且測試無誤時,將流量切換到綠色環境,使新版本對使用者可用。
  5. 監控運行情況: 監控新版本的運行情況,以確保正常運作。
  6. 程式運作正常繼續佈署: 如果新版本運行正常,則繼續佈署新版本到綠色環境。
  7. 若運作失敗切回藍色環境: 如果新版本出現問題,可以快速切換回藍色環境,以最小化對使用者的影響。

優點

  • 降低風險: 如果新版本出現問題,可以迅速回滾到舊版本,降低了風險。
  • 避免影響使用者: 使用者仍然可以訪問舊版本,即使新版本正在部署和測試中。

缺點

  • 建置成本較高: 藍綠佈署需要額外的運行環境,因此建置成本較高。同時,需要切換流量和監控服務,因此佈署機制相對複雜。

紅黑佈署

描述

紅黑佈署 (Red-black deployment) 類似於藍綠佈署,但它利用雲端服務的按需付費特性。在紅黑佈署中,只在佈署階段使用所需的伺服器資源,並在佈署完成後釋放多餘的伺服器資源。

優點

  • 成本節省: 由於只在佈署階段使用伺服器資源,紅黑佈署可以大幅減少多餘環境的成本。您只需支付實際使用的資源,而不必長期租用伺服器。

限制

  • 依賴雲端服務: 紅黑佈署依賴雲端服務提供按需資源,因此無法在非雲端環境中使用。這限制了紅黑佈署的應用範圍,只能在使用雲端基礎設施的情況下使用。

上一篇
Day 28 DevOps - CI效能測試、資安測試 (知識點134~138)
下一篇
Day 30 架構設計要素表 與 小結
系列文
軟體架構備忘錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言