

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

**Topics**
+ [架構選擇](perf-arch.md)
+ [運算與硬體](perf-compute.md)
+ [資料管理](perf-data.md)
+ [聯網與內容交付](perf-networking.md)
+ [程序和文化](perf-process.md)

# 架構選擇
<a name="perf-arch"></a>

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

 AWS 資源提供多種類型和組態，讓您更輕鬆地找到最符合您需求的方法。您還可以發現使用內部部署基礎設施不易實現的選項。例如，諸如 Amazon DynamoDB 的受管服務提供完全受管的無SQL資料庫，在任何規模下都具有單位數毫秒延遲。

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


| PERF 1：如何為工作負載選取適當的雲端資源和架構模式？ | 
| --- | 
|  欲讓工作負載達到更有效的效能通常需要採用多種方法。Well-Architected 系統會使用多重解決方案和功能以提升效能。 | 

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

 特定工作負載的最佳運算選擇會根據應用程式設計、使用模式和組態設定而有所不同。架構會針對不同元件使用不同運算選擇，並採用不同功能以提升效能。若選錯運算資源，可能使架構的效能達成效率降低。

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

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


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

# 資料管理
<a name="perf-data"></a>

 特定系統的最佳資料管理解決方案會根據資料類型 （區塊、檔案或物件）、存取模式 （隨機或循序）、必要的輸送量、存取頻率 （線上、離線、封存）、更新頻率 （WORM、動態），以及可用性和耐久性限制而有所不同。Well-Architected 工作負載會使用專用資料存放區，這些存放區採用不同的功能以提升效能。

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

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


| PERF 3：如何在工作負載中儲存、管理和存取資料？ | 
| --- | 
|  系統更有效率的儲存解決方案會根據存取操作類型 （區塊、檔案或物件）、存取模式 （隨機或循序）、必要的輸送量、存取頻率 （線上、離線、封存）、更新頻率 （WORM、動態），以及可用性和耐久性限制而有所不同。Well-Architected 系統使用多重儲存解決方案，並開啟不同功能以提升效能並有效使用資源。 | 

# 聯網與內容交付
<a name="perf-networking"></a>

 工作負載的最佳聯網解決方案會根據延遲、輸送量需求、抖動和頻寬而有所不同。實體限制 (例如使用者或內部部署資源) 會決定位置選項。這些限制可能隨著邊緣節點或資源位置而有所差異。

 在 上 AWS，聯網是虛擬化的，並提供多種不同的類型和組態。這可讓您更輕鬆地符合聯網需求。 AWS 提供產品功能 （例如增強型網路、Amazon EC2 網路最佳化執行個體、Amazon S3 傳輸加速和動態 Amazon CloudFront） 來最佳化網路流量。 AWS 也提供聯網功能 （例如 Amazon Route 53 延遲路由、Amazon VPC端點 AWS Direct Connect和 AWS Global Accelerator），以減少網路距離或抖動。

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


| PERF 4：如何在工作負載中選取和設定聯網資源？ | 
| --- | 
|  此問題包括在雲端中設計、設定和操作高效聯網和內容交付解決方案的指引和最佳實務。 | 

# 程序和文化
<a name="perf-process"></a>

 在架構工作負載時，您可以採取一些原則和實務來協助您更有效率地執行高效能雲端工作負載。為了培養高效能雲端工作負載的文化，請考慮下列重要原則和實務。

 打造這類文化時，請考慮以下重要原則：
+  **基礎設施為程式碼：**使用 AWS CloudFormation 範本等方法將基礎設施定義為程式碼。使用範本可讓您將基礎設施與應用程式程式碼和組態一起置於原始檔控制中。這可讓您在基礎設施中套用開發軟體時所使用的相同做法，進而快速進行迭代。
+  **部署管道：**使用持續整合/持續部署 (CI/CD) 管道 (例如，原始程式碼儲存庫、建置系統、部署和測試自動化) 來部署您的基礎架構。這樣您就可以在反覆執行的過程中，採用可重複、一致且低成本的方式進行部署。
+  **定義明確的指標：**設定和監控指標，以擷取關鍵績效指標 （KPIs）。我們建議您同時使用技術和業務指標。對於網站或行動應用程式，關鍵指標正在擷取 time-to-first-byte或轉譯。其他一般適用的指標包括執行緒計數、垃圾回收率和等待狀態。業務指標 (例如每個請求的彙總累計成本) 會提示您降低成本的方法。仔細考慮您計劃如何解釋指標。例如，您可以選擇最大值或第 99 個百分位數，而非平均值。
+  **自動執行效能測試：**在部署程序中，在成功通過快速執行測試之後，會自動啟動效能測試。自動化應建立一個新的環境，設定如測試資料之類的初始條件，然後執行一系列基準測試和負載測試。這些測試的結果應與組建版本綁定，方便您追蹤長時間的效能變化。對於長期執行的測試，您可以讓管道的這個部分與組建版本的其餘部分不同步。或者，您可以使用 Amazon EC2 Spot 執行個體在夜間執行效能測試。
+  **負載產生：**您應建立一系列的測試指令碼來複寫綜合性或預錄的使用者旅程。這些指令碼應該是冪等及非耦合的形式，而且您可能需要納入*預熱型*指令碼才能產生有效的結果。您的測試指令碼應盡可能地複寫生產環境中的使用行為。您可以使用軟體或 software-as-a-service （SaaS ） 解決方案來產生負載。可以考慮使用 [AWS Marketplace](https://aws.amazon.com/marketplace/) 解決方案和 [Spot 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) — 這些可能是經濟實惠的負載產生方式。
+  **效能可見度：**關鍵指標應對您的團隊可見，尤其是針對每個組建版本的指標。這可讓您查看隨時間變化出現的任何顯著的正面或負面趨勢。您也應顯示錯誤或例外狀況數量的指標，以確保您測試的是可運作的系統。
+ **視覺化：**使用視覺化技術可以清楚指出何處出現效能問題、熱點、等待狀態或較低的利用率。在架構圖上重疊效能指標 — 呼叫圖表或程式碼有助於快速識別問題。
+  **定期審查程序：**架構效能不佳通常是效能審查程序不存在或中斷的結果。如果您的架構效能不佳，則實作效能審查程序可讓您不斷反覆進行改善。
+  **持續優化：**培養文化以持續優化雲端工作負載效能達成效率。

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


| PERF 5：您使用什麼程序來支援工作負載的更多效能效率？  | 
| --- | 
|  在架構工作負載時，您可以採取一些原則和實務來協助您更有效率地執行高效能雲端工作負載。為了培養高效能雲端工作負載的文化，請考慮下列重要原則和實務。 | 