
54
| 第四章
雲端挑戰
身為改用雲端技術的開發者,你最主要的挑戰不但包括了解新的基礎設施元件,也要知
道這些技術的特點與性能。你要花時間了解將軟體開放給互聯電腦的影響,你幾乎無時
無刻都在建構分散式系統。你也要讓 app 在網路環境中的性能與在本地開發機器上一樣
好。
機械同理心:
Daniel
的雲端初體驗
我剛開始使用雲端技術時,遇到很大的學習障礙,因為這代表本地機器基
礎設施的特性與性能可能無法與生產環境一致,而且是在很大程度上!尤
其是在 2010 年代早期的一個專案,我花了一星期的時間寫好一個產品饋
送分析 app,這個 app 會將大量的臨時資料寫入本地儲存器,它在我的
開發機器上表現良好(使用本地連接的 SSD 磁碟),但是當我將程式部署
在生產環境時,它的性能下降了近兩個數量級,因為雲端實例的區塊儲存
器是透過網路來溝通的,有全然不同的性能特性!
因為 IaaS 平台的硬體特性(與規模),各個元件故障的機率相對較高。因此,你必須設
計、建構與測試能夠處理已知故障模式的彈性 app,例如,多數的雲端計算實例都是暫
態的,可能會意外停止,你的 app 必須優雅地處理這種情況。Amazon 的 CTO,Werner
Vogels,有一句名言:“在雲端的東西隨時都會故障。”你可能會想,為什麼一位雲端供
應商的 CTO 會講出這句話?但他想要表達的意思是:要取得公用雲端帶來的好處(隨
需求而變,以及使用可大規模運行的基礎設施帶來的高經濟效益)是要付出代價的,這
個代價就是個別元件的可靠性。
雲端的暫態性質: ...