遷移至 Google Cloud:將環境調整至最佳狀態

Last reviewed 2024-12-07 UTC

本文可協助您規劃及設計遷移至 Google Cloud的最佳化階段。在 Google Cloud中部署工作負載後,您就可以開始最佳化環境。

本文是下列系列文章的一部分,探討如何遷移至Google Cloud:

以下是遷移流程圖。

列出四個階段的遷移路徑。

在最佳化階段,您會改善環境,使其比初始部署更有效率。

如果您打算在遷移至 Google Cloud後最佳化現有環境,或是正在評估最佳化的可能性,並想瞭解可能的情況,本文都可助您一臂之力。

最佳化階段的架構遵循本系列文章所述的遷移架構:評估、規劃、部署及最佳化。您可以使用這個多功能框架規劃整個遷移作業,並在每個階段中分解獨立動作。完成最佳化階段的最後一個步驟後,您可以重新開始這個階段,找出新的最佳化目標。最佳化階段定義為最佳化迴圈。迴圈的執行作業定義為最佳化疊代

最佳化是持續進行的任務。隨著環境演進,您會不斷進行最佳化。為避免重複工作和失控,您可以設定可衡量的最佳化目標,並在達成目標時停止。之後,您隨時可以設定新的更高目標,但請注意,最佳化需要付出資源、時間、精力及技能,因此會產生費用。

下圖顯示最佳化迴圈。

最佳化決策樹。 如要查看這張圖的放大版,請參閱最佳化決策樹

在本文件中,您將執行最佳化迴圈的下列可重複步驟:

  1. 評估環境、團隊和您遵循的調整週期。
  2. 制定最佳化規定和目標。
  3. 調整環境並訓練團隊。
  4. 調整最佳化迴圈。

本文將探討一些網站穩定性工程 (SRE) 原則和概念。Google 開發 SRE 領域,是為了有效率且可靠地執行全球基礎架構,為數十億名使用者提供服務。如果您需要修改許多業務和協作程序,在機構內採用完整的 SRE 規範可能不太實際。或許可以先套用最適合貴機構的 SRE 領域子集。

評估環境、團隊和最佳化迴圈

開始執行任何最佳化作業前,請先評估環境。您也需要評估團隊的技能,因為最佳化環境可能需要團隊不具備的技能。最後,您需要評估最佳化迴圈。迴圈是一種資源,您可以像其他資源一樣進行最佳化。

評估您的環境

您必須深入瞭解自己的環境。如要成功進行最佳化,您必須瞭解環境的運作方式,並找出可改善的潛在領域。這項評估會建立基準,方便您比較評估結果與最佳化階段,以及後續的最佳化疊代。

遷移至 Google Cloud:評估及探索工作負載 提供評估工作負載和環境的詳細指南。如果您最近完成遷移至Google Cloud的作業,您應該已掌握環境的設定、管理和維護方式。否則,請按照該指南評估您的環境。

評估團隊

清楚瞭解環境後,請評估團隊,掌握他們的技能。首先,列出所有技能、每項技能的專業程度,以及每項技能最精通的團隊成員。在下一個階段,您可以使用這項評估結果,找出達成最佳化目標所需的任何缺少的技能。舉例來說,如果您開始使用代管服務,就需要具備相關技能,才能佈建、設定及與該服務互動。如要使用 Memorystore 在環境中的應用程式新增快取層,您必須具備使用該服務的專業知識。

請注意,最佳化環境可能會影響您的業務和協作程序。舉例來說,如果您開始使用全代管服務,而非自行管理的服務,就能讓作業人員有更多時間消除手動作業

評估最佳化迴圈

最佳化迴圈也是可以最佳化的資源。您可以運用這項評估收集的資料,清楚掌握團隊在上次最佳化疊代期間的表現。舉例來說,如果您想縮短疊代時間,就需要上一次疊代的資料,包括複雜度和追求的目標。您也需要瞭解上次疊代期間遇到的所有阻礙,確保在這些阻礙再次發生時,有適當的緩解策略。

如果這是第一次最佳化疊代,您可能沒有足夠的資料來建立基準,以比較成效。草擬一組假設,預測團隊在第一次疊代期間的表現。完成第一次最佳化疊代後,請評估迴圈和團隊的成效,並與假設進行比較。

確立最佳化需求和目標

開始執行任何最佳化工作前,請先為疊代作業擬定一組可明確衡量的目標。

在這個步驟中,您會執行下列活動:

  1. 定義最佳化要求。
  2. 根據最佳化需求,設定可評估的最佳化目標。

定義最佳化需求

列出最佳化階段的要求。需求表示需要改進,不一定需要可測量。

