

# 軟體和架構模式
<a name="a-sus-software-architecture-patterns"></a>

**Topics**
+ [SUS 3 如何利用軟體和架構模式，來支持您的永續性發展目標？](w2aac19c15b9b5.md)

# SUS 3 如何利用軟體和架構模式，來支持您的永續性發展目標？
<a name="w2aac19c15b9b5"></a>

實施可執行負載順暢並保持已部署資源一致高使用率的模式，將資源消耗降至最低。由於使用者行為隨時間改變，元件可能會因缺乏使用而閒置。修改模式和架構來整合未充分利用的元件，提高整體使用率。淘汰不再需要的元件。了解工作負載元件的效能，並最佳化消耗最多資源的元件。注意客戶用來存取服務的裝置，並實施可最小化裝置升級需求的模式。 

 最佳實務： 

# SUS03-BP01 最佳化非同步與排程任務的軟體和架構
<a name="sus_sus_software_a2"></a>

 使用高效率的軟體設計和架構，將每個工作單元所需的平均資源降至最低。實作可平均利用元件的機制，減少任務之間的閒置資源，並將負載尖峰的影響降至最低。 

 **若未建立此最佳實務，暴露的風險等級：** 低 

## 實作指引
<a name="implementation-guidance"></a>
+  將不需要立即處理的請求放入佇列。 
+  增加序列化，讓使用率在不同管道中變得平均。 
+  修改個別元件的容量，避免閒置資源等待輸入。 
+  建立緩衝區，並建立速率限制，讓外部服務的消耗變得順暢。 
+  使用最有效的可用硬體來進行軟體最佳化。 
+  使用佇列驅動的架構、管道管理和隨需執行個體工作者，最大化批次處理的使用率。 
+  妥善安排任務，避免同時執行的負載尖峰和資源爭用。 
+  在一天電力碳強度最低的時段安排工作。 

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

 **相關文件：** 
