AWS Batchとは
AWS Batchとは、バッチ処理を行うためのクラウドサービスです。通常はバッチ用のソフトウェアやサーバークラスターが必要ですが、AWS Batchでは追加で管理することなしに、処理の計画からスケジュール・実行を行うことができます。
Amazon ECS・Amazon EKS・AWS Fargateなどのコンピューティングサービスで、必要なリソースを動的にプロビジョニングし利用します。
【参考】:AWS Batch 【参考】:AWS Batch とは?
そもそもバッチとは
バッチとは、手順に基づく処理をジョブとして定義し、連続した実行や決められた時間に実行するための処理形式を表します。バッチを使った処理を、バッチ処理と呼びます。
定義したジョブは、定期実行するためのスケジューリングや、複数の処理の多重起動防止や実行順を設定するシーケンスなどを行う仕組みを使って起動されます。この仕組みをジョブ管理と呼びます。
バッチ処理は、一括した大量の処理を投入した場合に処理を分散化したり、指定した時間に起動したりすることで自動実行することができます。これにより、リソースの使用率を高めながら、安定処理を行うことが可能であり、コスト削減のメリットがあります。
加えてジョブの優先順位を設定することで、緊急処理にも対応できます。
AWS Batchの特徴
AWS Batchは、AWSのコンピューティングサービス上で簡単にバッチ用のジョブコードを作成できる特徴があります。標準で使用するAWSのコンソールやCLIからジョブを投入することが可能です。
ワークフロー管理用のPegasus WMSやLuigi、Nextflow・Metaflow・Apache Airflow・AWS Step Functionsなどの言語で使用することもできます。
【参考】:AWS Batch の特徴
AWS Batchのメリットとデメリット
AWS Batchのメリットとしては、AWSとのサービスに連携していることが挙げられます。大量のバッチ処理に対応できます。また、バッチ処理の管理ソフトが不要となり、コンピュートのリソースを有効活用することでコスト削減のメリットがあります。
仕組みとしては、ジョブがジョブキューに格納後スケジュールされ、そしてクラウドサービスのコンピューティング環境を利用するまでに、いくつかの処理を経て実行されます。デメリットは、実行されるまでの時間に多少のばらつきが生じてしまうことが挙げられます。
AWS Batchの料金
AWS Batchの料金ですが、AWS Batch自体の料金は発生しません。使用するAWSのEC2インスタンスや、AWS Lambda・AWS Fargateなどに対して料金が発生します。
【参考】:AWS Batch 料金
AWS Batchの活用事例
AWSではAWS Batchがどのような場合に有効活用できるのか、メリットを交えて解説するベストプラクティス情報をまとめて公開しています。
主な活用事例(ユースケース)としては、以下の3点を挙げています。「金融サービス」「ライフサイエンス」「デジタルメディア」です。詳細は以降で解説していきます。
【参考】:AWS Batch ベストプラクティスまとめ 【参考】:AWS Batch のユースケース
金融サービス
金融の処理は、日次・週次・月次などで利用されます。特に、毎日の終わりに実行する日次のバッチでは取引の正確性や不正の有無など重要な役割を持ちます。AWS Batchで自動実行することで、人為的なミスを減らし、大量の処理への対応と正確性の向上が可能です。
同様に金融サービスで新たな需要であるデータ分析においては、需要予測や格付け・リスク分析などで大量のコンピューティングリソースが必要です。この場合も、AWS Batchでリソースの最適化とコスト削減が期待できます。
ライフサイエンス
ライフサイエンスの分野では、医薬品設計やゲノム解析などにハイパフォーマンスコンピューティングのリソースを多用します。コンピューティングリソースを有効活用可能なAWS Batchは、利用価値が高いです。計算結果に裏付けられた科学的情報は、創薬やDNAの解析を最適化し作業の迅速化が期待できます。
デジタルメディア
デジタルメディアでは、視覚効果を高めるために大量のデータ処理が必要です。特に高解像度化が進んでおり、データ量が日々増加しています。このようなコンテンツ作成などの領域においても、レンダリングの自動化やワークロードの自動化にAWS Batchが役立ちます。
AWS Batchを使うには
AWS Batchを使うには、他のAWSのサービス同様にAWSアカウントにサインアップしてセットアップを進めます。管理ユーザーを作成し、必要に応じてユーザーをセットアップします。
AWS Batchでは、「コンピューティング環境」「ジョブキュー」「ジョブ定義」「ジョブ」の4つのコンポーネントを用います。この各コンポーネントについては、以降で解説していきます。
【参考】:AWS Batch の使用の開始 【参考】:AWS Batch のセットアップ
コンピューティング環境の作成
実行するコンピューティング環境は、Amazon EC2(Amazon Elastic Compute Cloud)のインスタンスやAmazon EKS (Amazon Elastic Kubernetes Service )、AWS Fargateのリソースを用います。
AWS Batchコンソールから「コンピューティング環境」「作成」を行い、AWS Batch向けのロールの許可と必要なタグ付けを行います。
アクセスするには通常、Amazon Virtual Private Cloud(Amazon VPC)を使用します。未設定の場合は、あらかじめ設定しておくと良いでしょう。
【参考】:AWS Batch コンピューティング環境 【参考】:AWS Batch コンピューティング環境の作成 【参考】:AWS Batch サービスにリンクされたロールの使用 【参考】:AWS Batch リソースのタグ付け
ジョブキューの作成
AWS Batchでジョブを投入する際には、スケジューラが処理するまで「ジョブキュー」に蓄積されます。「ジョブキュー」の作成は、AWS Batchコンソールから、「ジョブキュー」「作成」で行います。「名前」「優先度」「スケジューリングポリシー」を設定します。
ジョブ定義の作成
ジョブの設定では、「ジョブ定義」と呼ばれるスケジューリングに関する設定が必要です。ここではジョブの実行方法を指定します。「ジョブ定義」の作成は、AWS Batchコンソールから、「ジョブ定義」「作成」で行います。
「名前」を設定し、必要に応じて時間制限のための「実行タイムアウト」や「スケジュールの優先度」を指定します。
【参考】:AWS Batch ジョブ定義
ジョブの作成
実際にAWS Batchに送信する、作業の実行単位が「ジョブ」です。実行するスクリプトや実行ファイル、あるいはDockerのコンテナイメージなどを指定します。「ジョブ」の作成は、AWS Batchコンソールから、「ジョブ」「新しいジョブを送信」で行います。
「名前」の他、あらかじめ作成しておいた「ジョブ定義」「ジョブキュー」を選択します。
ジョブの実行方法は、上記のコンポーネントの組み合わせで決まります。必要に応じて、ジョブの依存関係を定義することもできます。最後に「送信」をクリックすると、ジョブがジョブキューに格納されて順次実行されます。
【参考】:AWS Batch ジョブ
AWS Batchを使用するとリソースを活用できる
AWS Batchは、大量のジョブを処理したり同じ処理が継続的に発生したりする場合に有効です。正確に同じ処理を行うとともに高速に大量のデータ処理を行うことが可能です。
集計処理を夜間に自動実行することで、ワークロードの平準化やコンピューティングなどのリソースをまんべんなく使用することができます。ぜひともベストプラクティスや活用事例を参考にして、実際に試してみることをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから