koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

小売店のレジをジョブワーカーに見立てる

ITエンジニアは現実世界の物事をITシステムに例えがち。

先日はコンビニのレジ待ちをしているうちに「レジってキューメッセージの処理ワーカーだよなー」などと考えていた。

  • 客はキューメッセージ
    • 客の列の具合はキューのキャパシティ
    • 特定メッセージの優先列運用を見かけた
      • 家電量販店でポケモンカードゲームの専用列、予約商品専用列があった
        • これは優先度が低いメッセージの例(レジ一つを占有する形を取っていた)
      • ルフレジ専用列なんかもある
        • これはワーカーも別だが
  • レジの数はワーカーの数
    • スケールアウトできる
    • スケールしすぎるとメッセージの処理効率は落ちる
      • 「こちらでも精算できます」と声をかけないとメッセージが処理されに来ないなど
  • レジの性能や店員の熟練度はワーカーの処理性能
    • スケールアップできる
    • スケールアップには限界がある
      • どんなにベテランの店員でも無限に高速かはされない
  • 一部処理を別のワーカーに委譲
    • 商品の読み取り後はお支払いセルフレ
    • コーヒーのカップだけ決済して注ぐのはセルフ
    • 温め中に保留して次のメッセージを処理
      • これはちょっと違う概念かもしれない、I/O待ち的なことをしているだけでメッセージの処理は戻ってくる
        • Node.js的な? 非同期処理モデル

ざっと書き下してみたけれど、なかかなそれっぽい例えをできたのではないかなと思う。

落ちなし!