

# 效能達成效率
<a name="performance-efficiency"></a>

 效能達成效率要件包括有效率地使用運算資源以滿足系統需求，並隨著需求變更與技術發展來保持該效率需求的能力。 

 效能達成效率支柱概述了設計原則、最佳實務和相關問題。您可以在下列白皮書中找到規範指引： [效能達成效率支柱白皮書](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp)。

**Topics**
+ [設計原則](perf-dp.md)
+ [定義](perf-def.md)
+ [最佳實務](perf-bp.md)
+ [資源](perf-resources.md)

# 設計原則
<a name="perf-dp"></a>

 雲端的效能達成效率有五個設計原則： 
+  **讓進階技術變得更普及**：將複雜的任務委派給雲端廠商，讓團隊更輕鬆地實作進階技術。與其要求 IT 團隊了解新技術的託管和執行方式，不如考慮使用技術即服務。例如，NoSQL 資料庫、媒體轉碼和機器學習均為需要專業知識的技術。在雲端，這些技術成為團隊可以使用的服務，讓團隊可專注於產品開發，而非資源佈建及管理。 
+  **在幾分鐘內將業務擴展到全球**在全球多個 AWS 區域部署工作負載，讓您以最低的成本，為客戶提供較低的延遲和更好的體驗。 
+  **使用無伺服器架構**：採用無伺服器架構，您便無需執行和維護實體伺服器來完成傳統運算活動。例如，無伺服器儲存服務可以充當靜態網站 (因此無需 Web 伺服器)，而事件服務可以為您託管程式碼。如此一來，即可減輕管理實體伺服器的營運負擔，而且由於這些受管服務是在雲端規模上運行，因此還可以降低交易成本。 
+  **提高試驗頻率**：藉助虛擬及可自動化的資源，您可以使用不同類型的執行個體、儲存設備或組態，迅速完成比較測試。 
+  **考慮機械共鳴作用**：了解雲端服務的使用方式，並一律使用最符合工作負載目標的技術方法。例如，在您選擇資料庫或儲存方法時，請考慮資料存取模式。 

# 定義
<a name="perf-def"></a>

 雲端效能達成效率的最佳實務有四個領域： 
+  **選擇** 
+  **審查** 
+  **監控** 
+  **權衡** 

 採取資料驅動的方法來建置高效能架構。從高階設計到資源類型的選擇和組態，收集架構各方面的資料。 

 定期審查您的選擇，確保充分利用不斷演進的 AWS 雲端。監控可確保您能察覺任何與預期效能的偏差。在架構中做出權衡以改進效能，例如使用壓縮或快取，或放寬一致性要求。 

# 最佳實務
<a name="perf-bp"></a>

**Topics**
+ [選擇](perf-sel.md)
+ [審查](perf-review.md)
+ [監控](perf-monitoring.md)
+ [權衡](perf-tradeoffs.md)

# 選擇
<a name="perf-sel"></a>

 適用於特定工作負載的最佳解決方案各不相同，而解決方案通常會結合多種方法。Well-Architected 工作負載會使用多重解決方案，並啟用不同功能以提升效能。 

 AWS 資源有多種類型和組態，可讓您更輕鬆地找到最符合工作負載需求的方法。您還可以發現使用內部部署基礎設施不易實現的選項。例如，Amazon DynamoDB 這種受管服務，可提供全受管的 NoSQL 資料庫及任何規模下的十毫秒內延遲時間。 

 下列問題著重於效能達成效率方面的這些考量。(如需效能達成效率問題和最佳實務的清單，請參閱 [附錄](a-performance-efficiency.md)。)


| PERF 1：您如何選擇效能最佳的架構？ | 
| --- | 
|  欲讓工作負載達到最佳效能通常需要採用多種方法。Well-Architected 系統會使用多重解決方案和功能以提升效能。 | 

 使用資料驅動的方法，為您的架構選取模式和實作，並達成具有成本效益的解決方案。AWS 解決方案架構師、AWS 參考架構和 AWS 合作夥伴網路 (APN) 合作夥伴，可根據產業知識協助您選取架構，不過必須使用透過基準化分析或負載測試獲得的資料，為架構進行優化。 

 您的架構可能會結合許多不同的架構方法 (例如，事件驅動、ETL 或管道)。實作架構將使用專屬於您的架構效能優化的 AWS 服務。在以下各節中，我們將討論您應該考慮的四大主要資源類型 (運算、儲存、資料庫和網路)。 

