バッチ処理とは何ですか?

バッチ処理は、大量の反復的なデータジョブを定期的に完了するためにコンピュータが使用する方法です。バックアップ、フィルタリング、ソートなどの特定のデータ処理タスクは、個々のデータトランザクションで実行するには計算負荷が高く、非効率的となる場合があります。代わりに、データシステムはそのようなタスクをバッチで処理します。多くの場合、一日の終わりや夜間など、コンピューティングリソースがより一般的に使用可能なオフピーク時間に処理が実行されます。例えば、終日注文を受け付ける e コマースシステムを考えてみましょう。システムは、発生時にすべての注文を処理する代わりに、毎日の終わりにすべての注文を収集し、1 つのバッチで注文フルフィルメントチームと共有することが考えられます。

バッチ処理が重要なのはなぜですか?

組織がバッチ処理を使用するのは、人による操作を最小限に抑えることができ、反復的なタスクをより効率的に実行できるからです。数百万件のレコードで構成されるジョブのバッチを設定して、コンピューティング性能が極めて多く使用可能になったときにまとめて処理できるため、システムへの負荷が軽減されます。最新のバッチ処理でも、人による監視や管理は最小限で済みます。問題がある場合、システムは関係するチームに自動的に通知して解決を促します。マネージャーは、バッチ処理ソフトウェアによるその仕事の実行を信頼して、ハンズオフアプローチを採用します。バッチ処理の他のメリットを次に示します。

バッチ処理にはどのような歴史がありますか?

バッチ処理は 1 世紀以上前のものですが、その仕組みの技術的な側面は絶えず進化しています。バッチ処理の最初の事例は、米国国勢調査局の情報を記録するために電子タビュレーターが使用されていた 1890 年まで遡ります。国勢調査員は、パンチカードと呼ばれるデータカードにマークを付け、電気機械装置を通じてバッチで処理していました。1960 年代までに、デベロッパーはコンピュータが終日連続して実行されるように、磁気テープ上でバッチプログラムをスケジュールすることができました。また、メインフレームコンピュータが改良され、より強力で効率的になるにつれて、バッチジョブは一般的になっていきました。現代の組織は、レポートを生成し、文書を印刷し、または一日の終わりに情報を更新するなど、一般的なビジネスプロセスにソフトウェアベースのバッチアプリケーションを使用しています。

バッチ処理で自動化できるジョブの例にはどのようなものがありますか?

バッチ処理システムは、さまざまなタイプのデータやリクエストを処理するために使用されます。最も一般的なバッチ処理ジョブには、次が含まれます。

  • 週次/月次の請求
  • 給与
  • インベントリ処理
  • レポート生成
  • データ変換
  • サブスクリプションサイクル
  • サプライチェーンフルフィルメント

バッチ処理システムのユースケースにはどのようなものがありますか?

バッチ処理システムには複数のユースケースがあります。主な例を次に示します。

金融サービス

アジャイルな金融テクノロジーから従来の企業まで、金融サービス組織は、リスク管理のための高性能コンピューティング、終業時のトランザクション処理、不正監視などの領域でバッチ処理を使用しています。バッチ処理を使用して、人的ミスを最小限に抑え、速度と精度を改善し、オートメーションでコストを削減します。

Software as a Service

Software as a Service (SaaS) アプリケーションを提供する企業は、スケーラビリティに関してしばしば問題に直面します。バッチ処理を使用すると、ジョブのスケジューリングを自動化しながら顧客の需要をスケールできます。大量処理の需要をスケールするためにコンテナ化されたアプリケーション環境を作成するプロジェクトは、完了までに数か月または数年かかる場合がありますが、バッチ処理システムを使用することで、はるかに短い時間枠で同じ結果を達成できます。

医学研究

大量のデータ、つまりビッグデータの分析は、研究分野では一般的な要件です。バッチ処理は、計算化学、臨床モデリング、分子動力学、ゲノム配列決定試験および分析などのデータ分析アプリケーションに適用できます。例えば、科学者は、バッチ処理を使用してより良いデータを収集し、医薬品設計を開始し、特定の生化学プロセスが果たす役割をより深く理解します。 

デジタルメディア

メディアおよびエンターテインメント企業は、高解像度の動画コンテンツ向けのファイル、グラフィックス、視覚効果などのデータを自動的に処理する、高度にスケーラブルなバッチ処理システムを必要としています。バッチ処理を使用して、コンテンツの作成を高速化し、メディアパッケージを動的にスケールし、メディアワークロードを自動化できます。

バッチ処理はどのように機能しますか?

バッチ処理アプリケーションは、実行する必要があるタスクのタイプによって異なりますが、バッチジョブの基本は変わりません。ユーザーは、次の詳細を指定することでバッチジョブを実行できます。

  • ジョブを送信する担当者の名前
  • 実行する必要があるバッチプロセスまたはプログラム
  • データ入力のシステムの場所
  • 処理されたデータ出力のシステムの場所
  • バッチジョブを実行する時間、またはバッチウィンドウ

また、ユーザーは、バッチサイズ、またはシステムが 1 回の完全なバッチオペレーションで処理する必要がある作業単位の数も指定します。バッチサイズの例をいくつか挙げます。 

  • 読み取って、データベースに格納するバッチファイルの行数
  • キューから読み取って、処理するメッセージ数
  • ソートして、次のアプリケーションに送信するトランザクションの数

バッチウィンドウ中、バッチ処理システムはバッチサイズ情報を使用して、バッチジョブを効率的に実行するために必要なリソースを割り当てます。最新のシステムでは、オンプレミスまたはクラウドで数十万のバッチジョブを実行できます。

依存関係

バッチジョブのタスクは、順次または同時に実行できます。順序は、以前のタスクが正常に完了したかどうかによって異なる場合があります。依存関係の例には、顧客がオンラインストアで注文したり、請求書に対する支払いを行ったりすることが含まれます。依存関係は、ジョブ処理サイクルを開始するように設定することもできます。

cron コマンド

cron コマンドは、定期的に実行されるバッチジョブです。バッチジョブの繰り返しパターンを設定できます。例えば、毎月末にサブスクリプションの請求を行うジョブを設定できます。

バッチ処理をモニタリングするにはどうすればよいですか?

バッチ処理システムは、人による最小限の入力で機能しますが、それでもある程度の監視が必要です。バッチプロセスをモニタリングするために、バッチジョブが成功、失敗、または実行が終了したときに送信されるアラート (例外) を設定できます。

モニター

バッチプロセスのモニターは、完了するまでに必要以上に時間がかかっているジョブなどの異常を検出します。この場合、次のジョブの開始を停止し、関係者に例外を通知します。

処理後の分析

バッチジョブが処理された後、その履歴を表示できます。ほとんどのバッチプロセスには、ジョブの実行中にメッセージを記録するログファイルが含まれています。

バッチ処理とストリーム処理にはどのような違いがありますか?

バッチシステムは大量のデータとリクエストを順番に処理しますが、ストリーム処理はシステム内またはデバイス間を流れるデータを継続的に分析します。ストリーム処理は、リアルタイムデータをモニタリングし、そのデータをネットワーク内で継続的に渡します。大量のデータをモニタリングするには、より多くの処理能力が必要です。

ストリーミングされるデータのサイズが不明または無限である場合は、バッチ処理よりもデータストリーミングの方が望ましい場合があります。そのため、ストリーム処理は、サイバーセキュリティモノのインターネット (IoT)、パーソナライズされたマーケティングサービスログモニタリングなどのビジネス機能に一般的に使用されています。

その補完的な機能を踏まえて、日常業務にバッチ処理とストリーム処理を含むハイブリッドシステムを実装している企業もあります。

AWS はバッチ処理をどのようにサポートできますか?

AWS Batch を使用すると、フルマネージドのバッチ処理にかかるコストを最大 90% 削減できます。AWS Batch は、CPU やメモリ最適化インスタンスなど、最適な量とタイプのコンピューティングリソースを動的にプロビジョニングするため、バッチ処理システムインフラストラクチャをインストールして管理する必要がなくなります。インフラストラクチャの管理に費やす時間を減らし、結果の分析と問題の解決により多くの時間を費やすことができます。

Amazon Elastic Compute Cloud (Amazon EC2) スポットインスタンスでバッチワークロードを実行することもできます。Amazon EC2 スポットインスタンスは、オンデマンドインスタンスの料金と比較して最大 90% 割引で利用できる未使用の Amazon EC2 キャパシティです。スポットインスタンスは、大幅なコスト削減を実現しながらハイパースケールワークロードを実行したり、並列タスクを実行してワークロードを高速化したりできるため、バッチ処理アプリケーションに最適です。

AWS アカウントを作成して、バッチ処理を開始しましょう。

AWS でのバッチ処理の次のステップ

その他のコンピューティング製品のリソースを確認する
コンピューティングサービスの詳細 
無料のアカウントにサインアップする

AWS 無料利用枠にすぐにアクセスできます。

まずは無料で始める 
コンソールで構築を開始する

AWS マネジメントコンソールで、AWS Batch を使った構築を開始しましょう。

サインイン