各グループ企業から報告される売上げデータのフォーマットが現在バラバラであるため、処理に多くの問題が発生している。フォーマットを整形し本社データベースに格納するため、夜間バッチを実行する
皆さんは情報システムが作成した仕様書・指示書・提案書などで、上記のようなフレーズを目にしたことはないでしょうか?
「ない」という方でも文中に出てくる“夜間バッチ”というワードを見聞きしたことがあると思います。
特に情報システムや基幹系システムに携わるシーンでよく耳にしますが、この夜間バッチとは果たして何でしょう?
今回は「夜間バッチとは?」という方に向け、専門用語を極力避けつつわかりやすく解説していきたいと思います。
夜間に行うバッチ処理
夜間バッチとは“夜間”と“バッチ処理”を掛け合わせたワードであり、意味としてはそのまま“夜間に行うバッチ処理”となります。
まずはこのバッチ処理について説明していきましょう。
バッチ処理とは
多くの企業では日々膨大な量のデータが蓄積され、常にその処理が求められています。
例えば冒頭で述べたように売上げデータなどが代表的ですね。
各店舗やグループ企業では毎日取引が発生し、売上げが計上されていきます。
こうしたデータは本社で管理するために全てを適切に処理しなければなりません。
しかしほとんどの場合、こうしたデータをリアルタイムで処理することはありません。
なぜなら、あまりに大規模なデータをリアルタイムに処理してしまってはシステムに大きな負荷がかかり、キャパシティーを超え、システムがパンクしてしまいます。
つまり、システムダウンを起こしてしまうのです。
システムダウンは業務の妨げになり大きな損失を生んでしまうため、当然企業としては避けなければならない事態です。
そこで登場するのがバッチ処理であり、蓄積された大規模なデータをリアルタイムで処理するのではなく、特定の日時に処理するよう設定するものです。
こうすることで業務時間外に負荷の高いデータ処理を行うことができ、システムダウンすることなくデータの整合性を取ることができます。
バッチ処理の歴史
そもそもバッチ処理はシステムの運用負荷を考えて編み出されたデータ処理方法ではなく、もともとは効率化を考えてのものでした。
バッチ処理の歴史は汎用コンピュータ(※1)時代まで遡り、当時は高価かつ貴重であったコンピュータを共有するというのが一般的でした。
データ処理が必要な際は都度依頼する必要があったのですが、それでは非効率的ということで多くの企業が一定量(または一定期間)のデータが集まった段階で依頼をします。
バッチ処理という概念そのものは、こうした効率化を考えて生まれたものだったのです。
ちなみに「バッチ:Batch」とは日本語で「一束、一群、一団」という意味があります。
※1:汎用コンピューターとは、企業の基幹業務における大量かつ機密性の高いデータを処理するための機会。「汎用機」や「メインフレーム」と呼ばれることもある。
つまり夜間バッチとは
既にお分かりでしょうが、夜間バッチとは“日中では業務に支障をきたしてしまうデータ処理を夜間に行うこと、またはその技術となります。
代表的なのは銀行の勘定システムです。
皆さんが銀行ATMを利用する際には、こちらの要望に対しシステムが瞬時に反応してくれます。(その場でデータが処理し、お金を引き出すことができます)
これはいわゆるバッチ処理の逆で、リアルタイム処理やインタラクティブ処理と呼ばれます。
これに対し社員全員同時に振り込まれる給与や、月末に発生する企業間取引などのデータ処理に関してはリアルタイムで反映されません。
なぜか?それは、これらのデータ処理は大規模なデータを一括処理することが求められるため、リアルタイム処理ではシステムダウンを起こしてしまうからです。
ちなみに夜間バッチは売上げデータや勘定システムに限った話ではなく、生産管理や物流など様々業界やシーンで汎用的に用いられる処理です。
夜間バッチレスシステムとは
夜間バッチに対して、夜間バッチレスシステムというワードも存在します。
何だか混乱してしまいそうな感じですが、いわゆる夜間バッチを排除したデータ処理方法です。
夜間バッチでは基本的に日中のシステムをストップさせる必要があります。
大規模なデータを夜間処理するためにはシステムを全て集中させなければならず、そもそも業務時間外に日中システムの稼働は不要です。
しかし、後述しますが夜間バッチにはリスクがあり、また24時間サービスを提供したい場合は夜間バッチレスシステムでなければなりません。
こうした傾向から、近年では夜間バッチレスシステムを採用している企業が増加傾向にあります。
一般的には全てのデータをリアルタイム処理するためのシステムを構築する手法が思い浮かびますが、難度は高く現実的ではありません。
そこで多くの企業で採用されているのが日中バッチ処理化です。
最近ではAWS(※2)を始めとしたクラウドサーバが低価格で提供されているため、日中バッチ処理化が最も現実的な夜間バッチシステムとなります。
※2:AWSとは「Amazon Web Service」の略であり、ネットショッピング事業を店内するAmazon.comが提供するクラウドプラットフォーム。類似したサービスにGoogle Cloud Platformなどが挙げられる。
夜間バッチのメリット・デメリット
メリット
日中の業務時間外で大規模のデータを処理できる
夜間バッチレスシステムに関しては大型百貨店や24時間サービス提供事業では大きなメリットがありますが、一般企業ではやはり夜間バッチを適用するのがベターです。
解説にもありますが日中の業務時間外に大規模なデータ処理を行えるためシステムダウンを避け、基幹業務システムのパフォーマンスを下げずに処理することができます。
また、夜間バッチを提供することで比較的新しいデータを常に参照することができるのも特徴です。
スケジューリングしておくことで情報システムの業務効率化につながる
夜間バッチと聞くと情報システムが夜中も常駐してデータ処理を行うように思われがちですが、予め処理をプログラムしておくことができます。
指定の時間になるとプログラムが作動し、各データベースから必要なデータを取得、それを本社データベースに統合管理するなどの処理が行えます。
情報システムの業務効率化や業務負担軽減などにも繋がります。
デメリット
データ量の増加により処理に遅延が発生することがある
夜間バッチで最も危険視しなければならないのが、遅延によりデータ処理が終わらないというケースです。
当然のことながら日中業務を阻害しないためには、業務開始時間までにデータ処理が完了していなければなりません。
さらに言えば、基幹業務システムなどは立ち上げに時間がかかるため、業務開始時間以前に終了していなければ日中業務に支障をきたしてしまいます。
しかしこうしたケースは往々にして発生することがあり、特にビッグデータ活用が提唱されている昨今では情報システムの課題の一つでもあります。
処理状況をリアルタイムで可視化できない
夜間バッチ及びバッチ処理では、予め組まれたプログラムで稼働しているため処理状況をリアルタイムで確認することができません。
都度状況を可視化する必要があるデータに関しては、リアルタイム処理を採用する必要があります。
夜間バッチでサービス障害を起こした事例
最後に、夜間バッチが原因で起きた大型のサービス障害事例を紹介します。
2013年3月にメガバンクであるM銀行では、14日から15日にかけての夜間バッチ処理に遅れが発生し38万件の処理が積み残されることに。
これを受け15~16日で一部ATMが利用できないという障害が発生、17日になっても12万件の処理が積み残された。
M銀行はシステムの辻褄を合わせつつリアルタイム処理を運用したが、本来ではあり得ない運用負荷に耐えかね17日未明にシステムダウン。
全ATMサービスがストップし、68万人の口座に給与が振り込まれないという事態に発展した。
この事例では、夜間バッチの運用負荷を上手く考慮できず、システムリソースの割り振りに原因があったようです。
こちらはメガバンクの事例なので該当する企業は少ないでしょうが、このように夜間バッチでは少なからずリスクがあるということを理解しておかなければなりません。
まとめ
今回解説した夜間バッチについて、以下に要点をまとめます。
- 夜間バッチとは、日中の業務時間を避けて大規模なデータを夜間に処理するための手法及びシステム
- 夜間バッチを排除した夜間バッチレスシステムが存在する
- 日中の業務時間外で大規模のデータを処理できることから、システムダウンやパフォーマンスの低下を避けることができる
- プログラムをスケジューリングしおてくことで、情報システムの業務効率化や負担軽減になる
- 夜間バッチの処理が遅延すると日中業務に支障をきたす恐れがある
- 処理状況をリアルタイムで可視化できないため、即時性のあるデータに関してはリアルタイム処理を行う必要がある
夜間バッチにおいて適切なデータ処理を行い、日中業務に支障をきたさないためには、迅速かつ正確にバッチ処理を行うソリューションを選択することが何よりも重要です。
直感的かつインタラクティブなソリューションを導入することで、日々の大規模なデータを最適に管理することができます。
そして、夜間バッチのメリットだけでなくデメリットやリスクをしっかりと理解した上で、トラブルへ迅速に対応できる体制を整えることもマストでしょう。
今回の解説で夜間バッチに対する理解を深めて頂けたのであれば幸いです。