バッチ処理ベースのアーキテクチャ - ハイパフォーマンスコンピューティングレンズ

バッチ処理ベースのアーキテクチャ

AWS Batch はフルマネージドサービスであり、リソースをプロビジョニングしたりスケジューラを管理したりすることなく、クラウドで大規模なコンピューティングワークロードを実行できます。AWS Batchを使用することで、デベロッパー、科学者、およびエンジニアが AWS で数十万のバッチコンピューティングジョブを簡単かつ効率的に実行できるようになります。AWS Batch は、送信されたバッチジョブのボリュームと指定されたリソース要件に基づいて、最適な量とタイプのコンピューティングリソース (CPU やメモリに最適化されたインスタンスなど) を動的にプロビジョニングします。AWS Batch では、Amazon EC2 やスポットインスタンスなどの幅広い AWS コンピューティングサービスや機能、およびバッチコンピューティングワークロードを計画、スケジュール、実行します。ジョブの実行に必要なバッチコンピューティングのソフトウェアやサーバークラスターをインストールしたり、管理したりする必要がないため、結果の分析や新しい洞察を得ることに集中できます。

AWS Batch でアプリケーションをコンテナにパッケージし、ジョブの依存性を指定し、AWS Management Console や CLI、SDK を使ってバッチジョブを送信します。実行パラメータとジョブの依存関係を指定し、一般的なバッチコンピューティングワークフローエンジンと言語 (例えば、Pegasus WMS、Luigi、AWS Step Functions など) と統合できます。AWS Batch は、デフォルトのジョブキューと計算環境の定義を提供し、すぐに開始できるようにします。

AWS Batch ベースのアーキテクチャは、疎結合と密結合、両方のワークロードに使用できます。密結合ワークロードでは、AWS Batch でマルチノードの並列ジョブを使用する必要があります。

リファレンスアーキテクチャ

AWS クラウド architecture showing user interaction with VPC, AWS Batch, and S3 through job container image and EC2 container registry.

図 2: AWS Batch アーキテクチャの例

ワークフローのステップ:

  1. ユーザーがジョブのコンテナを作成し、コンテナを Amazon EC2 Container Registry (Amazon ECR) または他のコンテナレジストリ (例えば DockerHub) にアップロードします。また、AWS Batch にジョブの定義を作成します。

  2. ユーザーが AWS Batch のジョブキューにジョブを送信します。

  3. AWS Batch がコンテナレジストリからイメージを取得し、キューにあるジョブを処理します。

  4. 各ジョブからの入力データと出力データは、S3 バケットに保存されます。