遷移至 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,並使用 Looker Studio 分析資料,瞭解您使用的資源數量,並從中擷取任何支出模式。

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

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

分析完所有評估資料後,請回答下列兩個問題:

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

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

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

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

最佳化團隊

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

如要最佳化團隊,請執行下列操作:

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

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

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

轉型領導力是瞭解一般架構的良好起點,可協助您執行及評估組織變革,進而採用 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 SchedulerCloud ComposerCloud Run 等受管理服務,讓團隊自動執行重複性工作。

監控所有程序

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

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

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

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

採用雲端就緒做法

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

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

成本管理

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

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

再次評估及分析

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

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

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

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

調整最佳化迴圈

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

將最佳化迴圈編碼

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

自動執行最佳化迴圈

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

監控最佳化迴圈

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

後續步驟

貢獻者

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