Well-Architected Framework:效能最佳化支柱

Last reviewed 2025-02-14 UTC

Google Cloud Well-Architected Framework 的這個要素提供建議,協助您最佳化Google Cloud工作負載的效能。

本文適用對象為在 Google Cloud中規劃、設計、部署及管理工作負載的架構師、開發人員和管理員。

本支柱中的建議可協助貴組織提高營運效率、提升顧客滿意度、增加收益及降低成本。舉例來說,當應用程式的後端處理時間減少時,使用者會體驗到更快的反應時間,這可能會提高使用者留存率和收益。

效能最佳化程序可能需要在效能和成本之間做出取捨。不過,最佳化效能有時可協助您降低成本。舉例來說,當負載增加時,自動調度資源功能可確保系統資源不會超載,協助提供可預測的效能。此外,自動調度資源功能也會在負載較低時移除未使用的資源,協助您降低成本。

效能最佳化是持續進行的過程,而非一次性活動。下圖顯示效能最佳化程序的各個階段:

效能最佳化程序

效能最佳化程序是一個持續循環,包含下列階段:

  1. 定義需求:在設計及開發應用程式之前,請先為應用程式堆疊的每一層定義精細的效能需求。規劃資源分配時,請考量主要工作負載特性和預期效能。
  2. 設計和部署:使用彈性且可擴充的設計模式,協助您滿足效能需求。
  3. 監控及分析:使用記錄、追蹤、指標和快訊,持續監控效能。
  4. 最佳化:隨著應用程式演進,考慮潛在的重新設計。調整雲端資源規模,並使用新功能,滿足不斷變化的效能需求。

    如上圖所示,請持續監控、重新評估需求,並調整雲端資源。

如要瞭解 AI 和機器學習工作負載專屬的效能最佳化原則和建議,請參閱 Well-Architected Framework 中的「AI 和機器學習觀點:效能最佳化」。

使用代理技能評估工作負載

如要讓 AI 代理依據本支柱的原則和建議評估雲端工作負載,請使用 google-cloud-waf-performance-optimization 技能,該技能位於 GitHub 的 Google 代理技能存放區。

如要安裝技能,請在代理用戶端或終端機中執行下列指令:

npx skills add google/skills --skill google-cloud-waf-performance-optimization

系統提示時,請指定要安裝技能的 AI 代理,並設定安裝範圍 (專案或全域)。

如果已安裝技能,可以執行下列指令,更新至最新版本:

npx skills update

核心原則

Well-Architected Framework 效能最佳化支柱中的建議,對應至下列核心原則:

貢獻者

作者:

其他貢獻者:

規劃資源分配方式

這項原則屬於 Google Cloud Well-Architected Framework 的效能最佳化要素,提供建議協助您規劃Google Cloud工作負載的資源。並強調在設計及開發應用程式,以便進行雲端部署或遷移之前,定義精細需求的重要性。

原則總覽

為滿足業務需求,請務必在設計和開發前,先定義應用程式的效能需求。請盡可能針對整個應用程式和應用程式堆疊的每一層,定義這些需求。舉例來說,在儲存層中,您必須考量應用程式所需的處理量和每秒輸入/輸出作業 (IOPS)。

從一開始,就應考量效能和擴充性來規劃應用程式設計。請考量使用者人數、資料量,以及日後可能成長的幅度等因素。

各工作負載的效能需求不盡相同,取決於工作負載類型。每個工作負載都可能包含多個元件系統和服務,且各具獨特的效能特性。舉例來說,負責定期批次處理大型資料集的系統,與互動式虛擬桌面解決方案的效能需求不同。最佳化策略必須滿足各項工作負載的特定需求。

請選取符合各工作負載成效目標的服務和功能。成效最佳化沒有一體適用的解決方案。最佳化每項工作負載後,整個系統就能達到最佳效能和效率。

