みなさん、こんにちは。サニービュー事業部の小寺です。
AWS Batch使ったことがありますか?

今日は、AWS Batchについて簡単に解説いたします!
日頃はAWSの最新情報の投稿が多いのですが、【初心者向け】というタイトルをつけている投稿は基本に立ち返って、そのサービスの概要、使い方、利用シーンについてお伝えします。

AWS Batchとは

AWS Batchとはフルマネージドなバッチサービスです。
AWS BatchはCPUやメモリに最適化されたコンピューティングリソースの中から必要なものにアクセスし、数十万件におよぶバッチコンピューティングジョブを行います。つまり、ジョブを実行するためのインフラ環境をユーザ側で準備する必要はありません。
AWS Fargate や Amazon EC2、またスポットインスタンスなどの幅広い AWS コンピューティングサービスが使われます。
なお、AWS Batchそのものに料金はかかりませんが、バッチ実行環境として作成されるEC2やFargateに対して料金がかかります。

バッチ処理とは

バッチコン処理は、連続したプログラム (「ジョブ」) を、手動での介入なしに 1 台または複数台のコンピュータで実行します。つまり、リアルタイムな処理ではなくて、事前に予定していた処理を自動的に実行させることを意味します。

AWS Batchでの入力パラメータはスクリプト、コマンドライン引数、制御ファイル、またはジョブ制御言語によりあらかじめ定義することができます。

AWS Batchの特徴

AWS Batchの特徴について、詳細は公式サイトにも記載されていますが、
簡単にまとめてみました。

・フルマネージドサービス
何といってもフルマネージドサービスであることが一番です。
バッチ処理の環境を準備せずにバッチ実行できるので、解析結果の分析に注力できるようになります。

・コスト最適化ができる
同時に複数のジョブをこなせるはずのインスタンスが、1つの作業しか実行していないことはよくあります。
AWS Batchはジョブの際に起動されるインスタンスを必要最低限にし、終了するまでの待機時間を最低限にすることができ、コスト削減に貢献できます。

・ジョブ実行に依存関係をもたせられる
異なるジョブで、依存関係をもたせることができます。依存関係を使うことで、後続の各ジョブが先行のジョブに依存するといった設定が行えます。

・他のAWSサービスと統合できる
他のAWSサービスと組み合わせて利用することができます。複雑な処理を入れていくのであれば、Step Functionを使うのもありだと思います。

どのようなバッチに使えるのか

AWSでバッチ実行するには、以下のサービスも使えると考えますが、その中で
AWS Batchが選ばれるのはどのようなシーンでしょうか。

大量データ、大量リクエスト処理、他サービスとの連携などの観点から色々選択肢はありそうです。

・Lambda
・ECS(Fargate)
・AWS Batch(Fargate)

特にAWS Batch(Fargate)が向いているのは、ユースケースからみても、大量データ処理向けです。大量リクエストの処理にもキュー機能が標準であるので、対応は問題ないといえるでしょう。

AWS Batchの用語について

・ジョブ
AWS Batchで実行される作業の単位を示す。ジョブ定義を参照させる

・ジョブ定義
実行方法を定義する、ジョブの雛形となるテンプレート
単一ジョブのジョブ定義に必要な要素とマルチノードの並列ジョブのジョブ定義作成に必要な要素に分かれます。

・ジョブキュー
ジョブキューは投入されたジョブの待ち行列。
ジョブが投入されるとジョブキューに送信されます。その後、コンピューティングリソースにスケジューリング出来るまで待機します。

・コンピューティング環境
ジョブを実行するコンピューティング環境です。いくつかの種類から選ぶことができます。

設定してみよう

はじめて使うときは、以下手順でやってみましょう。
1) AWS Batchを利用する際に、事前に定義された、VPC、キーペア、コンテナイメージを使うので準備しておきましょう。

2) AWS Batchサービスを開始した後は、以下の流れで進めていきます。

1.ジョブ定義を作成
2.コンピューティング環境変数を設定
3.ジョブキューを作成
4.ジョブを作成
5.作成したジョブの実行

3) ジョブ定義の作成では、単一ノードかマルチノードの並列のどちらかを選ぶことができます。

4)全般設定では、ジョブの名前、実行タイムアウトを定義できます。

5) プラットフォームタイプとしては、FargateかEC2を選ぶことができます。

6)デフォルトの設定だと「hello world」が表示されるようになっています。
作成後、ジョブ定義の登録リクエストの正常完了を確認します。