您可以從工作負載、環境和自身最佳化迴圈的一組品質特徵開始,草擬問卷來引導您設定需求。問卷調查涵蓋您認為對環境、程序和工作負載有價值的特徵。

有許多來源可協助您定義品質特徵。舉例來說,ISO/IEC 25010 標準定義了軟體產品的品質特徵,您也可以查看Google Cloud 設定檢查清單

例如,問卷調查可以詢問下列問題:

  • 您的基礎架構及其元件是否能垂直或水平擴充?
  • 您的基礎架構是否支援復原變更,而不需手動介入?
  • 您是否已有涵蓋基礎架構和工作負載的監控系統?
  • 您是否為基礎架構建置事件管理系統?
  • 實作規劃的改善措施需要多少時間和心力?
  • 您是否已達成先前疊代的所有目標?

從問卷調查的答案開始,草擬這項最佳化疊代的必要條件清單。舉例來說,您的需求可能如下:

  • 提高應用程式效能。
  • 提高環境中某個元件的可用性。
  • 提高環境中某個元件的可靠性。
  • 降低環境的營運成本。
  • 縮短最佳化疊代時間,降低固有風險。
  • 加快開發速度並縮短上市時間。

取得需要改善的領域清單後,請評估清單中的需求。在這項評估中,您會分析最佳化需求、尋找衝突,並為清單中的需求設定優先順序。舉例來說,提高應用程式效能可能會與降低營運成本相衝突。

設定可評估的目標

確定需求清單後,請為每項需求定義可衡量的目標。一個目標可能符合多項需求。如有任何不確定之處,或無法定義所有符合需求的目標,請返回這次疊代的評估階段,收集所有缺少的資訊,然後修正需求。

如要協助定義這些目標,您可以遵循其中一項 SRE 規範,即服務水準指標 (SLI) 和服務等級目標 (SLO) 的定義

  • 服務水準指標是您提供服務的量化指標。舉例來說,平均要求延遲時間、錯誤率或系統處理量,都可能是重要的 SLI。
  • 服務等級目標是服務等級的目標值或範圍值,依據服務水準指標衡量。舉例來說,服務等級目標可能是要求平均延遲時間低於 100 毫秒。

定義 SLI 和服務等級目標後,您可能會發現自己並未收集所有評估 SLI 所需的指標。這項指標收集作業是您可以著手處理的第一個最佳化目標。設定與擴充監控系統相關的目標,以便收集 SLI 所需的所有指標。

打造最佳環境和團隊

評估環境、團隊和最佳化迴圈,並為這次疊代建立需求和目標後,即可執行最佳化步驟。

在這個步驟中,您會執行下列活動:

  1. 評估環境、團隊和最佳化迴圈。
  2. 分析這些評估結果的資料。
  3. 執行最佳化活動。
  4. 再次評估及分析。

評估環境、團隊和最佳化迴圈

擴充監控系統,收集環境、團隊和最佳化迴圈的行為資料,建立基準,以便在最佳化後進行比較。

這項活動會以評估階段的成果為基礎,並加以擴展。確立需求和目標後,您就會知道要收集哪些指標,才能確保評估結果與最佳化目標相關。舉例來說,如果您定義了服務等級目標和對應的服務等級指標,以減少環境中某項工作負載的回應延遲時間,就必須收集資料來評估該指標。

瞭解這些指標也適用於您的團隊和最佳化迴圈。您可以擴充監控系統來收集資料,以便評估與團隊和最佳化迴圈相關的指標。舉例來說,如果您有 SLO 和 SLI,可縮短最佳化疊代的時間,就必須收集資料來評估該指標。

設計需要擴充監控系統的指標時,請考量資料收集作業可能會影響環境和程序的效能。評估您需要為評估項目導入的指標,以及這些指標的樣本間隔,瞭解是否可能影響成效。舉例來說,取樣頻率高的指標可能會降低效能,因此您需要進一步最佳化。

在 Google Cloud上,您可以使用 Cloud Monitoring 實作所需指標,以收集資料。如要直接在工作負載中導入自訂指標,可以使用 Cloud Monitoring 適用的 Cloud 用戶端程式庫,或 OpenTelemetry。如果您使用 Google Kubernetes Engine (GKE),可以透過 GKE 用量計算服務收集資源用量資訊 (例如 CPU、GPU 和 TPU 用量),然後依命名空間標籤劃分資源用量。

最後,您可以運用雲端架構中心Google Cloud 白皮書,找出團隊可能需要的新技能,進一步最佳化環境。

分析資料

收集資料後,請進行分析和評估,瞭解環境、團隊和最佳化迴圈的成效,是否符合最佳化需求和目標。

具體來說,您會根據下列項目評估環境:

  • 服務等級目標。
  • 業界最佳做法。
  • 沒有任何技術債的環境。

根據最佳化目標設定的服務等級目標,有助於瞭解是否符合預期。如果未達到 SLO,您需要強化團隊或最佳化迴圈。舉例來說,如果您為工作負載的某個百分位數設定回應延遲 SLO,而該工作負載未達到該目標,則表示您需要最佳化工作負載的該部分。

此外,您還可以根據業界公認的最佳做法,比較自身情況。舉例來說,Google Cloud 設定檢查清單可協助您設定企業工作負載的正式環境。

收集資料後,您可以考慮如何最佳化環境,以提高成本效益。您可以將 Cloud Billing 資料匯出至 BigQuery,並使用數據分析分析資料,瞭解您使用的資源數量,並從中擷取任何支出模式。

最後,請將您的環境與沒有任何技術債的環境進行比較,看看您是否達成長期目標,以及技術債是否增加。舉例來說,您可以針對環境中監控的資源數量,與上次疊代以來佈建的資源數量,建立 SLO。如果您未擴充監控系統來涵蓋這些新資源,技術債就會增加。分析技術債的變化時,也請考慮導致這些變化的因素。舉例來說,業務需求可能需要增加技術債,也可能出乎意料。瞭解造成技術債變化的因素,有助於您設定未來的最佳化目標。

如要在 Google Cloud上監控環境,可以使用 Monitoring 設計圖表資訊主頁快訊。接著,您可以將 Cloud Logging 資料傳送至其他目的地,以便進行更深入的分析,並延長保留期限。舉例來說,您可以建立匯總接收器,並使用 Cloud Storage、Pub/Sub 或 BigQuery 做為目的地。將資料匯出至 BigQuery 後,您就可以使用數據分析將資料視覺化,找出趨勢並做出預測。您也可以使用建議工具Security Command Center 等評估工具,自動分析環境和程序,找出最佳化目標。

分析所有評估資料後,您需要回答兩個問題:

  1. 您是否已達成最佳化目標?

    如果回答「是」,表示最佳化疊代作業已完成,您可以開始新的作業。如果回答「否」,請繼續回答第二個問題。

  2. 根據您編列的預算,是否能達成這次疊代設定的最佳化目標?

如要回答這個問題,請考量您需要的所有資源,例如時間、金錢和專業知識。如果回答「是」,請前往下一節;否則請根據這次疊代可用的資源,調整最佳化目標。舉例來說,如果您的時間有限,可能需要為下一個疊代排定一些最佳化目標。

最佳化團隊

環境最佳化是一項持續性的挑戰,可能需要團隊缺乏的技能,而您在評估分析期間發現了這點。因此,為了確保最佳化活動成功,您必須為團隊增進新技能,並提高流程效率。

如要提升團隊效率,請採取下列做法:

  • 設計及實施訓練計畫。
  • 最佳化團隊結構和文化。

如要讓團隊獲得缺少的技能,您需要設計及實施訓練計畫,或是選擇由專業訓練師準備的計畫。Google Cloud 詳情請參閱「遷移至 Google Cloud:評估及探索工作負載」。

在調整團隊時,您可能會發現結構和文化有待改善。很難事先判斷理想情況,因為每間公司都有自己的歷史和特質,這些因素促成了團隊結構和文化的演變。

轉型領導力是瞭解一般架構的良好起點,有助於執行及評估組織變革,以採用 DevOps 做法。如要瞭解如何在貴機構導入有效的 DevOps 文化,請參閱網站可靠性工程,這份文件全面說明瞭 SRE 方法。《網站可靠性工作手冊》是這本書的配套教材,透過具體範例說明如何運用 SRE 原則和實務做法。

最佳化環境

評估及分析指標資料後,您會知道需要改善哪些領域。

本節介紹Google Cloud 環境的一般最佳化技巧。您也可以執行任何專為基礎架構和所用服務設計的優化活動。

將所有內容系統化

採用Google Cloud等公有雲環境的最大優勢之一,就是可以使用 Cloud API 等明確定義的介面,佈建、設定及管理資源。您可以選擇合適的工具來定義基礎架構即程式碼 (IaC) 程序,並選擇合適的版本控管系統

您可以使用 Terraform 等工具佈建 Google Cloud 資源,然後使用 AnsibleChefPuppet 等工具設定這些資源。透過 IaC 程序,您可以為最佳化工作實行有效的復原策略。您可以還原對基礎架構說明程式碼所做的任何變更。此外,您也可以測試變更,避免在更新基礎架構時發生非預期的失敗情況。

此外,您可以使用 Open Policy Agent 等工具,將類似的程序套用至環境的其他方面,例如政策即程式碼,以及 GitOps 等作業即程式碼。

因此,如果您在早期最佳化疊代作業中採用 IaC 程序,就能將進一步的最佳化活動定義為程式碼。您也可以逐步採用這項程序,評估是否適合您的環境。

將所有作業自動化

如要全面提升整個環境的效能,您必須有效運用資源。也就是說,您必須消除手動作業,才能節省資源,並將資源重新投入產生價值的重要工作,例如最佳化活動。

根據 SRE 建議,如要消除手動作業,就必須提高自動化程度。並非所有自動化工作都需要高度專業的軟體工程技能或投入大量心力。有時,定期執行的簡短可執行指令碼,每天可節省數小時。 Google Cloud 提供多種工具,例如 Google Cloud CLI,以及 Cloud API、Cloud SchedulerManaged Service for Apache AirflowCloud Run 等代管服務,讓團隊自動執行重複性工作。

監控所有程序

如果無法收集環境的詳細指標,就無法改善環境,因為您缺乏資料來佐證假設。這表示您不知道該怎麼做才能達成最佳化目標。

全面監控系統是環境的必要元件。系統會監控所有重要指標,供您評估最佳化目標。設計監控系統時,請至少監控四大黃金信號

您可以使用監控和記錄等代管服務監控環境,不必設定複雜的監控解決方案。

您可能需要導入監控系統,監控混合式和多雲端環境,以符合資料限制政策,確保資料只儲存在特定實體位置,或同時使用多個雲端環境的服務。

採用雲端就緒做法

雲端就緒是一種範例,說明在雲端設計及執行應用程式的有效方式雲端原生運算基金會 (CNCF)雲端原生應用程式定義為可擴充、具備復原能力、可管理及可觀察的應用程式,並採用容器、服務網格、微服務、不可變動的基礎架構和宣告式 API 等技術。 Google Cloud 提供 GKE、Cloud Run、Cloud Service Mesh、Logging 和 Monitoring 等受管理服務,協助使用者設計及執行雲端就緒應用程式。

如要進一步瞭解雲端就緒技術,請參閱 CNCF Trail MapCNCF Cloud Native Interactive Landscape

成本管理

由於計費和成本模式不同,最佳化公有雲環境 (例如 Google Cloud ) 的成本,與最佳化地端部署環境的成本不同。

詳情請參閱「遷移至 Google Cloud:降低成本」。

再次評估及分析

完成這次疊代的最佳化活動後,請重複進行評估和分析,確認是否達成目標。請回答下列問題:

  • 您是否已達成最佳化目標?

    如果回答「是」,請前往下一節。

    如果回答「否」,請返回「調整環境和團隊」階段的開頭。

調整最佳化迴圈

在本節中,您將更新及修改本次疊代中遵循的最佳化迴圈,以更符合團隊結構和環境。

將最佳化迴圈編碼

如要有效率地最佳化最佳化迴圈,您需要以標準化、簡單明瞭且易於管理的形式記錄及定義迴圈,並預留變更空間。您可以使用全代管服務 (例如 Managed Airflow) 建立、安排、監控及管理工作流程。您也可以先使用語言 (例如業務流程模型和標記 (BPMN)) 代表您的流程。之後,您可以使用標準化語言 (例如業務流程執行語言 (BPEL)) 將這些程序編碼。採用 IaC 後,您就能以程式碼描述程序,並像管理環境中的其他部分一樣管理這些程序。

自動執行最佳化迴圈

將最佳化迴圈編碼後,即可自動執行重複性工作,藉此消除手動作業、節省時間,並提高最佳化迴圈的效率。您可以開始自動執行所有不需要人為決策的工作,例如測量資料及產生匯總報表供團隊分析。舉例來說,您可以使用 Cloud Monitoring 自動分析資料,檢查環境是否符合您定義的 SLO。最佳化是永無止盡的工作,而且您會反覆進行最佳化,因此即使是小型的自動化作業,也能大幅提升效率。

監控最佳化迴圈

如同環境中的所有資源,您也需要監控最佳化迴圈,確認迴圈運作正常,並找出瓶頸和未來的最佳化目標。您可以追蹤團隊在每個最佳化步驟中花費的時間和資源量,開始監控迴圈。舉例來說,您可以使用問題追蹤系統和專案管理工具監控流程,並擷取問題解決時間和完成時間等指標的相關統計資料。

後續步驟

貢獻者

作者:Marco Ferrari | 雲端解決方案架構師