「Azure Batchとはどんなサービス?」「Azure FunctionsやAzure Logic Appsとはどう違う?」
当記事ではAzure Batchの概要や、類似サービスとの違いを解説します。使い方や料金体系も解説しているので、使いどころを具体的にイメージできるでしょう。自社で実戦投入する際のお役に立てられますので、ぜひ最後までお読みください。
Azure Batch とは
Azure Batchとは、Azure環境でバッチ処理を実行できるサービスです。当サービスではオンプレミス環境では用意が難しい大規模なリソースでもを割り当てて効率的な実行ができます。
一般的なバッチ処理の実施方法は以下の通りです。
- 実行するバッチの作成
- バッチを実行する環境の準備
- バッチ処理実行
しかし、この手順2はかなり面倒な作業といえます。理由は、処理するバッチごとに準備すべき環境が異なるからです。場合によっては数百から数千台のパソコンを用意したり、高価かつ高性能なハードウェアを用意したりする必要があるでしょう。
また環境の準備には、適切なプログラムの配置や、他の処理の優先度調節などの作業も発生します。当サービスを利用することで手順2が簡略化され、手順1や3、そのほかの作業に集中できるようになります。
Azureの概要については、以下の記事で詳しく解説しています。併せてご覧ください。
Microsoft Azureとは|何ができる?入門内容からわかりやすく解説
Azure Batchの環境
Azure Batchの環境の要素は、大きく分けて以下の2点です。
- 実行環境
- Batchアカウント(Azureアカウントではありません)
Azure Batchの実行環境
実行環境は以下の2つの分類があります。
- コンピューティングリソース
- プール
上記は別々のものではなく、コンピューティングリソースの集合体が「プール」です。
コンピューティングリソース
コンピューティングリソースとは、実行環境の最小単位です。
コンピューティングリソースの実態は仮想マシン、またはDockerコンテナです。ジョブ実行前に作成するリソースを決めておく必要があります。リソースのメモリやCPU、ストレージ、OSなど条件やスペックを選択しましょう。
「どのリソースを選べばいいかわからない」と思ったのではないでしょうか。しかし、最適なリソースは当記事で提示できません。理由は、実施するジョブの内容は規模によって異なるためです。よって実施に必要な性能を事前にテストするなどして、最適なものを選択してください。
例えば「.NET」の処理を実行するのであればOSはWindowsにすべきです。また画像処理やAIの学習を扱うのであればCPUやメモリは高性能なものが望ましいでしょう。
例えのように実行するジョブ内容と実行時間により、CPU数やメモリを見積もってください。
プール
前述したように、プールとは、コンピューティングリソースの集合体です。
バッチ処理を開始すると、リソースがプールに配置されます。プール内の各リソースがジョブの処理を進めていき、必要に応じて自動でリソースの増減が可能です。
このため、従来であればユーザーがジョブの実施状況を監視し、必要に応じてリソースの追加を行わなくてはなりませんでしたが、当サービスを利用すればその必要はありません。
Azure BatchのBatchアカウント
Batchアカウントは、ジョブを実行する際に必要なアカウントです。Azureにログインするためのアカウントとは別で用意しておく必要があります。
Batchアカウントを作成した後で、ジョブやタスク、プールの作成が可能です。またジョブのスケジュール管理や一覧管理、セキュリティ対策もBatchアカウント上で行います。
よって当サービスを利用する際は「Batchアカウントを最初に作る」と覚えておきましょう。
Azure Batchの仕組みと使い方
Azure Batchの仕組み、使い方について解説します。使い方の解説としてこのサービスを用いてできることや用途を紹介するので、自社の業務に役立てるためにもぜひ参考にしてください。
Azure Batchの仕組み
動作の仕組みは、以下の通りです。
- Batchアカウントを作成
- タスクを作成し、実際に行う計算や処理などを登録
- タスクをまとめてジョブとする、この時ジョブ単位でプールを割り当てる
- 実行する
実行パターン1:登録したスケジュールで自動開始
実行パターン2:明示的に実行を開始(オンデマンド実行)
タスクには、以下の種類と役割があります。
- タスク(メインタスク)
ジョブの中でメインとなる、実際に行いたい作業を実施する - 開始タスク
環境変数やアプリケーション、ライブラリなどの実行環境を整備する - ジョブマネージャータスク
ジョブの実行や監視を制御するタスク - ジョブ準備タスク
プール内の各リソースへデータをコピーするなど、ジョブ内のメインタスクを実行する前に行う - ジョブ解放タスク
メイン処理のタスクを実行後に、確保していたリソースを解放する - マルチインスタンスタスク
複数の仮想マシンで同時に実施する - Task dependencies(タスクの依存関係)
実施する順番を定義する必要があるタスクや、別のタスクの結果によって実施有無が異なるタスクの登録
当サービスは必要なタスクを作成し、ジョブとして登録(タスクをグループ化)しておくことで動作する仕組みです。
Azure Batchでできること
Azure Batchで実行できることには以下があります。
- 並列処理
- 密接に結合された処理
並列処理とは、Batchで処理される一般的なタスクです。Azureの別のサービスでの動作(例:ストレージにファイルが保存された)を契機にジョブを開始します。並列処理の例として、画像の分析や処理、データの取り込みなどです。
密接に結合された処理とは、複数の仮想マシンで同時に実施したい処理です。実施するためには、各リソース間で通信ができる必要があります。例えば、AI学習や大規模な計算シミュレーションなどです。
また、上記をコンテナ上で実施するコンテナワークロードがあります。こちらはリソース上のDockerコンテナで実行するワークロードです。Dockerコンテナはコンテナイメージを事前に用意しておけば、コンテナの起動するだけでジョブが実行できるため、より簡単にタスクが作成できます。
Azure Batchの実行例
Azure Batchでの並列処理の実行例として、Azure Storageへの画像保存を契機とした画像処理をするジョブ実施の流れを解説します。
- 何らかの形でAzure Storageに画像ファイルが保存される
- 1.に反応しジョブが開始する
- コンピューティングリソースが作成、配置される
- 対象の画像処理を行う
- 画像処理完了後、処理を終えた画像を改めて保存する
上記のように、他のサービスでの挙動を契機としてジョブの実施が可能です。並列処理を実施するために、契機を監視しておくことが必須となります。
Azure Batchの料金
Azure Batchは、Batchアカウントやジョブの作成では料金が発生しません。料金は、ジョブが実施される際にデプロイされるリソースの台数、スペック、実行時間で決まります。このため、高性能なリソースを多数用いて長時間の処理を行わせると料金が一気に高くなるため、注意してください。
当サービスでは、スポットVMを用いることで料金を安く抑えることもできます。スポットVMとは、Azure全体のリソースプール内で余っているVMです。ただし、スポットVMを利用するとAzure側のニーズが高まることで自動的に削除されてしまう可能性があります。このためスポットVMは本番環境ではなく、タスク作成時のテスト実施や短時間で処理が完了するジョブに用いるのがよいでしょう。
Azure Batchと類似サービスとの違い
Azure Batchには以下の類似サービスがあります。
- Azure Functions
- Azure Logic Apps
それぞれとの違いを解説します。
Azure Functionsとの違い
Azure Functionsとの最大の違いは、実行環境の規模です。Azure Batchは先述の通り、ジョブごとにリソースのプールが用意され、プール内のリソースで実行されます。大規模かつ長時間処理の実施に耐えられるだけのリソースを、明示的に用意することも可能です。
一方でAzure Functionsは、プログラムのみを配置しておき、契機によってAzure Functionsが用意しているリソース上でプログラムが実施されます。実行時間は限られており、大規模かつ長時間かかるプログラム実行には耐えられないと考えましょう。
他にも料金体系の違いがあります。Azure Batchの料金はリソースの台数、スペック、実施時間に応じた料金です。一方で、Azure Functionsの料金はプログラムの実行回数と実行時間で決まります。
Azure Functionsについては以下の記事でも解説しているので、併せてご覧ください。
Azure functionsとは?できることや構成図、AWS lambdaとの違いを解説
Azure Logic Appsとの違い
Azure Logic Appsとの最大の違いは、タスクの作成方法です。Azure Batchではプログラミングベースでタスクを作成します。
一方でAzure Logic Appsは、ワークフローをドラッグ&ドロップで実施させたい処理を実装するローコードのサービスです。
また、利用目的にも違いがあります。Azure Batchは大規模かつ長時間の処理をさせることが主な目的です。
一方でAzure Logic Appsは、ビジネスプロセスの自動化など、人間が手動でやっていた作業を軽減することが目的となります。
Azure Logic Appsについては以下の記事でも解説しているので、併せてご覧ください。
Azure Logic Appsでプログラミングせずアプリを作ろう
Azure Batchのその他機能
Azure Batchのその他の機能として、以下2点を解説します。
- プライベートエンドポイントで利用する
- Virtual Network内で利用する
Azure Batchをプライベートエンドポイントで利用する
Batchアカウントに、プライベートエンドポイントでアクセスできる機能があります。一般的に、Batchアカウントにはパブリックエンドポイント経由でアクセスします。しかしAzure Private Linkを使用すると、プライベート エンドポイント経由でBatch アカウントへアクセスできます。
プライベートエンドポイントで利用することで、閉域網の中で処理が行えます。このため当サービスでは、社内網でしかアクセスできないサービスの処理が可能です。
Azure BatchをVirtual Network内で利用する
プールに属するリソースは、Virtual Network(仮想ネットワーク)との接続が可能です。この機能を利用すると、当サービス以外のリソースとの通信もできます。
例えば処理を開始する際に、同じ仮想ネットワークに接続されている仮想マシンから情報取得が可能です。また仮想ネットワークに接続されていればインターネットやオンプレミス環境と通信をすることも可能です。
まとめ
Azure Batchとは、Azure環境で大規模なバッチ処理を実行するためのサービスです。大規模かつ長時間の実施となる処理に対応できるサービスで、主に実行環境の整備にかかるコストを削減できます。
当サービスを利用するためにはまず、Batchアカウントを作成し、その後にリソースの準備や実行タスクの作成に進みましょう。またよく似たサービスもあるため、記事を参考に、実施したい内容から最適なサービスを選択してください。