【導(dǎo)讀】容器技術(shù)這幾年很熱,但容器的生產(chǎn)應(yīng)用在傳統(tǒng)行業(yè)卻遇到很多困難。是容器技術(shù)不好嗎?容器云平臺的前景發(fā)展究竟取決于什么?本文作者提出了自己的觀點,歡迎大家探討。
【作者】汪照輝,中國銀河證券架構(gòu)師,專注于容器云、微服務(wù)、DevOps、數(shù)據(jù)治理、數(shù)字化轉(zhuǎn)型等領(lǐng)域,對相關(guān)技術(shù)有獨特的理解和見解。擅長于軟件規(guī)劃和設(shè)計,提出的“平臺融合”的觀點越來越得到認(rèn)同和事實證明。發(fā)表了眾多技術(shù)文章探討容器平臺建設(shè)、微服務(wù)技術(shù)、DevOps、數(shù)字化轉(zhuǎn)型、數(shù)據(jù)治理、中臺建設(shè)等內(nèi)容,受到了廣泛關(guān)注和肯定。個人公眾號:技術(shù)思維創(chuàng)新
雖然容器技術(shù)這幾年很熱,但容器的生產(chǎn)應(yīng)用在傳統(tǒng)行業(yè)卻遲遲未成為主流。在多數(shù)采用了容器技術(shù)的公司還只是測試和運行并不重要的系統(tǒng)。究其原因,容器自身特性和目前的技術(shù)水平使其當(dāng)前還是比較小眾化的產(chǎn)品,對于大多數(shù)應(yīng)用場景的需求卻難以滿足。是容器技術(shù)不好嗎?似乎也不是。從Google若干年前就使用Borg的情況看,容器的應(yīng)用場景也是很多的。但是在互聯(lián)網(wǎng)企業(yè)中的應(yīng)用場景和傳統(tǒng)企業(yè)的應(yīng)用場景是不一樣的,不能直接照搬過來,必須要考慮傳統(tǒng)行業(yè)的實際需求。除了傳統(tǒng)行業(yè)技術(shù)人員的自身容器技術(shù)認(rèn)知、組織架構(gòu)和基礎(chǔ)設(shè)施建設(shè)外,容器云平臺產(chǎn)品化的能力目前也未達到生產(chǎn)就緒的條件。
容器云平臺的前景發(fā)展取決于能多大程度上滿足生產(chǎn)就緒的要求,容器云平臺必須真正提升到容器化PaaS平臺的層級,使其成為能支撐企業(yè)級應(yīng)用場景,才是私有化容器云生產(chǎn)就緒發(fā)展的可行途徑。
一、對容器技術(shù)的認(rèn)知局限
并不像互聯(lián)網(wǎng)公司,傳統(tǒng)行業(yè)內(nèi)的技術(shù)人員對容器等技術(shù)的認(rèn)知大部分還處于比較基礎(chǔ)的階段。傳統(tǒng)行業(yè)并不像互聯(lián)網(wǎng)公司有那么的技術(shù)人員,靠人堆起了對新技術(shù)的支持,傳統(tǒng)行業(yè)更多是使用成熟的技術(shù)來服務(wù)于業(yè)務(wù),技術(shù)只是工具、是加速器而不能喧賓奪主。雖然像亞馬遜等公司通過技術(shù)實現(xiàn)了逆襲,把副業(yè)做成了主業(yè),但不可能每家公司都這樣。所以對大多數(shù)傳統(tǒng)行業(yè)的公司來說,使用技術(shù)工具來幫助完成業(yè)務(wù),提升業(yè)務(wù)效率才是目的。
所以在傳統(tǒng)行業(yè)的大多數(shù)企業(yè)對技術(shù)人員的要求無論在量或者質(zhì)上,都不可能像互聯(lián)網(wǎng)公司那樣。業(yè)務(wù)模式不一樣,技術(shù)場景不一樣,人才架構(gòu)不一樣,技術(shù)認(rèn)知不一樣等等都帶來了技術(shù)應(yīng)用的差異,照抄照搬只會是死路一條。因此,對于傳統(tǒng)行業(yè),必須對容器云平臺提出更高的產(chǎn)品化要求,才能適合、滿足這些行業(yè)的業(yè)務(wù)場景要求。
二、組織架構(gòu)的局限
容器云平臺是由運維團隊來建設(shè),還是由開發(fā)團隊來建設(shè),這是個問題。傳統(tǒng)涇渭分明的開發(fā)運維部門職責(zé)劃分,一定是和容器云平臺的建設(shè)沖突的。容器云平臺適合在既懂開發(fā)又懂運維的團隊建設(shè),類似于Google SRE。容器既是技術(shù)問題,也和業(yè)務(wù)密切相關(guān)。在互聯(lián)網(wǎng)公司開發(fā)人員可以用較低的學(xué)習(xí)成本來熟悉容器的使用,可以快速的熟悉docker、kubernetes的命令和操作,把業(yè)務(wù)服務(wù)直接融于容器之中,一個人可以完成一個團隊的工作(這也讓很多人誤解“開發(fā)運維一體化”,不過這不是的)。Google SRE運維基礎(chǔ)平臺如容器云平臺,同時開發(fā)運維工具,也運維業(yè)務(wù)應(yīng)用,它使業(yè)務(wù)開發(fā)人員專注于業(yè)務(wù)研發(fā),而不需要考慮開發(fā)、測試、生產(chǎn)環(huán)境和運維工具的維護。所以傳統(tǒng)的開發(fā)運維組織架構(gòu)需要調(diào)整,開發(fā)專注于業(yè)務(wù)應(yīng)用開發(fā),運維負(fù)責(zé)環(huán)境、工具及就緒的業(yè)務(wù)應(yīng)用的運維以及運維自動化、智能化工具的開發(fā)。而傳統(tǒng)基礎(chǔ)設(shè)施資源則可以獨立出來,自建、外包、公有云等方式都可以根據(jù)需要滿足需求。
三、基礎(chǔ)設(shè)施及架構(gòu)局限
由于組織架構(gòu)的局限性,導(dǎo)致大部分傳統(tǒng)行業(yè)的公司的基礎(chǔ)設(shè)施架構(gòu)相對落后,依然是獨立的單體系統(tǒng)建設(shè)思路,然后做集成,通過一層一層的打補丁,使系統(tǒng)之間的關(guān)系越來越復(fù)雜。就像上面提到的,基礎(chǔ)設(shè)施資源需要融合打通,向全公司提供基礎(chǔ)設(shè)施資源服務(wù)。這樣在其之上的PaaS平臺、應(yīng)用系統(tǒng)、工具系統(tǒng)等都可以共享這些資源,在降低成本提升效率的同時,也降低了運維的難度,使IT架構(gòu)簡單化。
云計算最重要的就是要實現(xiàn)基礎(chǔ)設(shè)施資源的融合和統(tǒng)一管控。目前很多公司所提供的方案都達不到要求,都是傳統(tǒng)的單體系統(tǒng)建設(shè)思維,所以在建設(shè)容器云平臺之前,必須要認(rèn)識到基礎(chǔ)設(shè)施資源融合建設(shè)的重要性。
四、生產(chǎn)就緒
生產(chǎn)和測試的要求是不一樣的?;ヂ?lián)網(wǎng)企業(yè)的需求和傳統(tǒng)企業(yè)的需求也是不一樣的。不同的場景面臨著不同的需求,所以不是一個容器或容器云平臺就能滿足所有的需求。
(一)僅有容器是不夠的
我們知道容器云平臺首先要有容器引擎如Docker,然后需要管理和調(diào)度容器的工具,比如Kubernetes,然后需要有運行容器的基礎(chǔ)設(shè)施資源。通過網(wǎng)絡(luò)把容器調(diào)度到公有或私有云端運行,就構(gòu)建了容器云平臺。容器里運行著業(yè)務(wù)應(yīng)用和業(yè)務(wù)服務(wù),要監(jiān)控其運行狀況、資源使用,維護其狀態(tài),定位其問題等等就需要相應(yīng)的日志系統(tǒng)、監(jiān)控系統(tǒng)、告警系統(tǒng)、服務(wù)治理系統(tǒng)等等。容器云平臺可以私有化部署,封裝了基礎(chǔ)設(shè)施資源的管理和維護。通常為了資源的彈性擴容效率,基于虛擬化之上部署容器云平臺(也可以虛擬化和物理服務(wù)器并存)。同時也可能存在多云,需要調(diào)度容器到不同的云上運行,這就需要云管平臺來管理多云環(huán)境,并且支持容器在不同云環(huán)境的調(diào)度和運行管理。
這里云管的職責(zé)范圍需要和容器云平臺的職責(zé)范圍厘清楚,不是云管去管理容器云平臺,而是云管去支撐容器云平臺。云管可以提供各種類型的云資源服務(wù),并且支持云資源的彈性擴縮容,這就避免了私有化容器云資源的局限性,使容器云平臺獲得更大的資源調(diào)度能力。
(二)容器云平臺資源管理需要云管支撐
私有化容器云的前景需要和云管平臺集成或融合,使之成為一體兩層。否則容器云平臺的資源管理將會是一個負(fù)擔(dān)。所以云管和容器云平臺之間的職責(zé)范圍就需要定義明確。
簡單的說,云管就是管理云基礎(chǔ)設(shè)施資源,為容器云平臺提供云基礎(chǔ)設(shè)施資源服務(wù)。容器云平臺調(diào)度容器到這些云平臺上。云管不是什么“云”都管,把所有的功能都糅合到一起,亂點鴛鴦譜。明確容器云和云管的職責(zé)范圍和其所在的層次,才能設(shè)計出生產(chǎn)就緒的產(chǎn)品,滿足實際的需要。
云管為容器云平臺提供不同類型的計算資源、存儲資源和網(wǎng)絡(luò)資源等。舉例來說,私有容器云環(huán)境下,容器和容器節(jié)點等所使用的網(wǎng)段和IP地址就可以由云管平臺來進行管理和自動分配。實現(xiàn)資源的使用情況跟蹤和統(tǒng)計計費,避免重復(fù)的工作和額外的投入。這也是我們“平臺融合”的建設(shè)思路。
云管直接支撐容器云平臺的另外的好處是可以方便的從云管平臺獲得基礎(chǔ)設(shè)施資源的運行信息,比如節(jié)點的CPU數(shù)、Memory數(shù)、使用量、進程數(shù)、file descriptor數(shù)、所在宿主機等,甚至數(shù)據(jù)中心信息、機房、機柜、機架、機位、端口等信息都可以輕松下鉆獲取。這也是我們所提倡的分層自服務(wù)能力設(shè)計。從整體看是一體的,分開看又是獨立的,各部分職責(zé)清晰,范圍明確,不會出現(xiàn)重復(fù)的建設(shè)和冗余的集成。
(三)容器云是支撐應(yīng)用的平臺
我們在建設(shè)容器云平臺時提出“以應(yīng)用管理為中心”,容器云平臺的核心是支撐應(yīng)用的托管、部署、運行和管理、治理。重點支撐DevOps中的Dev能力。
容器云平臺服務(wù)治理能力,不是SpringCloud、也不是istio等。那些簡單把微服務(wù)框架等同于服務(wù)治理的說法要么是不懂、要么是故意在誤導(dǎo)微服務(wù)的設(shè)計和使用,也間接的誤導(dǎo)了容器云平臺的場景設(shè)計和使用。容器可以看作是一種資源,而容器云平臺是基于容器資源支撐業(yè)務(wù)應(yīng)用的。容器云平臺結(jié)合相應(yīng)的組件構(gòu)建的容器化PaaS平臺則提供了更完整的PaaS平臺服務(wù)能力,因此容器云平臺可以看作是簡化版的PaaS,它需要提供的是平臺服務(wù)能力,不僅僅是容器服務(wù)能力。Docker就可以提供容器服務(wù)了,但對用戶來說要求相對比較高了。容器云平臺或者PaaS平臺要讓不懂容器的人能夠順利的用起來,而不是需要高昂的學(xué)習(xí)成本。因此容器云在應(yīng)用的打包、部署、管理、運維、監(jiān)控、日志、調(diào)度、服務(wù)治理等方面要能提供完善的支撐能力。這樣,容器云平臺作為應(yīng)用運行時支撐平臺,結(jié)合微服務(wù)架構(gòu)和DevOps閉環(huán)流程,能很好的滿足和支撐企業(yè)的業(yè)務(wù)敏捷、彈性等的需求。
五、認(rèn)識到容器云平臺的局限和優(yōu)勢
當(dāng)前在進行系統(tǒng)建設(shè)時,不能只看一個點,只考慮一個系統(tǒng),必須從企業(yè)全局系統(tǒng)建設(shè)的角度考慮,明確容器云平臺的定位及和其他系統(tǒng)的關(guān)系。容器云平臺作為PaaS層的一種實現(xiàn),向下使用基礎(chǔ)設(shè)施資源,向上支撐業(yè)務(wù)應(yīng)用,中間需要相應(yīng)的平臺配套組件設(shè)施。這樣整個體系就相對完整了。在建設(shè)容器云平臺時還需要理解容器的特點,選擇合適的場景和工具。
(一)開源技術(shù)的局限性
容器作為一種開源技術(shù),在不斷的發(fā)展完善中。由于其技術(shù)的快速迭代和變化,使很多對穩(wěn)定性要求高的企業(yè)不敢輕易嘗試這些技術(shù)。開源的項目基本上都是不成熟的技術(shù),需要眾多的開源貢獻者不斷的完善,而開源的技術(shù)一旦趨于成熟,往往就不開源了,所以這也是很多傳統(tǒng)企業(yè)難以大量生產(chǎn)使用的一個原因。開源技術(shù)由于其不成熟,需要大量的技術(shù)人員來支撐,這個成本其實是不低的。而成熟之后面臨著繼續(xù)付出商業(yè)化license費用,或者更換組件,都不是最好的選擇。甚至有些開源慢慢就沒落了,不得不更換,這也帶來很大的風(fēng)險。
(二)容器自身技術(shù)特點的局限性
很多企業(yè)并不追求技術(shù)有多新,而是追求系統(tǒng)的可靠性與穩(wěn)定性,不能出意外。這和容器的特點是矛盾的。
我們知道容器的特性就是輕量、彈性、無狀態(tài)。不過其自身特點也使其應(yīng)用受限。容器的這些特點適合微服務(wù)架構(gòu)有彈性伸縮的業(yè)務(wù)應(yīng)用,比如互聯(lián)網(wǎng)類業(yè)務(wù),非常匹配。但傳統(tǒng)企業(yè)還是以單體系統(tǒng)為主,這些系統(tǒng)相對比較笨重,而且維護繁瑣,往往不支持?jǐn)U展,而且如果重啟可能會帶來數(shù)據(jù)丟失等問題,并不適合以容器化部署。其實我們也一直強調(diào),像Kafka、Redis等中間件,可以在測試環(huán)境部署用于快速搭建組件測試環(huán)境,卻不適合用于生產(chǎn)。這些組件生產(chǎn)環(huán)境一定要考慮物理化部署。它們不需要天天變更、重啟,需要的是穩(wěn)定的運行和穩(wěn)定的服務(wù)。
不同的場景需求可能完全是不一樣的。測試和生產(chǎn)環(huán)境也不是百分百匹配的,而是基于業(yè)務(wù)需求和業(yè)務(wù)場景而確定的。
(三)容器云平臺的優(yōu)勢
基于容器所構(gòu)建的容器云平臺的優(yōu)勢也來源于容器的特點,適合輕量、變化快、彈性擴縮容、
容器云平臺要使用基礎(chǔ)設(shè)施資源。通常我們基于虛擬化來構(gòu)建容器云平臺節(jié)點,這樣可以實現(xiàn)節(jié)點的快速擴展。而虛擬化平臺如果和容器云平臺集成,就可以實現(xiàn)容器節(jié)點的彈性擴展。但虛擬化管理通常是云管的能力,云管又可以集成其他云資源,這樣通過云管抽象,就把公有云、私有云、行業(yè)云等的基礎(chǔ)設(shè)施資源服務(wù)按照標(biāo)準(zhǔn)的方式提供給容器云平臺。在云管上不提供中間件等服務(wù),云管只管云基礎(chǔ)設(shè)施資源。
容器云平臺支撐微服務(wù)架構(gòu)的應(yīng)用則具備天生的優(yōu)勢。而通過微服務(wù)化在企業(yè)內(nèi)部構(gòu)建可重用的技術(shù)服務(wù)、數(shù)據(jù)服務(wù)、業(yè)務(wù)服務(wù)等來構(gòu)建服務(wù)中臺則能支撐企業(yè)業(yè)務(wù)應(yīng)用的敏捷迭代,這才是比較好的匹配。
六、容器化PaaS平臺
PaaS是一套云操作系統(tǒng),所以其不容易實現(xiàn)。它要比IaaS和SaaS的實現(xiàn)困難許多。不過容器技術(shù)的應(yīng)用為PaaS平臺的實現(xiàn)提供了一種簡化的思路、一種組件化思路??梢越Y(jié)合微服務(wù)架構(gòu)的思想構(gòu)建容器化PaaS平臺,每個容器其實就是云操作系統(tǒng)的一個組件/進程,Kubernetes相當(dāng)于內(nèi)核實現(xiàn)管理和調(diào)度這些組件/進程,而容器化PaaS平臺則是多集群多類型資源多類型應(yīng)用的企業(yè)級云操作系統(tǒng)。提供應(yīng)用開發(fā)、應(yīng)用托管、應(yīng)用運維的PaaS平臺能力。
如果容器和容器云平臺能實現(xiàn)這樣的能力,那么容器云平臺的應(yīng)用場景將會擴展支持眾多的傳統(tǒng)業(yè)務(wù)場景和需求,真正實現(xiàn)容器云平臺的質(zhì)變飛躍。