勉強用シンプル仮想待機室
TARGET_MAX_ACTIVE_SESSIONSでターゲットに入場できる同時アクティブセッション数を設定- Valkeyの
session:activeセットを確認し、上限に達していれば新しいユーザーは待機列に飛ばす - セッションには
SESSION_TTL_SECONDSで指定したTTLを付与、POST /waiting-room/session/heartbeatでハートビートを送ると延長 - TTLが切れるとセッションを削除し、枠を開ける
- 既存セッションを持つユーザーが再アクセスした場合は即入場扱いとなり、ハートビートが届く限り枠は維持
.
├─ cmd/waiting-room # エントリポイント(main)
├─ internal
│ ├─ app # 依存注入・HTTP サーバー・ルーター
│ ├─ config # 環境変数読み込み
│ ├─ middleware # 共通ミドルウェア
│ └─ waiting-room
│ ├─ controllers # HTTP ハンドラ(API/ブラウザ向け)
│ ├─ domain # エンティティとドメインリポジトリ定義
│ ├─ infrastructure # Valkey など外部リソース実装
│ ├─ presenters # レスポンス生成
│ ├─ services # ドメインサービス(セッション/チケット)
│ └─ usecases # ビジネスロジック(待機室入場など)
├─ apps/sample-target-app # デモ用ターゲットアプリ
└─ Dockerfile / docker-compose.yml / Makefile など
