SUS03-BP01 非同期のジョブおよびスケジュールされたジョブ向けにソフトウェアとアーキテクチャを最適化する
キュー駆動型などの効率的なソフトウェアおよびアーキテクチャパターンを使用して、デプロイされたリソースの使用率を一貫して高く維持します。
一般的なアンチパターン:
-
予期せぬ需要の急増に対応するために、クラウドワークロードのリソースを過剰にプロビジョニングしています。
-
お使いのアーキテクチャでは、メッセージングコンポーネントによって非同期メッセージの送信者と受信者が切り離されていません。
このベストプラクティスを活用するメリット:
-
効率的なソフトウェアとアーキテクチャのパターンは、ワークロード内の未使用リソースを最小限に抑え、全体的な効率を向上させます。
-
非同期メッセージの受信とは無関係に処理を拡張できます。
-
メッセージングコンポーネントを使用することで、可用性要件が緩和され、より少ないリソースで対応できるようになります。
このベストプラクティスが確立されていない場合のリスクレベル: ミディアム
実装のガイダンス
イベント駆動型アーキテクチャ
ワークロードコンポーネントの要件を理解し、リソース全体の利用率を高めるアーキテクチャパターンを採用します。不要になったコンポーネントは廃止します。
実装手順
-
ワークロードの需要を分析し、それらに対応する方法を決定します。
-
同期応答を必要としないリクエストやジョブには、キュー駆動型アーキテクチャとオートスケーリングワーカーを使用して使用率を最大化します。キュー駆動型アーキテクチャを検討する場合の例を次に示します。
Queuing mechanism Description AWS Batch ジョブはジョブキューに送信され、コンピューティング環境で実行されるようにスケジューリングされるまで、そこに留まります。
Amazon SQS とスポットインスタンスのペアリングにより、耐障害性が高く効率的なアーキテクチャを構築します。
-
いつでも処理できるリクエストやジョブについては、スケジューリングメカニズムを利用してジョブをバッチ処理することで効率化を図ります。AWS でのスケジューリングメカニズムの例を次に示します。
Scheduling mechanism Description スケジュールされたタスクを大規模に作成、実行、管理できるようにするための Amazon EventBridge
の機能です。 AWS Glue で、クローラーやジョブに対して時間ベースのスケジュールを定義します。
Amazon ECS では、スケジュールされたタスクの作成をサポートします。スケジュールされたタスクは、Amazon EventBridge ルールを使用して、スケジュールに従って、または EventBridge イベントへの応答としてタスクを実行します。
Amazon EC2 および Amazon Relational Database Service インスタンスの開始および停止スケジュールを設定します。
-
ご使用のアーキテクチャでポーリングやウェブフックのメカニズムを使用している場合、それらをイベントに置き換えます。イベント駆動型アーキテクチャを使用して、効率性の高いワークロードを構築します。
-
AWS のサーバーレス
を活用し、過剰にプロビジョニングされたインフラストラクチャを排除します。 -
アーキテクチャの個別のコンポーネントの適切なサイズを設定し、リソースが入力を待ってアイドル状態になるのを防ぎます。
リソース
関連するドキュメント:
関連動画:
-
Moving to event-driven architectures
(イベント駆動型アーキテクチャへの移行)