請考量下列可能影響效能需求的工作負載特性:

  • 部署原型:您為應用程式選取的部署原型可能會影響您選擇的產品和功能,進而決定應用程式的預期效能。
  • 資源位置:為應用程式資源選取 Google Cloud 區域時,建議您優先考量降低使用者延遲、遵守資料位置法規,並確保所需 Google Cloud 產品和服務可用。
  • 網路連線:選擇可最佳化資料存取和內容傳遞的網路服務。充分運用 Google Cloud的全球網路、高速骨幹、互連位置和快取服務。
  • 應用程式託管選項:選取託管平台時,您必須評估每個選項的效能優缺點。例如裸機、虛擬機器、容器和無伺服器平台。
  • 儲存空間策略:根據效能需求選擇最佳儲存空間策略。
  • 資源設定:機型、IOPS 和處理量可能會對效能產生重大影響。此外,在設計階段初期,您必須考量適當的安全功能及其對資源的影響。規劃安全防護功能時,請做好準備,在效能方面做出必要取捨,避免發生任何非預期的影響。

建議

為確保資源分配最佳化,請參考下列各節的建議。

設定及管理配額

確保應用程式只使用必要的資源,例如記憶體、儲存空間和處理能力。過度分配可能導致不必要的費用,而分配不足則可能降低效能。

為因應彈性調度資源,並確保有足夠的資源可用,請定期監控配額容量。此外,您也可以追蹤配額用量,找出潛在的擴充限制或過度分配問題,進而做出明智的資源分配決策。

教育和宣導

向使用者說明成效規定,並提供有效成效管理技巧的教育資源。

如要評估進度並找出待改進之處,請定期記錄目標成效和實際成效。對應用程式進行負載測試,找出潛在的中斷點,並瞭解如何擴充應用程式。

監控成效指標

使用 Cloud Monitoring 分析成效指標趨勢、分析實驗效果、定義重要指標的快訊,以及執行回溯分析。

Active Assist 是一組工具,可提供洞察資料和建議,協助您充分運用資源。這些建議可協助您調整資源分配,並提升效能。

發揮彈性優勢

Google Cloud Well-Architected Framework 效能最佳化支柱中的這項原則提供建議,協助您納入彈性,也就是根據工作負載需求的變化動態調整資源的能力。

彈性可讓系統的不同元件獨立調整資源配置。這種精準擴充方式可將資源分配到最需要的地方,避免過度或不足,進而提升效能和成本效益。

原則總覽

系統的效能需求會直接影響系統垂直或水平擴充的時間和方式。您需要評估系統容量,並判斷系統在基準狀態下預期要處理的負載。接著,您必須決定系統如何因應負載增減。

負載增加時,系統必須水平擴展、垂直擴充,或兩者兼具。如要水平調度資源,請新增副本節點,確保系統有足夠的整體容量,可因應增加的需求。如要垂直擴充,請將應用程式現有元件替換為容量、記憶體和儲存空間更大的元件。

負載降低時,系統必須縮減資源 (橫向、縱向或兩者皆是)。

定義系統擴充或縮減資源的情況。如果已知流量會在特定時段激增,請預先規劃手動擴充系統。使用自動調度資源等工具,因應負載增減。

建議

如要充分發揮彈性,請參考下列各節的建議。

規劃高負載時段

您需要為已知事件 (例如預期客戶需求增加的期間) 規劃有效的資源調度路徑。

建議您在已知的高流量時段前擴充系統。舉例來說,如果您是零售組織,預期需求會在季節性特賣期間增加。建議您在這些特賣活動前,手動擴充或水平擴展系統,確保系統能立即處理增加的負載,或立即調整現有限制。否則,系統可能需要幾分鐘才能新增資源,以因應即時變化。應用程式的容量可能無法快速增加,導致部分使用者遇到延遲。

對於未知或非預期的事件 (例如需求或流量突然激增),您可以使用自動調度資源功能,根據指標觸發彈性調度資源。這些指標包括 CPU 使用率、負載平衡器服務容量、延遲時間,甚至是您在 Cloud Monitoring 中定義的自訂指標。

舉例來說,假設某個應用程式在 Compute Engine 代管執行個體群組 (MIG) 上執行。這項應用程式要求每個執行個體在平均 CPU 使用率達到 75% 之前,都能發揮最佳效能。在這個例子中,您可以定義自動調度資源政策,在 CPU 使用率達到門檻時建立更多執行個體。這些新建立的執行個體有助於吸收負載,確保平均 CPU 使用率維持在最佳速率,直到達到您為 MIG 設定的執行個體數量上限。當需求減少時,自動調度資源政策會移除不再需要的執行個體。

