search
LoginSignup
1

posted at

updated at

Organization

人事システム「COMPANY」のバッチ処理の裏(側) の話 - 番外編

人事システム「COMPANY」のバッチ処理の裏(側) の話 の補足を人知れずメモしているもの。最新の仕様を説明した正式なものではないので、そういう時代があったのだなという参考程度に。

キューはどこからやってくるのでしょう

人事システム「COMPANY」のバッチ処理の裏(側) の話
「キュー管理サービス」というもの。キューは文字通りのQueueなのだがどうやって順番を管理しているかというとJava内のほかにもう一つ投入口が用意されている。下位互換的にそういう仕上がりになっている。「キュー受付テーブル」と一旦呼ぶ。

manager.java
//「キュー受付テーブル」にレコードが入る。
//   ↓
//「キュー管理スレッド」がそれを検知。
//   ↓
// ジョブ処理待ちへ

これはこれでただのバッチ処理機構の内輪の話で「キュー受付テーブル」にレコードを投入するには投入するための関数を使ってやるのが「お作法」である。

manager.java
// ★投入関数で呪文をとなえる(いくつか呪文には種類がある)
//   ↓
//「キュー受付テーブル」にレコードが入る。
//   ↓
//「キュー管理スレッド」がそれを検知。
//   ↓
// ジョブ処理待ちへ

さてこれが仕様であるとしてこの「バッチ処理」を使いたい使用者(各種プロダクトやサブシステム)がどうしているか。

例外その1

★に代わる(使用者にとって)良い感じの投入関数を自分で作っている。

作っている。なぜそうされたかはわからないが自作されている。★で提供している関数が機能不足だったのだと思われる。それで動いているのだから絶するが、歴史は奥深い。

例外その2

「キュー受付テーブル」にレコードを突っ込む。

関数をいくら隠ぺいしてもテーブルはPublicなので、その仕様を理解した上で練られた技と考えられる。

コンウェイの法則

コンウェイの法則

ソフトウェアのどの部分であれ、それを作った組織の構造を反映する。
Any piece of software reflects the organizational structure that produced it
備考:原文ではこれの応用として「コンパイラを4つのグループで作れば、4パスコンパイラになる」というのが紹介されている

オープンな組織である。

本来キューイングシステムとは

Messaging Brokers as a Single Point of Failure - Ciaran O’Donnell’s Blog

キューイングシステムとは
メッセージキューイング(MQ)とは - 意味をわかりやすく - IT用語辞典 e-Words

メッセージキューはその名の通りキュー(queue/待ち行列)構造となっており、複数のメッセージを預かる場合は先に書き込まれた方から順に読み出すFIFO(First-In First-Out:先入れ先出し)方式でメッセージを送り出す。受け渡しが完了したメッセージは消去され、次のメッセージの送受信に備える。

ブローカー、いわゆる仲介ですが、ブローカーなしのキューイングシステムとブローカーありのキューイングシステムがあり、ブローカーなしの場合、リクエストがあったらすぐにリクエストに答えるのに対し、ブローカーありは、タスクを受けて、バックグラウンドでサーバーに処理をスケジュールして、スケジュールに応じた処理を返すという感じです。

ブローカーなしだとすぐにレスポンスを返せるのですが、タスクが保存されていないので、何かあった場合は処理が完結しないのに対して、ブローカーありは処理に時間がかかるものの、タスクが保存されているので、何かあってもその処理を最後まで実行できます。

ZOZOTOWN カート投入の分散キューイングシステム 〜 プロダクションレディまでの歩み - ZOZO TECH BLOG
Amazon SQS(サーバーレスアプリのためのメッセージキューサービス)| AWS
Amazon Kinesis Data Streams(リアルタイム分析向け大規模データを収集)| AWS
Queue Storage | Microsoft Azure
Event Hubs - リアルタイムのデータ インジェスト | Microsoft Azure

Open Sourceなら

Kafka

Apache Kafka 入門 - Qiita

Rabbitmq

Celeryq

Nsq

まだまだ勉強できそうだ...
以上休日にゆるりと楽しんでいただきたい小話でした。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1