リアルタイムVSバッチではなく、処理時間に合わせて選択する
バッチ処理とはそもそも悪なのか──。暮林氏のセッションはこの問いかけから始まった。バッチ処理が悪と見なされる風潮があるが、「もう少し広い視野で見直していきたい」と暮林氏は言う。
そのために暮林氏が提案したのは「オーダー」という概念で考えること。オーダーは物理学や工学でしばしば使われる用語で、桁の大きさを把握するために使われる。例えば光の速さは「3.0×10の8乗」などと表すことができる。つまり光の速さのオーダーは「10の8乗」と言える。
コンピュータの処理は種類によって求められるオーダーは異なる。例えばリアルタイム処理はWebやAPIなど即時応答が欲しい場合に用いられるので、1秒や0.1秒で処理が終わることが求められる。オーダーで表すと、「リアルタイム処理は10の-1乗や10のゼロ乗という世界が求められる」と暮林氏は説明する。対してバッチ処理は大量データを一定時間内に処理したい場合に用いられる。しかも夜間バッチなど、サイクルは日で回っていることが多く、動作時間では短いモノで数分単位、長いものだと数十時間に及ぶものあるなど、オーダーとしては非常に大きくなる。「10の3乗、4乗、5乗などのオーダーとなる」(暮林氏)
リアルタイム処理とバッチ処理だけではなく、即時応答が不要で要求が入ってくれば即バッチが動いて結果を返すディレイドバッチ(ディレイドオンラインとも)という方法もある。ディレイドバッチの処理時間は分単位。オーダーとしては10の1乗~3乗で表される。さらにもう一つ、リアルタイム処理に近いが即時応答が不要で、要求受付のみ即時に行う必要があり、処理もなるべく速く行いたい場合に適しているのが、ニアリアルタイム処理である。「ニアリアルタイム処理は速い場合はリアルタイム処理と変わらないこともあるが、オーダーは10の0乗や10の1乗で表される」(暮林氏)
オーダーで見れば分かるように、用途によっては最適な処理種別がある。それにもかかわらず、「リアルタイム処理ができないのならバッチ処理にするという方法論で選んでいたことが問題。そこから脱却し、目指す処理時間のオーダーに合わせて適切な処理形態を選ぶことが大事」と暮林氏は指摘する。