+  [什麼是 Amazon Simple Queue Service？](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 
+  [什麼是 Amazon MQ？](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html) 
+  [根據 Amazon SQS 擴展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) 
+  [什麼是 AWS Step Functions？](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 
+  [什麼是 AWS Lambda？](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 
+  [搭配 Amazon SQS 使用 AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html) 
+  [什麼是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 

 **相關影片：** 
+  [在 AWS 上建立永續性](https://www.youtube.com/watch?v=ARAitMSIxc8) 
+  [移至事件驅動型架構](https://www.youtube.com/watch?v=h46IquqjF3E) 

# SUS03-BP02 移除或重構使用量低或完全不使用工作負載元件
<a name="sus_sus_software_a3"></a>

 監控工作負載活動，識別各元件使用率隨時間的變化。移除未使用且不再需要的元件，並重構使用率低的元件，減少資源浪費。 

 **若未建立此最佳實務，暴露的風險等級：** 低 

## 實作指引
<a name="implementation-guidance"></a>
+  分析功能元件上的負載 (使用交易流程和 API 呼叫等指標)，以識別未使用和未充分利用的元件。 
+  淘汰不再需要的元件。 
+  重構未充分利用的元件。 
+  將未充分利用的元件與其他資源整合，以提高利用效率。 

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

 **相關文件：** 
+  [什麼是 AWS X-Ray？](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [什麼是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [使用 ServiceLens 監控應用程式的運作狀態](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html) 
+  [自動清理 Amazon ECR 中未使用的映像](https://aws.amazon.com/blogs/compute/automated-cleanup-of-unused-images-in-amazon-ecr/) 

 **相關影片：** 
+  [在 AWS 上建立永續性](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP03 最佳化程式碼中消耗最多時間或資源的區域部分
<a name="sus_sus_software_a4"></a>

 監控工作負載活動，識別消耗最多資源的應用程式元件。最佳化這些元件中執行的程式碼，將資源使用量降至最低，同時將效能發揮至最大。 

 **若未建立此最佳實務，暴露的風險等級：** 低 

## 實作指引
<a name="implementation-guidance"></a>
+  根據資源使用情況監控效能，找出每個工作單元中資源需求高的元件，做為最佳化目標。 
+  使用程式碼分析工具來識別程式碼中使用最多時間或資源的部分，作為最佳化目標。 
+  將演算法取代為產生相同結果但更有效率的版本。 
+  使用硬體加速來改善執行時間較長程式碼區塊的效率。 
+  使用針對工作負載最高效率的作業系統和程式設計語言。 
+  移除不必要的排序和格式化。 
+  使用可根據資料變更頻率和使用方式，將使用的資源降至最低的資料傳輸模式。例如，將狀態變更資訊推送到用戶端，而不是讓它耗用資源來輪詢和接收沒用的「無變更」訊息。 

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

 **相關文件：** 
+  [什麼是 Amazon CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [什麼是 Amazon CodeGuru Profiler？](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 
+  [FPGA 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/fpga-getting-started.html) 
+  [在 AWS 上建立的工具中的 AWS 開發套件](https://aws.amazon.com/tools/) 

 **相關影片：** 
+  [在 AWS 上建立永續性](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP04 最佳化對客戶裝置和設備的影響
<a name="sus_sus_software_a5"></a>

 了解客戶用來使用您服務的裝置和設備、其預期生命週期，以及更換這些元件對財務和永續性的影響。實施軟體模式和架構，將客戶更換裝置和升級設備的需求降至最低。例如，採用與舊版硬體和作業系統版本相容程式碼的新功能，或管理承載的大小，不讓其超過目標裝置的儲存容量。 

 **若未建立此最佳實務，暴露的風險等級為：** 低 

## 實作指引
<a name="implementation-guidance"></a>
+  清查客戶使用的裝置。 
+  使用具有代表性硬體集的受管 Device Farm 進行測試，以了解變更的影響，並迭代開發以最大化支援的裝置。 
+  在建置承載時考慮網路頻寬和延遲，並實施可協助應用程式在低頻寬、高延遲連結上良好運作的功能。 
+  預先處理資料承載，減少本機處理需求並限縮必要的資料傳輸。 
+  在伺服器端執行需要大量運算的活動 (例如影像渲染)，或使用應用程式串流來改善舊裝置的使用者體驗。 
+  對輸出進行分段和分頁，特別是對於互動式工作階段，以管理承載並限制本機儲存要求。 

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

 **相關文件：** 
+  [什麼是 AWS Device Farm？](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) 
+  [Amazon AppStream 2.0 文件](https://docs.aws.amazon.com/appstream2/) 
+  [NICE DCV](https://docs.aws.amazon.com/dcv/) 
+  [Amazon Elastic Transcoder 文件](https://docs.aws.amazon.com/elastic-transcoder/) 

 **相關影片：** 
+  [在 AWS 上建立永續性](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP05 使用最能支援資料存取和儲存模式的軟體模式和架構
<a name="sus_sus_software_a6"></a>

 了解資料在工作負載中的使用方式、使用者的使用方式、傳輸方式以及儲存方式。選擇可將資料處理和儲存要求降至最低的技術。 

 **若未建立此最佳實務，暴露的風險等級：** 低 

## 實作指引
<a name="implementation-guidance"></a>
+  分析您的資料存取和儲存模式。 
+  以有效率的檔案格式 (例如 Parquet) 存放資料檔案，以避免進行不必要的處理 (例如執行分析時) 並降低佈建的總儲存量。 
+  利用可原生處理壓縮資料的技術。 
+  使用最能支援您主導查詢模式的資料庫引擎。 
+  管理您的資料庫索引，確保索引設計支援高效率的查詢執行。 
+  選取可減少網路容量消耗的網路通訊協定。 

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

 **相關文件：** 
+  [Athena 壓縮支援檔案格式](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html) 
+  [使用 Amazon Redshift 從單欄資料格式複製](https://docs.aws.amazon.com/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html) 
+  [在 Firehose 中轉換您的輸入記錄格式](https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html) 
+  [AWS Glue 中 ETL 輸入和輸出的格式選項](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html) 
+  [轉換為單欄格式，提高 Amazon Athena 的查詢效能](https://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html) 
+  [使用 Amazon Redshift 從 Amazon S3 載入壓縮的資料檔案](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-gzip-compressed-data-files-from-S3.html) 
+  [在 Amazon Aurora 上使用績效詳情監控資料庫負載](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html) 
+  [在 Amazon RDS 上使用績效詳情監控資料庫負載](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 
+  [AWS IoT FleetWise](https://aws.amazon.com/about-aws/whats-new/2021/11/aws-iot-fleetwise-transferring-vehicle-data-cloud/) 

 **相關影片：** 
+  [在 AWS 上建立永續性](https://www.youtube.com/watch?v=ARAitMSIxc8) 