瞭解部署策略

本文所述的架構說明如何建置和部署具有 Blue-Green 和 Canary 部署策略的現代化應用程式。部署策略是可修改或升級應用程式的模型與實務。部署策略可讓 DevOps 團隊定義應用程式如何部署到生產環境。

在不同的部署策略之間選擇可讓管理員在部署新版本風險、新版本對使用者的影響,以及導入策略所需的基礎架構負荷之間,進行正確的交易。我們希望為客戶提供更多選項,以滿足客戶對應用程式的需求。

關於 Blue-Green 部署

有了 Blue-Green 部署策略,DevOps 團隊想要使用兩個相同環境 (其中某個環境在指定時間內有效) 核發其應用程式的新版本。目前的應用程式版本是在作用中環境中佈建,新版本則部署到待命資料庫。

部署至待命環境不會影響作用中環境或使用者流量。DevOps 版本管線可以根據新版本執行驗證測試,通過核准之後,便會將使用者流量切換至待命環境,升級至生產環境。此程序會針對每個新的應用程式版本重複執行。

此策略的主要優點是它提供幾近零停機時間和即時倒回功能。如果新版本發生任何問題,流量便可立即回復至先前穩定版本。而待命環境則可用來除錯應用程式發行版本中所發生的錯誤。

下圖說明 Blue-Green 部署架構:

Blue-green-deployment.png 的描述如下
blue-green-deployment.png 圖解說明

瞭解 Blue-Green 部署元件

先前的架構具有下列元件。

  • 區域

    OCI 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且遠距離也能分隔它們 (跨國家或甚至大陸)。此架構使用單一區域。

  • DevOps 專案

    導入 CI/CD 工作流程所需的 DevOps 資源邏輯群組。DevOps 資源可以是使用者自建物件、組建管線、部署管線、外部連線、觸發程式以及環境。DevOps 專案可讓您輕鬆為所有的 DevOps 資源啟用記錄、監控及通知。

  • 組建管線

    組建管線會從您的原始程式碼儲存區域取得確認 ID,然後使用該原始程式碼執行您的組建指示。組建管線可定義一組組建處理作業的階段 - 建置、測試和編譯軟體使用者自建物件、提供使用者自建物件至 OCI 儲存區域及選擇性觸發部署。您可以在組建規格檔案中定義組建執行的流程和指示。

  • 建立階段

    階段是管線執行期間發生的個別動作。此處提到的各種組建階段為:受管理的組建階段:可建立並測試原始程式碼的受管理組建階段。傳遞使用者自建物件階段 :將組建階段輸出推送至各種儲存區域的階段。將容器映像檔類似於容器儲存區域,以及將建置資訊清單移至使用者自建物件登錄。呼叫部署:建立階段完成後,呼叫部署管線的階段,以及將匯出的變數從受管理組建階段剖析至部署管線階段。

  • 代碼儲存庫

    DevOps 服務代管的專用 Git 儲存區域。您可以透過我們的 DevOps 程式碼儲存區域儲存、管理及開發原始碼。部署管線 將一組使用者自建物件傳遞和部署至目標環境的一連串步驟。您可以透過定義序列或平行執行的階段,控制軟體發行版本的流程和邏輯。

  • 部署階段

    階段是執行管線期間發生的個別動作。這裡提到的各種組建階段包括:
    • Blue/Green OKE 部署Blue/Green 執行處理群組部署:將更新的程式碼部署至目標環境的階段。
    • 部署驗證:驗證部署的選擇性階段 (透過函數)
    • 控制:核准:控制階段以核准部署至目標生產環境。
    • 藍色 / 綠色 OKE 流量轉移藍色 / 綠色執行處理群組流量轉移:生產流量將切換至最新部署環境的最終階段。
  • DevOps 使用者自建物件

    DevOps 使用者自建物件指任何構成您應用程式之檔案、二進位、套裝程式、資訊清單或映像檔的參照或指標。建立使用者自建物件時,請通知 Oracle DevOps 實際使用者自建物件的來源位置。DevOps 支援 OCI 容器映像檔登錄和 OCI 使用者自建物件登錄儲存區域。

  • 使用者自建物件儲存區域

    「使用者自建物件儲存區域」會建立群組相似使用者自建物件的儲存區域。建立儲存區域時,您可以將使用者自建物件上傳至儲存區域。這些使用者自建物件是傳遞至目標部署環境的文字檔、二進位檔以及部署資訊清單的集合。每個使用者自建物件都有其路徑所組成的名稱:版本。路徑是組織使用者自建物件的字串。

  • OCI 日誌記錄與通知服務

    OCI 日誌記錄服務會儲存與部署相關的日誌。部署執行時間輸出與部署的最終結果會顯示為日誌項目。OCI 通知服務可查看部署專案與其資源的最新狀態,並採取任何必要的動作。例如,當重要事件 (例如部署管線中的階段等待核准) 時,您會收到通知。當您收到通知訊息時,可以前往 DevOps 部署管線並核准階段。

  • 部署環境

    環境是部署使用者自建物件之客戶運算資源的集合。環境可以是功能、運算虛擬機器 (VM) 或裸機執行處理或 OKE 叢集。Blue Green 部署僅適用於 OKE 叢集和運算虛擬機器。

瞭解 Blue-Green 部署的 Pro 和 Cons

部署現代化應用系統時,既獲得 Pro 和贊同採用 Blue-Green 策略。

Blue-Green 部署的優點包括:
  • Blue Green 部署項目可讓您快速且無風險的部署。
  • 它們採用有效的簡單倒回機制。
  • 它們是協調 A/B 軟體測試的有效方法。
  • 生產一律透過其中一個作用中環境 (亦即負載平衡器),提供零停機或近零停機時間。
