- 通常の画面・API通信もCloudflare Edge / Tunnelを通る。
- 業務データはPostgreSQL、認証秘密はCloudflare D1に分離。
- OpenAIへは加工後の必要情報を送信。ファイル本体は送らない。
確認範囲: リポジトリ内の実装・設定・資料から作成しています。実ホスト、Cloudflare、OpenAI、DB等の管理画面・実データ・稼働状態には接続していません。
エンジニア向け|システム構成図
実行単位、責任境界、通信方向、認証・認可、PostgreSQLの永続queue、外部連携をC4 Container相当で示します。
Deployment topology comparison
Blue-Green Deploymentと旧構成
固定HAProxyの背後で新旧slotを入れ替える方式と、単一combined containerを停止・再作成する方式を、同じ粒度で比較します。どちらが実ホストで採用されたかは未確認です。
Blue-Green Deployment構成
空slotのWebとAI Workerを準備し、readiness成功後にHAProxyを切り替え、旧slotをdrainする通常リリースの流れです。
- 平常時はAI Worker 1 container。更新中だけ新旧2 containersが並行稼働。
- 1 worker process内で生成・フィードバック・command反映の3 processorを実行。
- 旧Workerは旧releaseのjob・attempt・command・provider leaseが全て0になってから停止。
旧構成|単一combined runtime
Web/APIとAI Workerを1つのprocessで動かし、旧containerを停止・削除してから新containerを起動する比較対象です。
- 単一containerでNext.js Web/APIとdurable AI Workerを実行。
- 更新時に新旧runtimeを並行稼働させるslotやdrainはない。
- 永続jobはPostgreSQLに残るが、process停止中の受付・実行は連続しない。
Data flow and storage
データの流れと保存先
認証・セッション、画面・業務データ、AI処理、外部ファイルを分け、入力から処理、外部連携、永続保存までを示します。
- credential・OTP・同意はD1、業務・session・AI結果はPostgreSQLへ分離保存。
- AI入力はalias化・redaction後にOpenAIへ送信し、Responsesはstore:false。
- 外部ファイル本体はuploadせず、URLだけを保存してブラウザが直接取得。
Database operation comparison
DB操作・処理の新旧比較
業務PostgreSQLについて、2026-09-29時点の組織全体スナップショット方式と、現在の対象別クエリ・Entity Transaction方式を、read・write・AI Workerの同じ観点で比較します。
- cache missまたはrevision更新後は、組織内41業務表から全AppDataを構築。
- 異なるentityの更新も、同じ組織なら1本のadvisory transaction lockで直列化。
- lock待ちがconnectionを保持し、pool枯渇がread・認証・readinessへ波及。
現在|DB操作・処理
対象別クエリとEntity Transactionにより、必要な行だけを読み、同じentityの競合だけをrow lockまたはCASで制御します。
- 主要画面は対象ID・認可条件・cursor/LIMITを含む限定SQLへ移行。
- 通常更新はentity単位の短いtransaction。異なるentityは原則として互いを待たない。
- AI provider待機中はDB transactionを保持せず、pool手前のbounded admissionで過負荷を制御。