發表文章

重新開發:我們正在打造下一代網站架構

雙籠體育的舊版後端建立在 Prisma + NextAuth + Next.js 之上,部署在 Vercel 平台。這套組合在開發初期相當順暢——工具成熟、生態豐富、文件齊全。

但隨著流量進入,一個致命的問題開始浮現:Prisma 的冷啟動。每當 Serverless 函式從閒置狀態喚醒,Prisma Client 的初始化時間就會讓請求延遲暴增,同時大量消耗 Vercel 的 Active CPU 資源,成本持續攀升,使用者體驗也大打折扣。

⚠ 核心痛點

Prisma 在 Serverless 環境的冷啟動問題,導致 Vercel Active CPU 使用量異常偏高,並在尖峰時段造成明顯的回應延遲。這不是可以透過調參解決的問題——它是架構層面的根本限制。

我們最初的想法是把服務遷移到 Cloudflare Workers 上,利用邊緣運算的特性來解決冷啟動問題。然而,現有技術棧的每一個核心元件都成了阻礙:

Prisma 不適合 Edge Runtime

Prisma Client 依賴 Node.js 原生模組,無法在 Cloudflare Workers 的 V8 隔離環境中運行。雖然後來推出了 Prisma Accelerate,但引入了額外的複雜度與成本。

Next.js App Router 的邊緣限制

Next.js 的全端框架設計以 Node.js 為基礎,即便有 Edge Runtime 選項,許多套件和功能仍有相容性問題,遷移成本極高。

NextAuth 的邊緣相容性問題

NextAuth 的部分依賴項無法在 Edge Runtime 運行,且 Session 管理的設計假設了傳統 Node.js 環境。

技術決策

重新選擇每一個環節

既然無法透過打補丁解決問題,我們決定從架構層面重新出發,選擇每個環節都為邊緣運算原生設計的工具。

舊架構
Next.js(全端)
Prisma ORM
NextAuth
Vercel Serverless
新架構
TanStack Start
Drizzle ORM
Better Auth
Cloudflare Workers

效能數據

冷啟動延遲:平台比較

Cloudflare Workers vs Vercel Functions(ms,數值越低越好)

Cloudflare Workers 邊緣運算
平均 <10ms
最高 50ms
avg <10 ms max 50 ms
Vercel Functions Serverless
平均 200ms
1.5s
avg 200 ms max 1.5s

* 橫軸以 Vercel 最大值 1500ms 為 100%。Cloudflare Workers 在 V8 隔離架構下幾乎消除冷啟動。

ORM 比較

Prisma vs Drizzle:啟動時間 & Bundle Size

Cold Start(Serverless)

Prisma
80–150 ms
Drizzle
50–100 ms

以 Prisma 最大值 150ms 為基準

Bundle Size

Prisma
~1.6 MB
Drizzle
~57 KB

體積縮減 96.5%,以 Prisma 1.6MB 為基準

TanStack Start 是以 TanStack Router 為核心的全端框架,天生與 Vite 整合,對邊緣環境友好,且不綁定任何特定部署平台。Drizzle ORM 輕量、型別安全,能夠在 Edge Runtime 中無縫運作,沒有 Prisma 那樣的初始化負擔。Better Auth 則是專為現代 TypeScript 專案設計的認證解決方案,完整支援邊緣環境,設定彈性也更高。

這三者組合在一起,讓我們的後端可以真正部署在 Cloudflare Workers 上,享受全球邊緣網路的低延遲,同時從根本上消除了冷啟動問題。

開發過程

AI 作為加速器:Claude Opus 4.8 的實際用量

這次重建不只是技術選型的改變,也是我們開發方式的一次實驗。我們大量借助 AI 加速整個遷移過程——從架構討論、程式碼生成,到技術文件的整理,Claude Opus 4.8 幾乎全程參與其中。

以下是這次專案實際的 Token 使用數據與總花費:

Claude Opus 4.8 — 本次專案用量

201k
Input
Tokens
19M
Output
Tokens
785M
Cache Read
Tokens
20.2M
Cache Write
Tokens
總花費 $18366.34TWD

龐大的 Cache Read 數字反映了我們的使用方式:我們把專案的技術規格、資料庫 Schema 以及設計決策文件都放進 Context 中,讓每一次對話都能在完整的專案理解下進行。這讓 AI 輔助的品質大幅提升,也避免了每次都要重新解釋背景的摩擦。

AI 的加入讓開發週期顯著縮短——尤其是在研究新框架、處理型別問題,以及撰寫遷移腳本這幾個環節,省下了大量時間。

接下來

幾個月後見

新版後端目前仍在開發與測試階段。我們正在確保每個功能都在新架構下穩定運行,也在驗證 Cloudflare Workers 環境的各種邊際情況。

架構決策完成

完成 TanStack Start + Drizzle + Better Auth 的技術選型與可行性驗證。

核心功能開發中

主要業務邏輯正在向新架構遷移,包含用戶認證、資料層以及 API 端點。

測試與收尾

全面整合測試、效能基準測試,以及邊緣環境的相容性驗證。

重新上線

幾個月後,全新的雙籠體育後端將正式對外開放。

我們知道等待很難受。但這次我們想把事情做對,而不只是做快。新版的雙籠體育不只是技術棧的升級,也是整個產品體驗的一次重新出發。

感謝一直支持雙籠體育的朋友們。我們很快見。