Blue-Green 部署系列包括:
  • 若要維持 Blue-Green 部署環境,相同的環境和資源必須花費大量成本。
  • 您必須密切監控這兩個環境,才能管理兩個相同環境之間的版本。
  • 管理部署之間的資料庫相依性相當複雜。

關於 Canary 部署

運用 Canary 部署策略,應用程式發行版本會逐步遞增到一部分使用者。新版本一開始會部署至不具使用者流量的容器環境。DevOps 發行版本管線可以針對新版本執行驗證測試,一旦就緒,便只能將使用者的子集遞送至產品目錄環境。

此技術可讓 DevOps 團隊根據實際的使用者流量評估新的應用程式版本。他們可以在將新版本推出給較大的使用者庫之前,將兩個應用程式版本並排比較。它也提供風險降低措施,因為只有小部分使用者能夠啟用新版本,這些使用者可以在發生任何問題時輕鬆切換回先前的版本。

下圖說明 Canary 部署策略:

canary-deployment.png 的描述如下
canary-deployment.png 圖解說明

瞭解 Canary 部署元件

先前的架構具有下列元件。

  • 區域

    OCI 區域是包含一或多個資料中心 (稱為可用性網域) 的區域化地理區域。區域與其他區域無關,而且遠距離也能分隔它們 (跨國家或甚至大陸)。此架構使用單一區域。

  • DevOps 專案

    導入 CI/CD 工作流程所需的 DevOps 資源邏輯群組。DevOps 資源可以是使用者自建物件、組建管線、部署管線、外部連線、觸發程式以及環境。DevOps 專案可讓您輕鬆為所有的 DevOps 資源啟用記錄、監控及通知。

  • 組建管線

    組建管線會從您的原始程式碼儲存區域取得確認 ID,然後使用該原始程式碼執行您的組建指示。組建管線可定義一組組建處理作業的階段 - 建置、測試和編譯軟體使用者自建物件、提供使用者自建物件至 OCI 儲存區域及選擇性觸發部署。您可以在組建規格檔案中定義組建執行的流程和指示。

  • 建立階段

    階段是在執行管線時執行的個別動作。此處提到的各種組建階段包括:
    • 受管理組建階段:用來建置和測試原始程式碼的受管理組建階段。
    • 傳遞使用者自建物件階段:將組建階段輸出推送至各種儲存區域的階段。將容器映像檔與容器儲存區域相同,並且將部署資訊清單部署至使用者自建物件登錄。
    • 呼叫部署:建立階段完成後,呼叫部署管線的階段,以及將匯出的變數從受管理組建階段剖析至部署管線階段。
  • 代碼儲存庫

    DevOps 服務代管的專用 Git 儲存區域。您可以透過我們的 DevOps 程式碼儲存區域儲存、管理及開發原始碼。

  • 部署管線

    一連串步驟,可將一組使用者自建物件傳遞至目標環境。您可以透過定義序列或平行執行的階段,控制軟體發行版本的流程和邏輯。

  • 部署階段

    階段是執行管線期間發生的個別動作。這裡提到的各種組建階段包括:
    • OKE 部署 (Canary Instance Group Deployment) Canary Instance Group Deployment:部署更新程式碼至目標獨具環境的階段。
    • 部署驗證:驗證部署的選擇性階段 (透過函數)
    • OKE 流量轉移 (Canary OKE Traffic Shift) 加拿大執行處理群組流量轉移 (Canary Instance Group Traffic Shift) :根據坡度限制 (要轉移的流量百分比) 將流量切換至容器環境的階段。
    • 控制:核准:控制階段以核准部署至目標生產環境。
    • 可選擇部署執行處理群組生產OKE 部署生產:生產流量將切換至最新部署環境的最終階段。
  • DevOps 使用者自建物件

    DevOps 使用者自建物件指任何構成您應用程式之檔案、二進位、套裝程式、資訊清單或映像檔的參照或指標。建立使用者自建物件時,請通知 Oracle DevOps 實際使用者自建物件的來源位置。DevOps 支援 OCI 容器映像檔登錄和 OCI 使用者自建物件登錄儲存區域。

  • 使用者自建物件儲存區域

    「使用者自建物件儲存區域」會建立群組相似使用者自建物件的儲存區域。建立儲存區域時,您可以將使用者自建物件上傳至儲存區域。這些使用者自建物件是傳遞至目標部署環境的文字檔、二進位檔以及部署資訊清單的集合。每個使用者自建物件都有其路徑所組成的名稱:版本。路徑是組織使用者自建物件的字串。

  • OCI 日誌記錄與通知服務

    OCI 日誌記錄服務會儲存與部署相關的日誌。部署執行時間輸出與部署的最終結果會顯示為日誌項目。OCI 通知服務可查看部署專案與其資源的最新狀態,並採取任何必要的動作。例如,當重要事件 (例如部署管線中的階段等待核准) 時,您會收到通知。當您收到通知訊息時,可以前往 DevOps 部署管線並核准階段。

  • 部署環境

    環境是部署使用者自建物件之客戶運算資源的集合。環境可以是功能、運算虛擬機器 (VM) 或裸機執行處理或 OKE 叢集。Blue Green 部署僅適用於 OKE 叢集和運算虛擬機器。

瞭解 Canary 部署的 Pro 和 Conss

部署現代化應用程式時,會使用 Canary 策略爲證明與贊同。

Canary 部署的證明包括:
  • 它可讓您與真實使用者並排測試兩個應用程式版本。
  • 新版本核發不需停機。
  • 倒回至先前的版本非常容易,並且提供最低風險。
Canary 部署的共有:
  • 新版本的測試與驗證可能相當複雜。
  • 正在從使用者測試中從新版本擷取意見,是一項耗時的任務。