從專用機器到分散式系統#
系統開發的演進歷程:
- 專用機器時代:最初的機器為特定目的而造——計算火砲射表、潮汐、破解密碼等精確而繁複的數學應用。
- 通用可程式化機器:專用機器逐漸演化為通用機器,再透過分時作業系統(time-sharing operating systems)從一次執行一個程式進化為在單機上執行多個程式——但機器之間仍彼此獨立。
- 主從式架構(client-server architecture):機器逐漸被網路連接起來,桌上型的低效能機器得以借用另一個房間或大樓裡大型主機的算力。主從式程式設計雖比單機程式複雜一些,但仍容易理解:用戶端發出請求,伺服器端處理請求。
- 分散式系統時代:2000 年代初,網際網路興起與大規模資料中心(由數千台相對低價的通用電腦組成網路)促成分散式系統的普及。與主從式架構不同,分散式系統由多個不同應用程式跑在不同機器上、或許多副本(replicas)散布在不同機器上協同運作,實現如網頁搜尋或零售銷售平台等系統。
分散式系統的利與弊#
- 優點:結構得當時,分散式系統天生更可靠;架構正確時,也能為打造這些系統的工程團隊帶來更具擴展性的組織模式。
- 代價:設計、建構與正確除錯都顯著更複雜;所需的工程能力遠高於行動或網頁前端等單機應用。
儘管代價高昂,對可靠分散式系統的需求仍持續成長,因此建構它們所需的工具、模式與實踐的需求也隨之增加。幸運的是,容器、容器映像檔(container image)與容器編排器近年的普及,正是因為它們是可靠分散式系統的基礎與建構區塊——以此為地基,我們得以建立一套模式與可重用元件的工具箱,更可靠、更有效率地建構系統。