David Wood
站在巨人的肩膀上#
有一個慈善組織的口號是:「我們站在前人的肩膀上,也為後人提供肩膀。」這句話同樣適用於軟體開發領域。每當一種新的架構、語言或平台崛起,我們都會感嘆「這就是解決所有程式問題的答案」。然而,它或許能解決今日的挑戰,明天又將面對新的難題。
網路為何如此成功#
目前,人類已知唯一能支撐數十億用戶、且對個別元件故障具備高度容錯性的軟體架構,就是全球資訊網(World Wide Web)。Web 是迄今人類建立規模最大、使用最廣、最為強健的資訊檢索系統。
Roy Fielding 是知名 Apache 開源專案的創始人之一,他深入研究了 Web 成功的原因,從早期理想化的 Web 架構中提煉出一套架構風格元素,也就是後來廣為人知的 REST(Representational State Transfer) 架構風格。
這套架構風格具備以下特質:
| 特質 | 說明 |
|---|---|
| 容錯性強 | 能夠承受特定元件的變更或故障 |
| 關注點分離 | 不再依賴特定程式語言的實作細節 |
| 共通語言 | 以語言中立的方式交換資訊請求 |
| 高度擴展性 | 能夠應對極大規模的使用量 |
| 無狀態(Stateless) | 每次請求都是獨立的 |
補充: 並非所有網站都遵循這些原則,但 Web 作為整體確實體現了這些設計思想。這些原則已成為後續無數架構創新的基礎。
Moore’s Law 帶來的新思維#
Moore’s Law 指出,積體電路上的電晶體數量每隔一段時間就會倍增,運算成本持續下降。這讓我們在系統設計時,不再需要過度優化硬體與軟體效率,而是可以追求更高的:
- 穩定性(Stability)
- 容錯性(Robustness)
- 可擴展性(Scalability)
- 彈性(Flexibility)
我們可以接受現有架構的低效率,因為它們只是未來創新的基礎,而非終點。
分散式系統的挑戰與價值#
分散式系統(Distributed Systems)如 Web,設計上本就困難重重。這或許是因為我們習慣以個人視角思考,傾向建立以單一節點為中心的系統。但 Web 已經向我們示範:
重點: 分散式系統雖然更難以概念化、也更難實作,但它能提供集中式系統無法企及的規模與韌性,值得投入心力去建構。
為未來設計彈性#
技術持續演進,Web 的形態也不斷改變。Fielding 所描述的簡單 Web,已與現代 Web 大相徑庭,未來的 Web 更將大為不同。
技巧: 在系統設計之初就將**彈性(Flexibility)**納入考量。唯有如此,才能打造出具有生命力、能夠適應未來新發現的軟體系統,為後來者提供站立的肩膀。
關鍵不在於追趕每一波技術浪潮,而在於建立一個能夠持續整合新思維的彈性基礎,讓我們的系統在技術演進中保持活力。