公開日:2024年12月24日最終更新日: 2024年12月24日
バッチ処理は時間の掛かるタスクをこなすために使われる手法で、データ分析やAIモデル学習などビジネスの現場でも多く活用されています。また、重い処理が続くことから、夜間や休日のようなサーバーの稼働が少ない時間帯に一括で実行されることが多いです。
ただし、既存のサーバー上で動かすにはパフォーマンスに影響を及ぼす可能性がありますし、新しいサーバーを用意するにも大きなコストが掛かってしまいます。
Azure Batchは、バッチ処理に必要なサーバーリソースが動的に提供されるクラウドサービスです。タスクの処理状況に応じて最適なサーバーリソースが割り当てられ、高パフォーマンスのバッチ処理を低コストで実現できます。本記事ではAzure Batchが得意とする利用場面やその料金体系を解説していきます。
目次 <Contents>
Azure Batchとは
Azure Batchは、バッチ処理に必要な実行環境や管理機能を提供するクラウドサービスです。3Dモデルのレンダリングやビッグデータの分析など長時間のタスクを、時間短縮を図りながらも最適なコストで実施できます。
バッチ処理の規模が大きくなるほど丁度良いインフラの選定が難しくなりますが、Azure Batchではタスクに特化した最適な性能の仮想マシンが用意されています。さらに、並列に稼働する仮想マシンが処理負荷に応じて数台から1,000台規模にまで自動拡張されて効率化が図られるため、利用者はタスクの実行や計画に集中できます。
このようなバッチ処理の管理はAzureポータルサイトから操作もできますし、Web APIを通じてアプリケーションから任意のタイミングで仮想マシン起動からタスク実行まで制御することも可能です。そのため、Azure Batchはサーバーリソースを長く占有するような大規模なバッチ処理に対して特に有効です。
Azure Batchの特徴
Azure Batchは、バッチ処理の計画に最適な次の3つの特徴を持っています。
大規模なバッチ処理の時間を大幅に短縮可能
Azure Batchは次のような高い処理能力が求められるタスクに対して特に有効です。
- 3Dモデルや映像のレンダリング
- ビックデータを使った統計処理
- 機械学習やAIモデルの学習
タスクの実行環境として、高速処理を可能にするCPUやGPUに特化したマシンや、ストレージやメモリを多く積んだマシンなど必要な性能の仮想マシンを選べるため、自前でサーバーを用意しなくても大規模なタスクを効率的にこなせます。
また、処理負荷に応じて仮想マシンの台数が自動的に増減する仕組みを備えており、タスクに対して集中的にサーバーリソースを投下することができます。そのため、長時間で高負荷なタスク処理でもコストを抑えながら時間短縮が図れます。
スポット利用によるコスト最適化
Azure Batchの料金体系はバッチ処理を動かした時間だけ料金が発生する従量課金制です。バッチ処理の実行環境としてコストの異なる仮想マシンが用意されており、その種類や利用時間に応じて料金が決められています。
バッチ処理では複数台の仮想マシンが並列に稼働する仕組みで、使い終わったらそれらの仮想マシンは削除されます。停止している間には無駄な料金が掛からないためコストを抑えることができます。
なお、バッチ処理の実行指示や実行に使用する仮想マシンの構成は、Azureの管理ポータルから簡単に操作できるようになっています。
様々な要件のバッチ処理に対応
Azure Batchはビジネスで必要となる様々な場面のバッチ処理に活用できます。
例えば、処理負荷が高く時間が掛かっているタスクに使うマシンの導入やメンテナンスに大きなコストが掛かっているとき、Azure Batchに初期コストなしで移行することができます。バッチ処理は、Windows環境のバッチやLinuxのシェルによる実行が可能で、さらに既存のアプリケーション内からWeb API経由で様々な操作が可能です。
また、特別なアプリケーションを利用している場合にも対応可能です。必要なアプリケーションをアップロードしておけば、仮想マシン起動時にインストールさせることもできますし、それらをまとめたコンテナを用意しておけばバッチ処理用の仮想マシンとして動かすこともできます。
Azure BatchとAzure Functionsの違い
Azure Batchとよく比較されるサービスとして、サーバーレスのコード実行サービスであるAzure Functionsがあります。
Azure Functionsはサーバー管理が不要なWeb APIを実装できるサービスで、処理時間や実行回数に応じて料金が発生します。Webアプリケーションのバックエンドのように短い応答時間が望ましい場合に適したサービスです。
比較項目 | Azure Batch | Azure Functions |
---|---|---|
稼働環境 | 仮想サーバー、コンテナ | サーバーレス |
適したケース | 長時間のバッチ処理 | Web APIなどリアルタイムな応答 |
料金体系 | 従量課金制 ※サーバー性能ごとに単価が異なる | 従量課金制 ※タスクの実行時間や呼出回数に依存した |
Azure Batchの利用料金
Azure Batchの料金は、仮想マシンのグレードとその使用時間に応じて料金が発生します。下記の表では仮想マシン(Windows Server)のグレードごとに料金を示しています。
汎用
コア | メモリ | 一時ストレージ | 1時間あたりの料金 | |
---|---|---|---|---|
A1 v2 | 1 | 2GiB | 10GiB | 4.9106円 |
A2 v2 | 2 | 4GiB | 20GiB | 10.4349円 |
メモリの最適化
コア | メモリ | 一時ストレージ | 1時間あたりの料金 | |
---|---|---|---|---|
E2a v4 | 2 | 16GiB | 50GiB | 14.9772円 |
E4a v4 | 4 | 32GiB | 100GiB | 29.9237円 |
ストレージの最適化
コア | メモリ | 一時ストレージ | 1時間あたりの料金 | |
---|---|---|---|---|
L8s v2 | 8 | 64GiB | 80GiB | 67.5202円 |
L16s v2 | 16 | 128GiB | 160GiB | 135.0404円 |
GPU
コア | メモリ | 一時ストレージ | GPU | 1時間あたりの料金 | |
---|---|---|---|---|---|
NC6 | 6 | 56GiB | 340GiB | 1X K80 | 107.2650円 |
NC12 | 12 | 112GiB | 680GiB | 2X K80 | 214.5301円 |
なお、上記の表は2024年12月時点の情報で、東日本リージョンでの料金を1ドル円換算で算出しています。
Azure Batchの使い方
ここからはAzure Batchの使い方を解説します。Azure Batchを利用するにはAzureアカウントに加えて下記サービスの作成が必要です。
- Batchアカウント
- ストレージアカウント
以降では、これらのアカウントをAzureポータルから作成する方法を紹介します。さらに、バッチ処理に使用する仮想マシンを選び、実行するタスクを作成する手順も紹介していきます。
なお、以降で紹介する各アカウントやリソースは利用料金が発生するため注意しましょう。
ストレージアカウントの作成
まずはAzureポータルのサービス一覧から「ストレージアカウント」を選択しましょう。
ストレージアカウントの画面に遷移したら「作成」を押します。
ストレージ作成画面が開くので、下記の項目を入力していきましょう。
- サブスクリプション
- リソースグループ
- ストレージアカウント名
- リージョン
Batchアカウントの作成
Azureポータルのサービス一覧から「Batchアカウント」を選択しましょう。
Batchアカウントの画面に遷移したら「作成」を押します。
Batchアカウントの作成画面が開くので、下記の項目を入力していきましょう。
- アカウント名
- 場所
- 既存のストレージアカウントの選択
プールの作成
続いて、Batchアカウント画面からメニュー「プール」を選び、「追加」を押しましょう。
プール作成画面が開くので、下記の項目を入力していきましょう。
- プールID
- 発行者
- オファー
- SKU
- OSディスクストレージアカウントの種類
- VMサイズ
- ターゲットの専用ノード数
作成処理が完了すると、プール一覧の画面に追加されていることが確認できます。
タスクの作成
最後に、バッチ処理を動かすためのジョブとタスクを作成していきます。
Batchアカウント画面からメニュー「ジョブ」を選び、「追加」を押しましょう。
ジョブ作成画面が開いたら、下記の項目を入力していきます。
- ジョブID
- 既存プールの選択(先ほど作成したプール)
ジョブが作成できたら、プール画面のジョブ一覧に戻ります。作成したジョブを選択するとジョブの画面に移るので、メニュー「タスク」を選びましょう。タスクの画面が開いたら、「追加」を選びます。
タスクの作成画面が開くので、下記の項目を入力していきます。
- タスクID
- コマンドライン:cmd /c “set AZ_BATCH & timeout /t 90 > NULL”
なお登録したコマンドでは、環境変数を表示して90秒間待機するという処理が実行されます。
「送信」を押すとタスクが実行されます。タスク一覧の画面からタスクを選ぶと、コマンドの実行結果として出力されたファイルを確認できます。
まとめ
Azure Batchは、長時間掛かるタスクを最適なコストで実施できるインフラを提供するクラウドサービスです。サーバーリソースの構成やタスクの時間調整を気にすることなくタスクをスケジューリングできます。また、タスクに対して適切なリソースを集中投下できるため、バッチ処理1回あたりに掛かるコストの最適化が図れます。
社内でボトルネックになっているタスクをAzure Batchに移行することで時間短縮にもつながり、業務全体の効率化が期待できます。長時間のタスクの実施を必要とする場合や、既存タスクの効率化を図りたい場合にはAzure Batchを検討してみてください。