3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

人事システム「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

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

3
1
0

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
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?