SUS03-BP01 非同期のジョブおよびスケジュールされたジョブ向けにソフトウェアとアーキテクチャを最適化する
キュー駆動型などの効率的なソフトウェアおよびアーキテクチャパターンを使用して、デプロイされたリソースの使用率を一貫して高く維持します。
一般的なアンチパターン:
-
予期せぬ需要の急増に対応するために、クラウドワークロードのリソースを過剰にプロビジョニングしています。
-
お使いのアーキテクチャでは、メッセージングコンポーネントによって非同期メッセージの送信者と受信者が切り離されていません。
このベストプラクティスを活用するメリット:
-
効率的なソフトウェアとアーキテクチャのパターンは、ワークロード内の未使用リソースを最小限に抑え、全体的な効率を向上させます。
-
非同期メッセージの受信とは無関係に処理をスケールできます。
-
メッセージングコンポーネントを使用することで、可用性要件が緩和され、より少ないリソースで対応できるようになります。
このベストプラクティスを活用しない場合のリスクレベル: 中
実装のガイダンス
イベント駆動型
ワークロードコンポーネントの要件を理解し、リソース全体の利用率を高めるアーキテクチャパターンを採用します。不要になったコンポーネントは廃止します。
実装手順
-
ワークロードの需要を分析し、それらに対応する方法を決定します。
-
同期応答を必要としないリクエストやジョブには、キュー駆動型アーキテクチャと自動スケーリングワーカーを使用して使用率を最大化します。キュー駆動型アーキテクチャを検討する場合の例を次に示します。
キューイングメカニズム 説明 AWS Batch ジョブはジョブキューに送信され、コンピューティング環境で実行されるようにスケジューリングされるまで、そこに留まります。
Amazon SQS とスポットインスタンスを組み合わせると、耐障害性が高く効率的なアーキテクチャを構築します。
-
いつでも処理できるリクエストやジョブについては、スケジューリングメカニズムを利用してジョブをバッチ処理することで効率化を図ります。AWS でのスケジューリングメカニズムの例を次に示します。
スケジューリングメカニズム 説明 スケジュールされたタスクを大規模に作成、実行、管理できる Amazon EventBridge
の機能です。 AWS Glue で、クローラーやジョブに対して時間ベースのスケジュールを定義します。
Amazon ECS は、スケジュールされたタスクの作成をサポートします。スケジュールされたタスクは、Amazon EventBridge ルールを使用して、スケジュールに基づいて、または EventBridge イベントへの応答として、タスクを実行します。
Amazon EC2 および Amazon Relational Database Service インスタンスの開始、停止スケジュールを設定します。
-
アーキテクチャでポーリングやウェブフックのメカニズムを使用している場合、それらをイベントに置き換えます。イベント駆動型アーキテクチャを使用して、高効率のワークロードを構築します。
-
AWS でサーバーレス
を活用して、過剰にプロビジョニングされたインフラストラクチャを排除します。 -
アーキテクチャの個別のコンポーネントの適切なサイズを設定し、リソースが入力を待ってアイドル状態になるのを防ぎます。
-
または AWS Cost Explorer または AWS Compute Optimizer
で適切なサイズ設定に関する推奨事項を使用して、適切なサイズ設定の機会を特定できます。 -
詳細については、「適切なサイジング: ワークロードに適したインスタンスのプロビジョニング」を参照してください。
-
リソース
関連ドキュメント:
関連動画:
-
AWS re:Invent 2023 - Navigating the journey to serverless event-driven architecture
-
AWS re:Invent 2023 - Using serverless for event-driven architecture & domain-driven design
-
AWS re:Invent 2023 - Advanced event-driven patterns with Amazon EventBridge
-
AWS re:Invent 2023 - Sustainable architecture: Past, present, and future
関連する例: