2014年後半からAWSの事例で、東急ハンズさんが「夜間バッチレス」というキーワードを話されている。このキーワードがアタマに引っかかってモヤモヤするのでいろいろ調べたり整理してみたことを吐き出してみる記事。なお実際に本腰を入れて検討したわけでもなし、机上の空論、アタマの体操であるという点に注意。
photo by camknows
夜間バッチレスシステムとは
バッチ処理とはデータ処理を決まった時間やデータ量ごとにまとめて実行することである。たとえば、通常の銀行の振込業務は日中に行われる。しかし企業の従業員全員に対する給与振込など大量一括に行う処理は、日中の取引が完了したあとにまとめて処理を実施している。
で、夜間バッチレスシステムはこういった夜間バッチ処理が無いシステムのこととする。
夜間バッチレスシステムのメリット
夜間バッチ処理を行うためには一般的には日中のサービスを停止しなければいけない(取引などが出来ない状態で処理をする)。逆に言えば夜間バッチ処理がなければ24時間サービス提供もできる、というのがこれまでの夜間バッチレスシステムのメリットだった。むしろ24時間サービスを提供するために夜間バッチレス化を検討するような流れだった。
さらに最近ではサーバ資源がクラウドで提供され、利用している時間だけ課金する料金体系が出現している。夜間バッチ処理をなくせば、夜間サーバ資源を停止することができ、その分利用料を減らすことができるというメリットが加わっている(なお、実際には夜間バッチ処理は夜間運用も必要で、そういった運用コストも削減できると考えると影響は小さくないだろう)。
夜間バッチレス化の手法
バッチレス化の手法は調べてみたところ、大まかには二種類になるようだ。ひとつは業務やシステムの構造を見直してバッチ処理をそもそも不要にしてしまうオンライン化。もう一つは、夜間のバッチ処理を日中の業務に並行して実行し、結果として夜間バッチ処理を無くす日中バッチ処理化である。
オンライン化する
東急ハンズさんの事例
以下に公開されている資料などを見ていろいろと考えてみた。
https://www.hands-lab.com/tech/entry/149.html
- 日中バッチ処理化を行うことによって「夜間バッチレス」にしている。
- 定時起動で処理している模様。
- もともとデータベース(RDBMS)を利用しておらず、トランザクションをテキストファイルで管理するアーキテクチャを採用。生成されたトランザクション=テキストファイル群を、一定間隔で集計しているようなイメージ(謎テクノロジーにより処理・・・)。
- S3をDB利用 ショッピングセンター向けポイントシステム概要の事例の進化系?
- DBをオンラインと共有していない=日中バッチ処理がオンラインに影響を与えるおそれ無し
- 静止点の問題も発生しない
やはりデータの保持方法が肝なんだろうと考えている。データをテキストファイルで、かつ追記形式で保持していることが データの静止点を作りやすくしているのだと思う・・・と、ここまで考えたところで思考が先に進まなくなってしまった。ファイルをデータ管理する変わりにKVSなどを使ったらどうなるか、というのもちょっと考えてみたいのだけれども、それはまたいつかどこかで。