コンテンツにスキップ

検索はプロダクションビルドでのみ利用可能です。 ローカルでテストするには、サイトをビルドしてプレビューしてください。

インフラストラクチャ

Speakeasy は全てのサービスを Cloudflare Workers 上にデプロイしています。以下の Cloudflare サービスを組み合わせてインフラを構成しています。


全サービスは aws:ap-northeast-1(東京リージョン)にデプロイされ、Observability(ログ・トレース)が有効化されています。


環境ドメインパターン
本番*.plfumg.comcounter.plfumg.com, door.plfumg.com
開発*.plfumg.netcounter.plfumg.net, door.plfumg.net
ローカルlocalhost:*localhost:5173
サービス本番開発
Countercounter.plfumg.comcounter.plfumg.net
Penthousepenthouse.plfumg.compenthouse.plfumg.net
Doordoor.plfumg.comdoor.plfumg.net
Taptap.plfumg.comtap.plfumg.net
Cardcard.plfumg.com
Developerdeveloper.plfumg.comdeveloper.plfumg.net

バックエンドサービス(Proof, Fizz, Vintage, Bell, Base)はカスタムドメインを持たず、Service Binding 経由でのみアクセスされます。


PostgreSQL への接続を Cloudflare エッジからプーリングするサービスです。

Hyperdrive接続先使用サービス
CELLAR_HYPERDRIVEPrisma Postgres(業務DB)Fizz, Vintage, Bell, Base, Tap
VAULT_HYPERDRIVEPrisma Postgres(認証DB)Proof
PROOF_HYPERDRIVEPrisma Postgres(認証DB)Vintage, Fizz, Bell, Base

注意: VAULT_HYPERDRIVEPROOF_HYPERDRIVE は同じ PostgreSQL データベースを指しますが、サービスごとにバインディング名が異なります。

Durable Objects(ステートフルオブジェクト)

Section titled “Durable Objects(ステートフルオブジェクト)”

WebSocket 接続管理に使用します。Fizz サービスのみが使用します。

クラス名役割
UserInboxユーザーごとの WebSocket 接続管理。メッセージ・通知の配信先
StoreOnlineUsers店舗のオンラインユーザー管理。在席状態のブロードキャスト

非同期処理に使用します。

キュー名プロデューサーコンシューマー設定
broadcast-queueFizzFizzbatch: 100, timeout: 30s, retry: 0, DLQ: broadcast-dlq
push-notificationsBellBellbatch: 10, timeout: 1s, retry: 3, DLQ: push-notifications-dlq
notification-queueFizzBellbatch: 10, timeout: 1s, retry: 3
  • broadcast-queue: 一括配信メッセージの処理。Fizz の Cron トリガーが SCHEDULED → QUEUED の移行を担当
  • push-notifications: Web Push 通知の送信
  • notification-queue: マルチチャネル通知の分配(PUSH / LINE / EMAIL / BOX)
Namespace使用サービス用途
SESSION_STORAGEProofbetter-auth セッションの KV 二次キャッシュ
CONTACT_GROUPSVintage連絡先グループの定義データ
Bucket使用サービス用途
speakeasy-chat-filesFizzチャットの添付ファイル(画像・ドキュメント等)
Dataset使用サービス用途
speakeasy_db_operationsPenthouse, Vintage, Tapデータベース操作のトラッキング

サービススケジュール処理内容
Fizz0 * * * *(毎時)SCHEDULED 状態の一括配信を QUEUED に移行(配信時刻の8時間前から)
Bell0 * * * *(毎時)スケジュール済みプッシュ通知の処理

全サービスで Cloudflare Workers Observability が有効化されています。

{
"observability": {
"enabled": true,
"logs": { "enabled": true, "invocation_logs": true, "head_sampling_rate": 1 },
"traces": { "enabled": true, "head_sampling_rate": 1 }
}
}
  • ログ: 全リクエストの呼び出しログ(100% サンプリング)
  • トレース: 分散トレーシング(100% サンプリング)