圖片來源: 

iThome

「這底下的空間還大得很」,美國知名物理學家費因曼在1959年12月29日美國物理學會年會演講中的這句話,是他預言將來有一天可以從分子甚至是原子層級來組裝或製造產品的可能性。當可以控制更細微尺寸(如單顆分子,甚至是原子的奈米層級大小)的物體時,將會顛覆了人們對於物體性質的理解和運用。這場演講促成了後來改變全世界的奈米革命。人們可控制細膩度的改變,帶來了全新的變革。同樣的故事,也正在軟體世界發生。

從2011年開始,微服務(Microservices)這個新名詞開始流傳。這個名詞相對應的是傳統慣用的單套式應用程式模式(Monolithic Application),將一支應用程式視為一個個體,所有功能都放入這隻程式中執行。企業應用系統架構通常可分成3個部分:用戶端介面程式、資料庫和伺服器端的後端程式,通常這個後端程式就是一支單套式的應用程式。而微服務的設計哲學則是反其道而行,藉由許多小型的服務,組合成一套應用程式。

單套式應用將所有功能放入一個Process中執行,當要提升系統運算效能時,得把同一隻程式整個複製到多個伺服器上執行。而微服務式的應用程式,因為是採取分散式的程式架構,每一個功能所對應的微服務,都可以在個別的Process中執行,要擴充效能時,也只需要複製所需的功能服務,而不用複製一整套的應用程式。

其實,早在微服務架構流行之前,許多大型網路服務業者,如Google、Amazon早已用來打造全球性規模的分散式雲端服務。

由大量微型服務組合而成的一套應用系統,特徵是每一個微服務都是獨立執行,也能各自大量擴充,甚至可以用不同的程式語言來開發同一套應用所需的各個微服務。然而,微服務架構雖有彈性更大、擴充性更高的優點,但最大的考驗則是管理大量Process的複雜性,其挑戰遠大於在單一Process內執行單套式應用程式。尤其發展到了全球性規模的雲端服務,要打造出分散式微服務架構的應用,往往只有像Google這類大型軟體業者才有能力做到。

Docker問世,降低微服務門檻

不過,隨著Container容器技術的成熟,過去實作難度很高的微服務架構,卻也開始出現一絲曙光。Docker透過Container技術可以將任何小程式打包成可獨立執行的映像檔,發布到任何可執行Docker的平臺上執行。開發者只要將一支應用程式所需的功能程式打包成Docker映像檔,部署到伺服器就能成為提供不同功能的微服務。開發者就可以透過同一套工具、同一套技術來管理大量的微服務,而且不用自己維護這套「微服務架構技術」。也因此連Google都稱讚Docker找到了更好用、更方便的Container實作方式,因此轉而大力支援。

IT 架構轉型三階段

過去,企業要將一支程式或一套應用部署到多臺伺服器上提供大規模服務,除了自己設計高擴充性的專屬分散式架構之外,最簡單的方法是利用虛擬化技術,將應用系統放入虛擬機器(VM)中,就容易複製、擴充。

但是,Docker的問世,讓一般企業也有能力使用比虛擬機器更輕量化的Container來封裝應用,再彈性部署或快速擴充到各種環境上。

Container技術藉由OS核心來達到資源隔離,因而不需要依賴虛擬軟體層,也沒有虛擬機器必須安裝客座作業系統的問題,所以其映像檔的容量遠比虛擬機器的映像檔小,更容易透過網路傳輸到雲端環境部署,大幅節省運算資源。Container也因為輕量化的架構,生成的速度非常快,可在數秒內啟動Container,而不像啟動VM起碼是以分鐘計算,甚至可能數十分鐘。

Container除了在技術架構上有其天生的優勢,也因為Docker提供了一套可結合版本控管、可程式化的部署配置檔機制,讓開發人員和維運人員有了一個共同描述系統環境的工具,甚至搭配持續整合、持續部署工具,開發人員自己就能透過Container來調度資料中心的資源,因而使得Container大受歡迎。

Container帶來的新能力,讓企業得以更容易地控制更精細的微服務,以組成一個應用系統,而不只以虛擬機器為最小單位來管理應用程式。而天生就透過各種網路服務串接而組成的雲端應用程式,更適合運用微服務架構。這正是Google等級的大型網路服務供應商,打造全球性服務的關鍵架構。當你打開Gmail時,其實已經啟動了多個在Container內執行的微服務,來提供郵件服務。根據Google自己的估計,每一周啟用的Container就多達20億個,數量相當驚人。雖然一般企業不會出現上億個Container的管理需求,但要在整座資料中心內的多臺伺服器上部署數百到數千個Container,仍然不是一件容易的事。

而Container OS容器作業系統正是瞄準了大量部署Container而生的專用型作業系統。以最早推出Container OS的CoreOS為例,他們盡可能移除了不必要的Linux系統程式和元件,只保留OS核心和Docker所需執行環境,以及管理Docker叢集的工具,將Linux輕量化。這麼做的好處,一方面縮減作業系統的檔案大小,另一方面,內建元件和程式越少,發生安全漏洞或後續需要更新的機會也越少。CoreOS還設計了串流式系統更新機制,減少大規模部署的維護工作。

大幅瘦身之後,CoreOS映像檔只有161MB,遠小於動輒上GB的通用型Linux映像檔,但是,還是有人覺得這太大了。另一個由Citrix前CloudStack團隊成員所創立的RancherOS,誓言開發只為Docker設計的容器作業系統,結果映像檔大小僅22.4MB,拿下了最輕薄Container OS的封號。

面對Container OS的需求,幾家知名的Linux作業系統廠商自然也不會放過這個機會,紛紛推出自己的Container OS版本。Red Hat發起了Atomic專案、Ubuntu則推出了Snappy Ubuntu Core,而微軟開始擁抱Docker之後,也推出Windows Server的Nano Server部署版本,不過,微軟採用的是自行開發的Windows Container技術,以及這個技術增加了多租戶設計機制後重新命名的Hyper-V Container技術。

然而,更令人料想不到的是,VMware在4月底也加入Container OS的戰局,發表了自家輕量級Linux作業系統Photon。VMware不只想要卡位Container OS市場,更想結合自己在虛擬化平臺上的優勢,鼓吹在VM中部署Container的策略,用Container部署雲端原生應用,而用VM部署傳統應用系統的混合雲架構模式。

哪一套Container OS最能獲得企業青睞?這類產品才剛起步,市場尚未有定論。但這場由Docker掀起的微服務革命,讓企業建置和管理應用系統的精細度,有了全新的視野,就像多年前費因曼提出的新思維,揭開了人們探索奈米世界帶來的產業革命一樣。微服務架構的出現和成熟,有機會吹響IT架構奈米革命的號角,而眾廠商搶進的Container OS競賽,正是這場革命的第一個搶灘戰。

 

 

相關報導請參考:「Container三部曲(三)IT架構的新奈米革命:Container OS」「Container技術三部曲(二)不只快,還要更快──臺灣Docker應用案例的啟發」「Container技術三部曲(一)迎接下一個雲端火紅技術Docker」


Advertisement

更多 iThome相關內容