# 運算
<a name="perf-compute"></a>

 選擇符合您要求、效能需求並提供高效率成本和精力的運算資源，讓您能夠使用相同數量的資源來完成更多工作。評估運算選項時，請注意您對工作負載效能和成本的要求，並依據這些要求做出明智的決策。

 在 AWS 中，提供了三種運算形式：執行個體、容器和函數。 
+  **執行個體** 是虛擬伺服器，可讓您使用按鈕或 API 呼叫，來變更其功能。由於在雲端中，資源決策不是固定的，您可以使用不同的伺服器類型進行試驗。在 AWS 上，這些虛擬伺服器執行個體具有不同系列和大小，並且可提供眾多不同功能，包括固態硬碟 (SSD) 和圖形處理單元 (GPU)。
+  **容器** 是將作業系統虛擬化的一種方法，可讓您在隔離資源的程序中執行應用程式及其相依性。AWS Fargate 是容器的無伺服器運算，或者，如果您需要控制運算環境的安裝、組態和管理，則可使用 Amazon EC2。您也可以從多個容器協調平台中選擇：Amazon Elastic Container Service (ECS) 或 Amazon Elastic Kubernetes Service (EKS)。 
+  **函數** 可從您想執行的程式碼中將執行環境抽象化。例如，AWS Lambda 可讓您無需執行執行個體便能執行程式碼。

 下列問題著重於效能達成效率方面的這些考量。


| PERF 2：您如何選取運算解決方案？ | 
| --- | 
| 工作負載的最佳運算解決方案會根據應用程式設計、使用模式和組態設定而有所不同。架構可針對不同元件使用不同運算解決方案並啟用不同功能，以提升效能。為架構選錯運算解決方案，可能使效能達成效率降低。 | 

 在建立使用運算的架構時，您應利用可用的彈性機制來確保您有足夠的容量，可在需求變更時維持效能。

# 儲存
<a name="perf-storage"></a>

 雲端儲存是雲端運算中很重要的元件之一，儲存了工作負載所使用的資訊。雲端儲存通常比傳統內部部署的儲存系統更為可靠、可擴展且安全。為您的工作負載選擇物件、區塊和檔案儲存服務，以及雲端資料遷移選項。

 在 AWS 中，儲存有三種形式：物件、區塊和檔案： 
+  **物件儲存** 提供可擴展且耐用的平台，以利從任何網際網路位置存取資料，例如使用者產生的內容、作用中存檔、無伺服器運算、大數據儲存或備份與復原。Amazon Simple Storage Service (Amazon S3) 是一種物件儲存服務，可提供領先業界的可擴展性、資料可用性、安全性和效能。Amazon S3 的設計可提供 99.999999999% (11 個 9) 的耐久性，並為全球公司存放數百萬個應用程式資料。
+  **區塊儲存** 可為每個虛擬主機提供高可用性、一致性、低延遲的區塊儲存，而且類似於直接連結存放裝置 (DAS) 或存放區域網路 (SAN)。Amazon Elastic Block Store (Amazon EBS) 是專為需要 EC2 執行個體存取持久性儲存的工作負載所設計，可協助您以適當的儲存容量、效能和成本來調整應用程式。
+  **檔案儲存** 可讓您跨多個系統存取共用檔案系統。像 Amazon Elastic File System (EFS) 這類檔案儲存解決方案非常適合大型內容儲存庫、開發環境、媒體存放區或使用者主目錄等使用案例。Amazon FSx 可讓您以輕鬆且經濟實惠的方式啟動和執行熱門的檔案系統，因此您可以利用廣泛使用的開放原始碼和商業授權檔案系統的豐富功能集和快速效能。

 下列問題著重於效能達成效率方面的這些考量。


| PERF 3：您如何選取儲存解決方案？ | 
| --- | 
|  系統的最佳儲存解決方案會根據存取方法類型 (區塊、檔案或物件)、存取模式 (隨機或連續)、所需傳輸量、存取頻率 (線上、離線、封存)、更新頻率 (WORM、動態) 及可用性和耐用性限制而有所不同。Well-Architected 系統使用多重儲存解決方案，並啟用不同功能以提升效能並有效使用資源。  | 

 當您要選取儲存解決方案時，務必確保其符合您的存取模式，以達到您想要的效能。