在 BigQuery 中規劃資源運算單元預留項目,或使用代管自動配置器調整 Spanner 的自動調度資源設定限制。

使用預測式資源調度功能

如果系統元件包含 Compute Engine,您必須評估預測自動調度資源是否適合您的工作負載。預測式自動調度資源會根據指標的歷來趨勢 (例如 CPU 使用率),預測未來的負載。預測結果每隔幾分鐘就會重新計算,因此自動配置器會根據最近的負載變化快速調整預測結果。如果沒有預測式自動調度資源功能,自動配置器只能根據觀察到的即時負載變化,被動調度群組資源。預測式自動調度資源功能會同時使用即時資料和歷來資料,因應目前和預測的負載。

實作無伺服器架構

建議您使用本身具有彈性的無伺服器服務,實作無伺服器架構,例如:

有別於其他服務 (例如 Compute Engine) 必須依賴微調規則,無伺服器的自動調度資源功能會隨時運作,並能將配置資源縮減至零。

使用 Kubernetes 的 Autopilot 模式

如果複雜的應用程式需要更精細地控管 Kubernetes,建議使用 Google Kubernetes Engine (GKE) 的 Autopilot 模式。Autopilot 模式預設提供自動化和擴充功能。GKE 會根據流量自動調度節點和資源。GKE 會管理節點、為應用程式建立新節點,以及設定自動升級和修復功能。

推廣模組化設計

Google Cloud Well-Architected Framework 效能最佳化支柱中的這項原則,提供建議協助您推廣模組化設計。模組化元件和清楚的介面可讓您彈性擴充、獨立更新,以及在日後分離元件。

原則總覽

瞭解應用程式元件和系統元件之間的依附關係,設計可擴充的系統。

無論最初部署的是單體式或微服務架構,模組化設計都能提供彈性和韌性。將系統分解為定義明確、獨立且介面清晰的模組,即可擴充個別元件,滿足特定需求。

指定目標資源調度可透過下列方式,充分運用資源並降低成本:

  • 只為每個元件佈建必要資源,並為需求較低的元件分配較少資源。
  • 在流量較高的時段增加資源,維持使用者體驗。
  • 移除使用率過低的資源,且不影響效能。

模組化也能提升可維護性。較小的獨立單元更容易理解、偵錯和更新,可加快開發週期並降低風險。

雖然模組化具有顯著優勢,但您必須評估潛在的效能取捨。模組之間的通訊增加,可能會導致延遲和負擔。請在模組化和效能之間取得平衡。高度模組化的設計可能不適用於所有情況。如果效能至關重要,則可能適合採用更緊密耦合的方法。系統設計是反覆進行的程序,您需要持續檢視及調整模組化設計。

建議

如要推廣模組化設計,請參考下列各節的建議。

採用鬆耦合設計

設計鬆耦合架構。依附元件最少的獨立元件可協助您建構可擴充且有彈性的應用程式。規劃服務邊界時,必須考量可用性和擴充性需求。舉例來說,如果某個元件的需求與其他元件不同,您可以將該元件設計為獨立服務。針對不重要的子程序或服務,實施適當的失敗處理計畫,以免影響主要服務的回應時間。

設計並行和平行處理

設計應用程式時,應支援同時處理多項工作,例如處理多項使用者要求,或在使用者與系統互動時執行背景工作。將大型工作拆分為多個小型區塊,以便多個服務執行個體同時處理。工作並行功能可讓您使用自動調度資源等功能,增加下列產品的資源分配:

平衡模組化,彈性分配資源

盡可能確保每個元件只使用特定作業所需的資源 (例如記憶體、儲存空間和處理能力)。資源分配過多可能會產生不必要的費用,而資源分配不足則可能影響效能。

使用定義明確的介面

確保模組化元件透過明確、標準化的介面 (例如 API 和訊息佇列) 有效通訊,減少轉譯層或不必要流量造成的負擔。

使用無狀態模型

無狀態模型可確保您能獨立處理每項要求或與服務的互動,不受先前要求影響。這種模式可提升擴充性和復原能力,因為您可以擴充、縮減或重新啟動服務,而不會遺失進行中要求或程序所需的資料。

選擇互補技術

選擇與模組化設計相輔相成的技術。評估程式設計語言、框架和資料庫對模組化的支援程度。

詳情請參閱下列資源:

持續監控及提升效能

Google Cloud Well-Architected Framework 效能最佳化支柱中的這項原則,提供相關建議,協助您持續監控及改善效能。

部署應用程式後,請使用記錄、追蹤、指標和快訊,持續監控應用程式效能。隨著應用程式成長和演變,您可以利用這些資料點的趨勢,重新評估成效需求。您可能需要重新設計應用程式的部分內容,才能維持或提升效能。

原則總覽

如要持續提升效能,必須採用完善的監控工具和策略。Cloud 觀測能力工具可協助您收集關鍵成效指標 (KPI),例如延遲時間、處理量、錯誤率和資源使用率。雲端環境提供多種方法,可對應用程式、網路和使用者體驗進行精細的效能評估。

提升效能是一項持續的工作,需要多管齊下。下列重要機制和程序有助於提升成效:

  • 為提供明確方向並協助追蹤進度,請根據業務目標定義成效目標。設定 SMART 目標:具體 (specific)、可衡量 (measurable)、可達成 (achievable)、相關 (relevant) 且有時限 (time-bound)。
  • 如要評估成效並找出可改善之處,請收集 KPI 指標。
  • 如要持續監控系統問題,請使用監控工具中的視覺化工作流程。使用架構程序對應技術,找出重複和效率不彰之處。
  • 如要打造持續進步的文化,請提供有助於員工成長的訓練和計畫。
  • 為鼓勵主動持續改善,請提供獎勵,讓員工和客戶持續提供應用程式效能的意見回饋。

建議

如要推廣模組化設計,請參考下列各節的建議。

定義明確的成效目標和指標

根據業務目標,定義明確的成效目標。這需要深入瞭解應用程式架構,以及各個應用程式元件的效能需求。

請優先最佳化會直接影響核心業務功能和使用者體驗的重要元件。為確保這些元件持續有效運作並滿足業務需求,請設定具體且可衡量的成效目標。這些目標可能包括回應時間、錯誤率和資源使用率門檻。

這種主動做法可協助您找出並解決潛在瓶頸、最佳化資源分配,最終為使用者提供流暢且高效能的體驗。

監控成效

持續監控雲端系統的效能問題,並設定潛在問題的警示。監控和快訊功能可協助您在問題影響使用者前,及早發現並修正問題。應用程式剖析可協助找出瓶頸,並盡可能提高資源使用率。

您可以使用工具,有效排解問題及最佳化網路。使用 Google Cloud Observability 找出 CPU、記憶體或網路耗用量偏高的區域。這些功能可協助開發人員提高效率、降低成本,並提升使用者體驗。Network Intelligence Center 會以視覺化方式呈現網路基礎架構的拓撲,協助您找出高延遲路徑。

鼓勵持續改進

打造持續改善的文化,讓應用程式和使用者體驗都能受益。

為員工提供訓練和發展機會,提升他們在雲端服務效能技術方面的技能和知識。建立實踐社群 (CoP),並提供指導和輔導計畫,協助員工成長。

為避免被動效能管理,並鼓勵主動效能管理,請鼓勵員工、客戶和利害關係人持續提供意見回饋。您可以考慮將這個過程遊戲化,方法是追蹤成效 KPI,並定期以排行榜的形式向團隊展示這些指標。

如要瞭解一段時間內的成效和使用者滿意度,建議您從量化和質化兩方面評估使用者意見回饋。HEART 架構可協助您收集五個類別的使用者意見回饋:

  • 滿意度
  • 參與
  • 採用率
  • 保留
  • 工作成功

使用這類架構,您就能透過資料導向的意見回饋、以使用者為中心的指標、可做為行動依據的洞察資料,以及明確的目標,激勵工程師。