SUS03-BP01 非同期のジョブおよびスケジュールされたジョブ向けにソフトウェアとアーキテクチャを最適化する - AWS Well-Architected フレームワーク

SUS03-BP01 非同期のジョブおよびスケジュールされたジョブ向けにソフトウェアとアーキテクチャを最適化する

キュー駆動型などの効率的なソフトウェアおよびアーキテクチャパターンを使用して、デプロイされたリソースの使用率を一貫して高く維持します。

一般的なアンチパターン:

  • 予期せぬ需要の急増に対応するために、クラウドワークロードのリソースを過剰にプロビジョニングしています。

  • お使いのアーキテクチャでは、メッセージングコンポーネントによって非同期メッセージの送信者と受信者が切り離されていません。

このベストプラクティスを活用するメリット:

  • 効率的なソフトウェアとアーキテクチャのパターンは、ワークロード内の未使用リソースを最小限に抑え、全体的な効率を向上させます。

  • 非同期メッセージの受信とは無関係に処理をスケールできます。

  • メッセージングコンポーネントを使用することで、可用性要件が緩和され、より少ないリソースで対応できるようになります。

このベストプラクティスを活用しない場合のリスクレベル:

実装のガイダンス

イベント駆動型アーキテクチャなどの効率的なアーキテクチャパターンを使用すると、コンポーネントの使用率が均等になり、ワークロードのオーバープロビジョニングを抑えます。効率的なアーキテクチャパターンを使用することで、時間の経過に伴う需要の変化により、使用されずにアイドル状態になるリソースを最小限に抑えることができます。

ワークロードコンポーネントの要件を理解し、リソース全体の利用率を高めるアーキテクチャパターンを採用します。不要になったコンポーネントは廃止します。

実装手順

  • ワークロードの需要を分析し、それらに対応する方法を決定します。

  • 同期応答を必要としないリクエストやジョブには、キュー駆動型アーキテクチャと自動スケーリングワーカーを使用して使用率を最大化します。キュー駆動型アーキテクチャを検討する場合の例を次に示します。

    キューイングメカニズム 説明

    AWS Batch ジョブキュー

    AWS Batch ジョブはジョブキューに送信され、コンピューティング環境で実行されるようにスケジューリングされるまで、そこに留まります。

    Amazon Simple Queue Service と Amazon EC2 スポットインスタンス

    Amazon SQS とスポットインスタンスを組み合わせると、耐障害性が高く効率的なアーキテクチャを構築します。

  • いつでも処理できるリクエストやジョブについては、スケジューリングメカニズムを利用してジョブをバッチ処理することで効率化を図ります。AWS でのスケジューリングメカニズムの例を次に示します。

    スケジューリングメカニズム 説明

    Amazon EventBridge スケジューラ

    スケジュールされたタスクを大規模に作成、実行、管理できる Amazon EventBridge の機能です。

    AWS Glue 時間ベースのスケジュール

    AWS Glue で、クローラーやジョブに対して時間ベースのスケジュールを定義します。

    Amazon Elastic Container Service (Amazon ECS) のスケジュールされたタスク

    Amazon ECS は、スケジュールされたタスクの作成をサポートします。スケジュールされたタスクは、Amazon EventBridge ルールを使用して、スケジュールに基づいて、または EventBridge イベントへの応答として、タスクを実行します。

    Instance Scheduler

    Amazon EC2 および Amazon Relational Database Service インスタンスの開始、停止スケジュールを設定します。

  • アーキテクチャでポーリングやウェブフックのメカニズムを使用している場合、それらをイベントに置き換えます。イベント駆動型アーキテクチャを使用して、高効率のワークロードを構築します。

  • AWS でサーバーレスを活用して、過剰にプロビジョニングされたインフラストラクチャを排除します。

  • アーキテクチャの個別のコンポーネントの適切なサイズを設定し、リソースが入力を待ってアイドル状態になるのを防ぎます。

リソース

関連ドキュメント:

関連動画:

関連する例: