

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

使用有效率的軟體和架構模式 (例如佇列驅動)，讓所部署的資源一直保持高使用率。

 **常見的反模式：**
+  在雲端工作負載中過度佈建資源以滿足未預料到的突增需求。
+  您的架構未透過傳訊元件將非同步訊息的傳送者與接受者分離。

 **建立此最佳實務的優勢：**
+  高效率的軟體和架構模式可盡量減少工作負載中的未使用資源，並改善整體效率。
+  您可以將非同步訊息的處理與接收分開擴展。
+  透過傳訊元件，可用性要求會比較寬鬆，不用太多資源即可滿足。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 使用有效率的架構模式 (例如[事件驅動架構](https://aws.amazon.com/event-driven-architecture/))，以便能平均地使用元件，並盡量避免工作負載過度佈建。使用高效率的架構模式可盡量地讓閒置資源不會因為需求隨時間發生變化而有乏人問津的情形。

 了解工作負載元件的要求，並採用能夠提升整體資源使用率的架構模式。淘汰不再需要的元件。

### 實作步驟
<a name="implementation-steps"></a>
+  分析工作負載需求以確定如何回應。
+  如果請求或任務不需要同步回應，請使用佇列驅動的架構和自動擴展工作節點，以將使用率最大化。以下是您可能會考慮使用佇列驅動架構的一些範例：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/latest/framework/sus_sus_software_a2.html)
+  對於可以隨時處理的佇列或任務，請使用排程機制來批次處理任務，以提升效率。以下是 AWS 上排程機制的幾個範例：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/latest/framework/sus_sus_software_a2.html)
+  如果您的架構中使用輪詢和 Webhook 機制，請將其取代為事件。使用[事件驅動的架構](https://docs.aws.amazon.com/lambda/latest/operatorguide/event-driven-architectures.html)來建置高效率的工作負載。
+  利用 [AWS 上的無伺服器](https://aws.amazon.com/serverless/)來消除過度佈建的基礎設施。
+  將架構的個別元件調整為適當大小，避免閒置資源等待輸入。
  +  您可以使用 [AWS Cost Explorer 中的適當調整大小建議](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-rightsizing.html)或 [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 識別適當調整大小的機會。
  +  如需詳細資訊，請參閱[適當調整大小：佈建執行個體以符合工作負載](https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-right-sizing/cost-optimization-right-sizing.html)。

## 資源
<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) 
+  [搭配使用 AWS Lambda 與 Amazon SQS](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) 
+ [ 使用 REST API 管理非同步工作流程](https://aws.amazon.com/blogs/architecture/managing-asynchronous-workflows-with-a-rest-api/)

 **相關影片：**
+ [AWS re:Invent 2023 - 將旅程導向無伺服器事件驅動架構](https://www.youtube.com/watch?v=hvGuqHp051c)
+ [AWS re:Invent 2023 - 針對事件驅動架構和網域驅動設計使用無伺服器](https://www.youtube.com/watch?v=3foMZJSPMI4)
+ [AWS re:Invent 2023 - 使用 Amazon EventBridge 提升事件驅動型模式](https://www.youtube.com/watch?v=6X4lSPkn4ps)
+ [AWS re:Invent 2023 - 永續架構：過去、現在和未來](https://www.youtube.com/watch?v=2xpUQ-Q4QcM)
+ [ 非同步訊息模式 \$1 AWS 事件](https://www.youtube.com/watch?v=-yJqBuwouZ4)

 **相關範例：**
+ [具有 AWS Graviton 處理器和 Amazon EC2 Spot 執行個體的事件驅動架構](https://catalog.workshops.aws/well-architected-sustainability/en-US/2-software-and-architecture/event-driven-architecture-with-graviton-spot)