# 資料庫
<a name="perf-db"></a>

 雲端提供專門打造的資料庫服務，可解決工作負載呈現的不同問題。您可以從許多專門打造的資料庫引擎中選擇，包括關聯式、鍵值、文件、記憶體內、圖形、時間序列和總帳資料庫。透過挑選最佳資料庫來解決特定問題 (或一組問題)，您可以擺脫限制性的「一體適用」單體資料庫，並專注在建置應用程式以滿足客戶的效能需求。

 在 AWS 中，您可以從多個專門打造的資料庫引擎中選擇，包括關聯式、鍵值、文件、記憶體內、圖形、時間序列和總帳資料庫。使用 AWS 資料庫，您無須擔心伺服器佈建、修補、設定、組態、備份或復原等資料庫管理任務。AWS 會持續監控您的叢集，透過自我修復的儲存和自動擴展來保持工作負載正常啟動和執行，讓您能專注於開發價值較高的應用程式。

 下列問題著重於效能達成效率方面的這些考量。


| PERF 4：您如何選擇資料庫解決方案？ | 
| --- | 
|  系統的最佳資料庫解決方案可能會依可用性、一致性、分割容錯度、延遲、耐用性、可擴展性及查詢能力的需求而有所不同。許多系統針對不同子系統使用不同資料庫解決方案，並啟用不同功能以提升效能。為系統選錯資料庫解決方案和功能，可能使效能達成效率降低。 | 

 工作負載的資料庫方法對效能達成效率有重大影響。它通常是根據組織預設而非透過資料驅動的方法所選擇的區域。與儲存一樣，務必要考慮工作負載的存取模式，同時也務必要考慮其他非資料庫解決方案是否可以更有效地解決問題 (例如使用圖形、時間序列或記憶體中的儲存資料庫)。

# 網路
<a name="perf-network"></a>

 由於網路位於所有工作負載元件之間，因此對工作負載效能和行為都有極大的正面和負面影響。也有高度依賴網路效能的工作負載，例如高效能運算 (HPC)，其中深度了解網路對於提升叢集效能非常重要。您必須判斷頻寬、延遲、抖動和輸送量的工作負載需求。

 在 AWS 上，聯網是虛擬化的，並提供多種不同的類型和組態。這讓您可以更輕鬆地將聯網方法與需求進行匹配。AWS 提供了多種產品功能 (例如，增強型聯網、經 Amazon EBS 優化的執行個體、Amazon S3 Transfer Acceleration 和動態 Amazon CloudFront)，可對網路流量進行優化。AWS 還提供了聯網功能 (例如，Amazon Route 53 延遲路由、Amazon VPC 端點、AWS Direct Connect 和 AWS Global Accelerator)，可減少網路距離或抖動。

 下列問題著重於效能達成效率方面的這些考量。


| PERF 5：您如何設定聯網解決方案？ | 
| --- | 
|  工作負載的最佳網路解決方案會根據延遲、輸送量需求、抖動和頻寬而有所不同。實體限制 (例如使用者或內部部署資源) 會決定位置選項。這些限制條件可以隨著節點或資源置放而位移。 | 

 部署網路時，您必須考慮位置。您可以選擇將資源置放在靠近資源用以減少距離的位置。隨著工作負載的演進，使用聯網指標變更聯網組態。透過利用區域、置放群組和邊緣服務，您可以顯著提高效能。雲端型網路可以快速重建或修改，因此隨著時間演進您的網路架構是維持效能達成效率的必要條件。

# 審查
<a name="perf-review"></a>

 雲端技術正在快速發展，您必須確保工作負載元件會使用最新技術和方法，來持續改善效能。您必須持續評估並考量工作負載元件的變更，以確保符合其效能和成本目標。機器學習和人工智慧 (AI) 等新技術可讓您重新構思客戶體驗，並跨所有業務工作負載進行創新。

 利用受客戶需求驅動的 AWS 持續創新。我們會定期發佈新的區域、節點、服務和功能。上述任何一個版本均可明顯提高架構的效能達成效率。 

 下列問題著重於效能達成效率方面的這些考量。 


