原本任職於Google的Kubernetes共同創辦人Brendan Burns,自2016年加入微軟開始帶領Azure等開發專案朝向應用程式容器化方向發展,以實際行動證明擁抱開源的決心,例如SQL Server 2017首度支援Linux作業系統所建置的容器環境,2018年最新發布的Windows Server 2019版本,不僅承襲2016版整合Kubernetes(K8S)的特性,更進而強化容器環境中關鍵的網路層機制,以確保可管理性與安全性。
在微軟總部的官方部落格上,以《Top 10 Networking Features in Windows Server 2019》為題發布的文章中,引述美國聯合市場研究(Allied Market Research)調查數據指出,2016年全球應用容器市場規模為6.98億美元,預計2025年將達到82億美元,從2018年到2025年的年複合成長率為31.8%,顯見其重要性已被公認是幫助現代企業提升用戶體驗、數位化競爭力不可或缺的IT建置。
台灣微軟資深協理馮立偉說明,原生K8S僅能建置在Linux作業系統,自從1.5版本開始支援Windows作業系統,已可搭配Windows Server 2016系統內建的Docker Engine來調度Windows容器。
儘管地端的K8S已可調度Windows容器,問題是K8S安裝程序相當繁瑣,且是基於Linux作業系統,Windows技術人員大多不熟悉,因此在企業實際測試過程中經常遭遇到技能方面的障礙。「微軟現階段正積極發展解決方案,甚至是未來Windows Server也會發展簡化設定配置機制,由Brendan Burns帶領的研發團隊,勢必會逐步發展開源整合能力,讓Linux與Windows系統開發的應用程式,得以透過統一調度工具配置與監看運行狀態。」馮立偉強調。
微服務架構於容器推動DevOps落實
|
▲台灣微軟資深協理馮立偉指出,微軟逐步擁抱開放,不僅只支援開放原始碼,更重要的是把精神帶入產品研發團隊,例如Nano Server不僅較Linux更輕量,同時還可支援許多開放陣營的開發工具。 |
近年來在市場上推廣容器技術的經驗,馮立偉發現,確實有許多企業正在評估測試,實際部署到線上環境的企業卻還不多,主要因素在於企業用戶多數只希望把現有應用系統遷移到新技術環境,畢竟現階段在同業中採用新興應用服務架構成功案例相當少見,若貿然投入,萬一出現問題,恐陷入缺乏充足案例可參考、無法快速排除的窘境,相較之下,傳統方式雖然效率不彰,至少穩定可行。
「之所以很多應用系統無法遷移,主要因素是早期開發時就已綁定特定作業系統,若要遷移必須重新開發。但其實未必得架構於無法掌握的環境,新版Windows Server 2019作業系統也可以實作。」除非是全新開發的系統,選用容器化運行環境彈性確實比較大,或許可解決作業系統停止支援的問題,但是絕對無法保障可一勞永逸。畢竟是新型態架構模式,開發與維運的工作流程差距甚遠,勢必得經果改造與學習新技能才得以實踐。
因此比起容器環境,微軟更著力於推廣微服務架構,而容器運行環境只是其中一種。馮立偉進一步說明,微服務最大特點就是把怪獸級的應用系統拆解成小型服務,各自獨立運行、互不干擾,利於維護與更新程式碼,解決過去只要有版本更新,通常必須整個應用系統作業環境重新開機才得以生效的不便。
現階段全球大量採用容器環境的企業莫過於Google,微服務數量可能多達上億,更新時只要小規模的異動,才得以最大程度減少服務中斷比率。此外,新創公司亦是微服務主要的採用族群。反觀多數大型企業,即便是新的開發專案,仍舊維持三層式應用架構,未來若欲全面推廣,首要關鍵是承接開發專案的廠商,必須大多數已掌握微服務開發技術能力。
儘管如此,馮立偉認為微服務架構絕對是未來應用趨勢,可帶來的敏捷度、擴充能力確實較傳統建置於Hypervisor之上的虛擬化主機更高,只是對於內部系統的工作負載較為固定的應用場景,則無法發揮效益。目前最適合的場景,主要是網路服務供應商,尤其是最終用戶為消費大眾,經常會面臨瞬間流量暴增,採以秒級的擴展平台才得以彰顯價值。
採用微服務架構於容器環境,除了較適合特定場景的應用以外,對於多數企業而言,則是可藉此來推動DevOps的落實。以往開發人員在筆電或桌機撰寫完成程式碼,經過整合測試操作驗證可行性,交付給IT維運人員後,必須在伺服器建置應用程式運行的環境,通常需要時間部署。過程中,若IT人員質疑應用程式有問題,開發者則反駁整合測試並未發現,兩組團隊彼此不具備對方的知識技能,在協同合作時難免會出現矛盾。
「不可諱言,容器環境確實可提升兩組團隊協同合作,當開發人員把應用程式封裝成為容器之後,IT人員僅須執行簡單的指令啟用即可上線,有助於降低開發與維運之間的衝突。」馮立偉強調。
為.NET陣營打造容器隔離運行環境
近年來微軟擁抱開放原始碼,較多是針對雲端平台,畢竟是以服務方式提供,不論是既有的Windows作業系統,抑或是習慣用Linux的用戶,皆必須得以借助雲端服務來達到工作目標。至於地端,在Windows Server 2019發布的規格中,已無須透過Hypervisor層,可以同時執行原生Linux與Windows核心的容器。之所以有此能力,主要是在Windows Server系統中內嵌了Linux子系統(WSL)。
「過去應用系統建置在硬體層虛擬化的Hypervisor環境,啟用虛擬主機也必須安裝作業系統,容器環境則屬於作業系統層的虛擬化,僅須基於應用程式打包,系統核心則是彼此分享,因此較虛擬主機更加輕量。Windows作業系統安裝好就佔用了10G的儲存空間,換成容器環境,可能僅需採用不到2M的檔案。」馮立偉說。
必須留意的是,容器彼此共享系統核心的作法,如若其中一個出問題導致函式庫損毀,恐會影響到整體運行。隨著技術持續演進,微軟開始增添防護機制,由於作業系統層的容器是整合Docker Engine來提供,利用的是Windows Server系統特性,為了避免系統核心損毀導致應用服務中斷,亦可運用Hyper-V的特性建置,以隔離的模式獨立運行。
「Windows Server 2019可同時支援Windows Server容器以及Hyper-V容器,可說是微軟最獨特之處。前者如同Linux環境的容器架構,後者則是運用Hyper-V的特性,讓容器擁有專屬系統核心檔案,並非在虛擬主機內運行。微軟設計提供兩種容器環境模式,主要是基於同時擁有作業系統與虛擬化技術的優勢,更重要的是,為.NET陣營的開發人員,打造新型態技術運行的架構。」馮立偉說。若以啟動時間來看,Windows Server容器大約為1秒,Hyper-V容器必須再執行封裝動作因此大約為3.3秒,相較於虛擬主機啟動可能將近一分鐘的時間,對於追求速度的應用系統而言,已可大幅地改善瞬間啟用的問題。