Speakeasy は全てのサービスを Cloudflare Workers 上にデプロイしています。以下の Cloudflare サービスを組み合わせてインフラを構成しています。
全サービスは aws:ap-northeast-1(東京リージョン)にデプロイされ、Observability(ログ・トレース)が有効化されています。
| 環境 | ドメインパターン | 例 |
|---|
| 本番 | *.plfumg.com | counter.plfumg.com, door.plfumg.com |
| 開発 | *.plfumg.net | counter.plfumg.net, door.plfumg.net |
| ローカル | localhost:* | localhost:5173 |
| サービス | 本番 | 開発 |
|---|
| Counter | counter.plfumg.com | counter.plfumg.net |
| Penthouse | penthouse.plfumg.com | penthouse.plfumg.net |
| Door | door.plfumg.com | door.plfumg.net |
| Tap | tap.plfumg.com | tap.plfumg.net |
| Card | card.plfumg.com | — |
| Developer | developer.plfumg.com | developer.plfumg.net |
バックエンドサービス(Proof, Fizz, Vintage, Bell, Base)はカスタムドメインを持たず、Service Binding 経由でのみアクセスされます。
PostgreSQL への接続を Cloudflare エッジからプーリングするサービスです。
| Hyperdrive | 接続先 | 使用サービス |
|---|
| CELLAR_HYPERDRIVE | Prisma Postgres(業務DB) | Fizz, Vintage, Bell, Base, Tap |
| VAULT_HYPERDRIVE | Prisma Postgres(認証DB) | Proof |
| PROOF_HYPERDRIVE | Prisma Postgres(認証DB) | Vintage, Fizz, Bell, Base |
注意: VAULT_HYPERDRIVE と PROOF_HYPERDRIVE は同じ PostgreSQL データベースを指しますが、サービスごとにバインディング名が異なります。
WebSocket 接続管理に使用します。Fizz サービスのみが使用します。
| クラス名 | 役割 |
|---|
UserInbox | ユーザーごとの WebSocket 接続管理。メッセージ・通知の配信先 |
StoreOnlineUsers | 店舗のオンラインユーザー管理。在席状態のブロードキャスト |
非同期処理に使用します。
| キュー名 | プロデューサー | コンシューマー | 設定 |
|---|
broadcast-queue | Fizz | Fizz | batch: 100, timeout: 30s, retry: 0, DLQ: broadcast-dlq |
push-notifications | Bell | Bell | batch: 10, timeout: 1s, retry: 3, DLQ: push-notifications-dlq |
notification-queue | Fizz | Bell | batch: 10, timeout: 1s, retry: 3 |
- broadcast-queue: 一括配信メッセージの処理。Fizz の Cron トリガーが SCHEDULED → QUEUED の移行を担当
- push-notifications: Web Push 通知の送信
- notification-queue: マルチチャネル通知の分配(PUSH / LINE / EMAIL / BOX)
| Namespace | 使用サービス | 用途 |
|---|
SESSION_STORAGE | Proof | better-auth セッションの KV 二次キャッシュ |
CONTACT_GROUPS | Vintage | 連絡先グループの定義データ |
| Bucket | 使用サービス | 用途 |
|---|
speakeasy-chat-files | Fizz | チャットの添付ファイル(画像・ドキュメント等) |
| Dataset | 使用サービス | 用途 |
|---|
speakeasy_db_operations | Penthouse, Vintage, Tap | データベース操作のトラッキング |
| サービス | スケジュール | 処理内容 |
|---|
| Fizz | 0 * * * *(毎時) | SCHEDULED 状態の一括配信を QUEUED に移行(配信時刻の8時間前から) |
| Bell | 0 * * * *(毎時) | スケジュール済みプッシュ通知の処理 |
全サービスで Cloudflare Workers Observability が有効化されています。
"logs": { "enabled": true, "invocation_logs": true, "head_sampling_rate": 1 },
"traces": { "enabled": true, "head_sampling_rate": 1 }
- ログ: 全リクエストの呼び出しログ(100% サンプリング)
- トレース: 分散トレーシング(100% サンプリング)