7) 次に「コンピューティング環境」を作成します。
コンピューティング環境設定では、マネージド型かアンマネージド型かを選ぶことができます。

8) インスタンスの設定では、プロビジョニングモデルを選ぶことができます。

9)事前に設定しておいたVPCを選び、「コンピューティング環境の作成」をクリックします。少し待つと状態が「ENABLED」になります。

10)その次はジョブキューを作ります。
接続されたコンピューティング環境では、先ほど作っておいたコンピューティング環境を選び、「作成」をクリックします。

11)ジョブキューが作成されると、優先度を確認することができます。

12) ジョブキューの次にジョブを作ります。
「新しいジョブを送信」画面で、ジョブ名称などを設定していきます。
ここで先ほど作成した、ジョブ定義、ジョブキューを設定しましょう。

13) ジョブキューの設定が完了すると、ダッシュボードを早速みてみます。
ジョブキューがSTARTINGになっていました。

14)ダッシュボードからジョブの実行結果を確認できます。
とりあえず、今回はFAILEDになっていました。

ユースケース

AWS Batch は、複数のジョブを並行して実行することによりスケールするバッチコンピューティングおよびアプリケーション向けに最適化されています。

1) 金融サービス

価格付け、市場位置、リスク管理などでハイパフォーマンスコンピューティングを使用しています。AWS Batchを使うとスピーディにかつスケーラビリティを最適化してコストを節約することができます。

具体的な例としては、ポストトレード解析に役だっています。
トレーディングは、そのときの相場環境に影響を受けながら得をしたり損をしたりします。
「どのような状況下で、売買の判断を下したか」が重要になってくるので、結果を評価する事後分析であるポストトレード解析にマッチします。1 日の取引終了後に取引コスト、実行レポート、市場パフォーマンスの分析を行うため、大量データを処理することにAWS Batchが活用されます。

AWS Batchはさらに、不正調査としてマネーロンダリングや不正な振込を検知することにも使われています。Amazon Machine Learningと組み合わせることにより、アルゴリズムやモデルを利用し、データ処理や分析に利用されます。

2) ライフサイエンス

バイオ医薬品をはじめとする製品を製造している企業が科学的情報を利用するために、ハイパフォーマンスコンピューティング環境を使用しています。

新薬開発における初期段階では、スクリーニングによって疾患を改善する作用をもつ物質である「ヒット」化合物を見つけることに主眼が置かれます。
そのためにAWS Batchを使って、ビッグデータから効率的かつ迅速に低分子ライブラリを調査し、一般にタンパク質受容体や酵素といった、目的の薬剤に結合できそうな構造を特定するのに役立ちます。

さらに、ゲノム解析では時に10億以上にもつながった塩基の配列をいろいろな観点から解析する必要があり、コンピュータの使用が不可欠です。ゲノムシーケンスの一次解析が終わった段階では、読みとった塩基配列データは数百から1,000塩基程度の長さの断片のデータです。その後、二次解析として部分的にデータの重複をコンピュータで検出し、参照とサンプルから不整合から生じるデータのエラーを減らすことで、解析をよりシンプルに自動的に行うことができます。

3) デジタルメディア

エンターテイメント企業はデータの並列処理や高解像度ビデオコンテンツ向けのファイル、グラフィックなどのコンテンツを制作、送信する際に膨大な量のデータを扱います。

レンダリングは、ソフトウェアプログラムを使用して、以前に作成したモデルから画像を生成するプロセスです。 AWS Batch を使うことにより、コンテンツレンダリングワークロードを自動化し、実行時の依存性やリソースのスケジューリングによる手動作業をなくすことができいます。

今、動画を簡単に配信・視聴できるようになっていますが、動画データは容量が大きくインターネットに大きな負荷を与えてしまいます。そんなときに必要不可欠なのが、「トランスコーダ」と「エンコーダ」です。
トランスコーダでは、エンコードしたデータ(デジタル信号)を元のデータ(アナログ信号)に戻さず、別の形式に変換(再エンコード)する技術のことです。
AWS Batchはトランスコーダにも使われていて、リソースのボトルネックの解決や手動での処理数を減らすことに役立っています。

最後に広告会社が外部融合型のメディア・サプライチェーンを作るためにも活用されています。各メディア機関の番組制作や編集システムをデジタル的にネットワーク化し、簡単なワークフローとして運用することにも利用されています。

まとめ

いかがでしたでしょうか。
フルマネージドなジョブ実行ができるAWS Batch、活用していきたいですね。

AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!