| PERF 6：您如何發展工作負載，以運用新版本的優勢？ | 
| --- | 
|  架構工作負載時，可選擇的選項有限。但一段時間後會有可改善工作負載效能的新技術和方法推出。 | 

 架構效能不佳通常是效能審查程序不存在或中斷的結果。如果您的架構效能不佳，則實作效能審查程序可讓您套用 Deming 的計畫 – 執行 – 檢查 – 行動 (PDCA) 週期，來推動迭代改善。 

# 監控
<a name="perf-monitoring"></a>

 實作工作負載後，您必須監控其效能，以便在其影響客戶前修正任何問題。超過閾值時，應使用監控指標來發出警示。 

 Amazon CloudWatch 是一種監控和可觀測性服務，可為您提供資料和可採取動作的洞見，以監控工作負載、回應整個系統的效能變更、優化資源使用率，以及取得運作狀況的統一檢視。CloudWatch 會從在 AWS 和內部部署伺服器上執行的工作負載中收集監控和作業資料 (形式為記錄、指標和事件)。AWS X-Ray 可協助開發人員分析並偵錯生產、分散式應用程式。透過 AWS X-Ray，您可以收集應用程式表現的洞見，並找出根本原因和效能瓶頸。您可以使用這些分析結果來快速即時做出反應，保持工作負載順暢運作。 

 下列問題著重於效能達成效率方面的這些考量。 


| PERF 7：您如何監控資源來確保達成預期效能？ | 
| --- | 
|  系統效能可能會隨時間降低。監控系統效能以識別效能降低情況，並修復內部或外部因素，如作業系統或應用程式負載。 | 

 確保您未看到誤報，這是有效監控解決方案的關鍵。自動觸發可以避免人為錯誤，並可減少解決問題的時間。規劃在生產環境中進行模擬的演練日，以測試您的警示解決方案，並確保其能正確識別問題。 

# 權衡
<a name="perf-tradeoffs"></a>

 當您建立架構解決方案時，請考慮權衡，以確保採用了最佳方法。根據您的情況，您可以權衡一致性、耐用性和時間與延遲的空間，進而提高效能。 

 使用 AWS，您可以在數分鐘內實現全球化，並在全球多個位置部署資源，以更接近最終使用者。您還可以將唯讀複本動態新增至資訊儲存區 (例如資料庫系統)，以減少主要資料庫上的負載。 

 下列問題著重於效能達成效率方面的這些考量。 


| PERF 8：您如何採用權衡來增進效能？ | 
| --- | 
|  架構解決方案時，判斷權衡項目可讓您選擇最佳方法。您通常可以透過權衡一致性、耐用性和時間與延遲的空間來提升效能。 | 

 在變更工作負載時，收集並評估指標以確定這些變更的影響。衡量對系統以及最終使用者的影響，以了解您的權衡如何影響您的工作負載。使用系統的方法 (例如負載測試) 來探索權衡是否可以提高效能。 

# 資源
<a name="perf-resources"></a>

 請參閱以下資源，進一步了解我們的效能達成效率最佳實務。

## 文件
<a name="perf-doc"></a>
+  [Amazon S3 效能優化](https://docs.aws.amazon.com/AmazonS3/latest/dev/PerformanceOptimization.html?ref=wellarchitected-wp) 
+  [Amazon EBS 磁碟區效能](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSPerformance.html?ref=wellarchitected-wp) 

## 白皮書
<a name="perf-wp"></a>
+  [效能達成效率支柱](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp) 

## 影片
<a name="perf-video"></a>
+  [AWS re:Invent 2019：Amazon EC2 基礎 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019：領導者會議： 聯盟的儲存狀態 (STG201-L)](https://www.youtube.com/watch?v=39vAsGi6eEI&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019：領導者會議：AWS 專用資料庫 (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019：與 AWS 和混合 AWS 網路架構的連線 (NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019：支援下一代 Amazon EC2: 深入探討 Nitro 系統 (CMP303-R2)](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected-wp) 
+  [AWS re:Invent 2016：擴充至首個 1,000 萬名使用者 (ARC211-R)](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected-wp) 