跳轉到

1.1 從自有伺服器到邊緣運算:網站託管的六十年演進#

本節目標#

  • 理解網站託管從「機房裡的實體機器」演進到「全球邊緣網路」的完整因果鏈。
  • 認識主機代管、VPS、雲端、CDN、邊緣運算五個世代的驅動力:成本、彈性與延遲。
  • 能用延遲的物理極限,解釋為什麼「把程式碼搬到使用者旁邊」是必然的終點。

為什麼要談歷史?#

託管技術的每一次跳躍,都不是發明了新東西,而是重新回答同一個問題:「一台伺服器,應該服務多少個使用者、放在哪裡、由誰維護?」理解這條因果鏈,你才會明白 Cloudflare 為什麼長成今天的樣子,而不是被行銷術語牽著走。

演進年代表#

年代 世代 代表技術 核心痛點 解法
1960s–80s 大型主機 IBM mainframe、終端機 硬體昂貴,分時共用 Time-sharing
1990s 自有伺服器 / IDC 自建機房、代管(colocation) 買機器貴、流量成長快 主機代管 renting
1998–2005 虛擬主機 / VPS VMware、Xen、OpenVZ 一台機器只服務一個客戶,利用率低 硬體虛擬化切片
2006–2010 雲端 IaaS AWS EC2/S3、GCP、Azure 採購週期長、尖峰浪費 隨用隨付、API 開機
1998 起 CDN Akamai、Cloudflare(2010) 跨洋延遲、源站壅塞 就近快取
2017–至今 邊緣運算 Cloudflare Workers、Lambda@Edge 來回源站的固定延遲 在 PoP 上跑程式碼

各世代的經濟學#

1. 主機代管時代(1990s):把機器寄放在別人的機房#

早期網站主人要自己買伺服器、拉專線、付電費、輪值半夜重開機。「主機代管」(colocation)的商業模式很直接:機房提供機架、電力、頻寬與冷氣,機器還是你的。

\[ \text{總成本} = \text{硬體折舊} + \text{機架租金} + \text{頻寬} + \text{人力(ON-CALL)} \]

問題在於產能必須依尖峰預留:日常利用率可能不到 20%,但雙十一式的流量尖峰一來就當機。

2. VPS 時代(1998–2005):虛擬化切片#

VMware 與 Xen 讓一台實體機切成多台虛擬機,每個客戶拿到「好像是一整台」的 root 權限。這是第一次把資源利用率變成 ISP 的利潤來源。當時最流行的組合是 LAMP(Linux + Apache + MySQL + PHP),一台 VPS 就能架完整網站。

因果驅動:VPS 解決了利用率,但沒解決兩件事 —— (1) 硬體故障仍要停機修復;(2) 擴容= 申請新機器 + 遷移,以「天」為單位。

3. 雲端 IaaS 時代(2006–):基礎設施變成 API#

AWS EC2(2006)的關鍵創新不是技術,而是商業介面:開一台機器變成一次 API 呼叫,計費以小時為單位。資本支出(CapEx)轉為營運支出(OpEx):

\[ \text{CapEx 模型:} C_{\text{total}} = C_{\text{buy}} \quad\Rightarrow\quad \text{OpEx 模型:} C_{\text{total}} = \sum_{t} u_t \cdot p \]

其中 \(u_t\) 是 \(t\) 時刻的使用量, \(p\) 是單價。對流量不確定的新創公司,這是生死之別。

因果驅動:雲端解決了「機器」,但你的機器仍集中在少數幾個 region。使用者從台北連到美東,光速決定了下限。

4. CDN 時代:對抗光速#

網路封包在光纖中約以 \(2 \times 10^8\) m/s 前進(折射率約 1.5)。台北到紐約直線距離約 12,000 km,單程純傳播延遲至少:

\[ d_{\min} = \frac{1.2 \times 10^7\ \text{m}}{2 \times 10^8\ \text{m/s}} = 60\ \text{ms} \]

考慮路由繞行(實際路徑常是直線的 1.5 倍以上)與每跳的設備處理延遲,實際 RTT 常落在 200ms 以上。HTTP/TLS 握手還要一個來回,這是物理定律,任何優化程式碼都省不掉。唯一的解法是縮短距離:

\[ \text{延遲} \approx 0.0015 \times \text{距離(km)} \times \text{繞行係數} \]

CDN 把內容快取(cache)到離使用者近的節點,跨洋往返只發生在「快取未命中」時。

5. 邊緣運算時代(2017–):程式碼跟著快取走#

傳統 CDN 只能快取「靜態檔案」,動態內容仍要回源站。邊緣運算的最後一步是:把你寫的程式碼部署到全球數百個節點上執行。Cloudflare Workers(2017)在每個 PoP 內嵌 V8 隔離執行個體,冷啟動以微秒計。

架構演進圖(ASCII)#

[1990s  自有/代管]                          使用者
                                          |
   使用者 ---- 網際網路 ---- [機房: 你的實體機]   全世界都連到同一台

[2000s  VPS]                               使用者
                                          |
   使用者 ---- 網際網路 --- [實體機: |VM1|VM2|VM3|]

[2006+  雲端 IaaS]                          使用者
                                          |
   使用者 ---- 網際網路 --- region: [EC2][EC2][RDS]
                              (機器有彈性,但位置固定)

[CDN]                                      使用者
                                          |        不快取的才回源
   使用者 -- 10ms -- [邊緣快取] ......... [源站 region]

[邊緣運算]                                  使用者
                                          |
   使用者 -- 5ms -- [PoP: 快取 + 你的程式碼]   多數請求不離開邊緣

一條貫穿的主軸#

每一代都在解上一代的瓶頸,並把「距離使用者之間的人工環節」剝掉一層。Cloudflare 的獨特之處在於:它同時是 CDN、DNS 供應商、雲端平台與安全閘道 —— 下一節將剖析它的運作原理。

小結與練習#

重點回顧

  1. 託管演進的驅動力依序是:利用率(VPS)→ 彈性(雲端)→ 延遲(CDN)→ 計算位置(邊緣)。
  2. 跨洋延遲有物理下限(光速 × 繞行係數),程式優化無法突破,唯有縮短距離。
  3. 邊緣運算的定義:在不屬於你機房的全球節點上執行你的程式碼。

練習

  1. 用 60ms 的計算方式(1.5 倍繞行係數)估算台北 → 新加坡、台北 → 倫敦的 RTT 下限,並與 ping 實測比較。
  2. 列出你的組織(或想像中的新創)在三個世代(VPS / 雲端 / 邊緣)下的月成本結構差異。
  3. 「雲端已經有 region 了,為什麼還需要邊緣?」用一句話回答。