1.3 Cloudflare 服務全景#
本節目標#
- 建立 Cloudflare 全域服務的地圖:Pages、Workers、D1、KV、R2、Durable Objects、Tunnel、Zero Trust。
- 用「傳統 VPS/LAMP 對照表」理解每一項服務取代了什麼、省掉了什麼。
- 看懂免費 / 付費方案的界線,選出本書所需的組合。
全景圖#
flowchart TB
subgraph 入口["全球入口 (1.2 節)"]
CDN[CDN 快取] --- WAF[WAF / DDoS 防護] --- DNS[DNS 權威]
end
subgraph 計算["邊緣計算層"]
PAGES[Pages: 靜態網站託管]
WK[Workers: 邊緣函數]
DO[Durable Objects: 有狀態協調]
end
subgraph 資料["邊緣資料層"]
KV[KV: 全域鍵值讀取]
R2[R2: 物件儲存 零出口費]
D1[D1: SQLite 資料庫]
end
subgraph 連線["私有化與安全"]
TUN[Cloudflare Tunnel: 內網穿透]
ZT[Zero Trust: 零信任存取]
end
入口 --> 計算 --> 資料
TUN -.不對外開 IP.- 入口各服務一句話定位#
| 服務 | 是什麼 | 傳統對應物 | 免費額度重點 |
|---|---|---|---|
| Pages | 靜態網站 + 前端框架託管,Git push 即部署 | Nginx 靜態檔 + CI | 無限頻寬、500 次/月建置 |
| Workers | 邊緣執行的 JavaScript/TS/Python/WASM 函數 | Express / PM2 / 負載平衡器 | 10 萬請求/天 |
| KV | 高讀取、最終一致的鍵值儲存 | Redis(唯讀快取場景) | 10 萬讀/天 |
| R2 | S3 相容物件儲存,出口流量免費 | S3(出口 0.09 USD/GB) | 10 GB/月 |
| D1 | 依 region 放置的 SQLite 資料庫 | MySQL/PostgreSQL VPS | 5 GB 儲存、500 萬列讀/天 |
| Durable Objects | 單實例有狀態物件,強一致協調 | 你自建的單點服務(如 WebSocket 房間) | 隨 Workers 付費方案 |
| Tunnel | 免開連接埠、免公網 IP,把內網服務接上全球網路 | OpenVPN + 反向代理 + 埠轉發 | 免費可多用戶 |
| Zero Trust | 身分驅動的存取控制(取代 VPN) | OpenVPN + LDAP + bastion | 50 使用者免費 |
與傳統 LAMP/VPS 對比#
| 維度 | VPS + LAMP | Cloudflare 全家桶 |
|---|---|---|
| 作業系統 | 自己打 patch | 不需管(隔離層交給平台) |
| Web 伺服器 | 安裝/調校 Nginx/Apache | 平台內建(Pages 直接吃靜態檔) |
| TLS 憑證 | certbot 申請、每 90 天續約 | 內建自動佈簽 |
| 擴容 | 買機器、改 nginx worker | 自動水平擴展,按請求計費 |
| 冷啟動 | 程序常駐(RAM 固定成本) | Workers V8 隔離,微秒級 |
| 資料庫 | 自架 MySQL + 備份腳本 | D1 / R2 / KV 全託管 |
| 對外攻擊面 | 開放 80/443/22 | 預設關閉入站(Tunnel 可全免) |
| 計費 | 固定月租(閒置也付錢) | 免費層起跳,用量計費 |
| 學習曲線 | 全控制、責任自負 | 抽象層高、可移植性要留意 |
核心差異是一句話:VPS 賣你「一台機器」,Cloudflare 賣你「部署的結果」。前者你管理行程與硬體,後者你只寫程式碼。
計算模型的理論差異#
傳統伺服器 = 常駐行程模型,成本與時間掛鉤(不接單也在燒錢):
\[ C_{\text{VPS}} = \text{固定月租} \approx c \cdot t \]
Workers = 請求驅動模型,成本與請求量與 CPU 時間掛鉤:
\[ C_{\text{Workers}} = \sum_{\text{requests}} (\text{CPU time}) \cdot p \leq Q \cdot c_{\max} \]
低流量時 Cloudflare 近乎免費;高流量時成本線性成長、且無備援閒置浪费。這對個人網站與中小專案是結構性的成本優勢。
本書選用的組合#
後續章節將依難度遞增使用:
- Pages 部署靜態網站(第 1 章)。
- Workers 加入 API 與動態邏輯(第 2 章)。
- KV / R2 / D1 處理快取、檔案與結構化資料(第 3 章)。
- Durable Objects 打造即時協作(第 4 章)。
- Tunnel + Zero Trust 打通內網服務(第 5 章)。
選型判斷原則:先問資料的一致性與就近性需求——統計素材用 KV(最終一致即夠),帳務用 D1(強一致),大型二進位用 R2,跨區域單點協调用 Durable Objects。
小結與練習#
重點回顧
- Cloudflare 全景 = 全球入口(CDN/DNS/WAF)+ 邊緣計算+ 邊緣資料(KV/R2/D1)+ 連線與安全。
- 與 VPS 的本質差別:從「管機器」變成「管程式碼」,成本從固定變成隨用量。
- R2 免出口費對「大流量讀取檔案」的網站是殺手級差異。
練習
- 假設你的作品集網站每月 50 萬請求、20 GB 出口流量,分別以 (a) 5 USD/month VPS (b) Cloudflare 免費層估算成本,並列出你放棄了什麼控制權。
- 判斷以下需求該用 KV、D1 還是 R2:(a) 限流計數器 (b) 部落格文章 (c) 縮圖檔案 (d) 使用者登入資料。
- 畫出「傳統 LAMP」與「Cloudflare 全家桶」兩張架構圖,標注兩者你需要負責維運的節點數量差異。