技術(shù)
導(dǎo)讀:在云原生時(shí)代,國(guó)內(nèi)外眾多云廠商釋放出強(qiáng)大的技術(shù)紅利,如何利用穩(wěn)定、高效且性價(jià)比高的云設(shè)施是當(dāng)下的主要命題。
在云原生時(shí)代,國(guó)內(nèi)外眾多云廠商釋放出強(qiáng)大的技術(shù)紅利,如何利用穩(wěn)定、高效且性價(jià)比高的云設(shè)施是當(dāng)下的主要命題。
當(dāng)下,伴隨容器技術(shù)的出現(xiàn),特別是Docker和Kubernetes出現(xiàn),讓DevOps概念火了一把,也在實(shí)踐中開始快速落地和普及。
眾所周知,容器能夠封裝微服務(wù)整個(gè)運(yùn)行時(shí)環(huán)境的特性,天然就適用于微服務(wù)構(gòu)建、發(fā)布和運(yùn)行,讓原本緩慢前進(jìn)的DevOps得到飛速發(fā)展,開源社區(qū)也涌現(xiàn)了很多優(yōu)秀的開源產(chǎn)品,大家通過這些開源產(chǎn)品能夠快速搭建自己應(yīng)用的持續(xù)集成環(huán)境,因此市場(chǎng)上也如雨后春筍般冒出許多DevOps相關(guān)的產(chǎn)品。
現(xiàn)階段的DevOps產(chǎn)品通過Docker和K8s確實(shí)幫助用戶解決了資源管理、微服務(wù)環(huán)境構(gòu)建和持續(xù)集成的復(fù)雜、效率低等問題,但是伴隨公有云等Infra基礎(chǔ)設(shè)施持續(xù)高速發(fā)展,人們對(duì)于應(yīng)用研發(fā)的效率追求也會(huì)有更高的要求,對(duì)于DevOps產(chǎn)品也不會(huì)滿足停留在當(dāng)前階段,那么如何在DevOps現(xiàn)階段的版本基礎(chǔ)上進(jìn)一步提高研發(fā)效率和質(zhì)量呢?
當(dāng)下,DevOps面臨的痛點(diǎn)
我們首先需要了解,DevOps是依靠云原生、工作流程、人員組織的整合,以協(xié)作、自動(dòng)化、精益、度量、共享、文化為指引,旨在建立一種可以快速交付價(jià)值,并且具有持續(xù)改進(jìn)能力的現(xiàn)代化IT組織。
如今,幾乎每家企業(yè)都說自己在做DevOps,但只有少數(shù)人獲得了期望中的業(yè)務(wù)價(jià)值。這背后的原因在于,他們清楚地知道要讓DevOps模式在組織中正確推行下去需要重點(diǎn)關(guān)注哪些地方,同時(shí)他們也知道業(yè)務(wù)價(jià)值是DevOps的終極目標(biāo)。
但不可否認(rèn)的是,DevOps現(xiàn)階段還需要面臨很多問題:
一、多云資源如何統(tǒng)一管理,解綁云廠商?
在公有云、私有云等多元化的云環(huán)境下,大家手頭往往都有兩套或者多套云資源,如何讓這些割裂的云資源統(tǒng)一進(jìn)行管理?如何基于一個(gè)平臺(tái)讓應(yīng)用快速進(jìn)行跨云遷移、發(fā)布?比如:開發(fā)在私有云,生產(chǎn)在公有云等這些問題伴隨資源環(huán)境多元化問題會(huì)越來越突出。
二、復(fù)雜微服務(wù)組合如何快速進(jìn)行環(huán)境構(gòu)建、持續(xù)集成?
當(dāng)前DevOps對(duì)于單個(gè)微服務(wù)的環(huán)境構(gòu)建和持續(xù)集成問題已經(jīng)基本解決。但對(duì)于企業(yè)級(jí)軟件研發(fā)交付團(tuán)隊(duì)來說,錯(cuò)綜復(fù)雜的微服務(wù)組合而成的項(xiàng)目如何進(jìn)行統(tǒng)一的環(huán)境構(gòu)建、部署和交付,目前仍解決得不太徹底,只能讓各應(yīng)用的研發(fā)成員都參與到構(gòu)建、部署的整個(gè)階段。以上復(fù)雜的過程容易引起問題不說,效率成本上也是個(gè)大問題。
三、研發(fā)效能如何進(jìn)一步提升?
在當(dāng)前主流的DevOps產(chǎn)品中,代碼、構(gòu)建、部署全流程自動(dòng)化觸發(fā)執(zhí)行的特性基本都是得到了比較好的解決,但是隨著研發(fā)管理的深度、精細(xì)度要求越來越高,需要研發(fā)維護(hù)的數(shù)據(jù)也隨之不斷增多,管理維護(hù)項(xiàng)目數(shù)據(jù)的項(xiàng)目管理工作量也在不斷增大,效率和成本也產(chǎn)生了矛盾。
云原生時(shí)代下DevOps如何破局
面對(duì)上述三大痛點(diǎn),新一代DevOps也在尋找破局之道。
首先,DevOps針對(duì)于多云管理并不是簡(jiǎn)單指通過K8s集群來實(shí)現(xiàn)資源的調(diào)度管理,如果僅僅是統(tǒng)一資源調(diào)度那本身是K8s集群的特性。
其次,通過應(yīng)用部署環(huán)境配置去關(guān)聯(lián)集群,確實(shí)可以實(shí)現(xiàn)環(huán)境之間的隔離、環(huán)境之間快速遷移的能力。開發(fā)測(cè)試在本地私有云環(huán)境,生產(chǎn)者可以通過同一套代碼能夠快速發(fā)布到公有云;還有就是業(yè)務(wù)在一個(gè)集群,數(shù)據(jù)處理可以在另外一個(gè)集群,實(shí)現(xiàn)業(yè)務(wù)和數(shù)據(jù)分離,兩者互不影響,這些都可以通過集群管理來實(shí)現(xiàn)。
另外,對(duì)單應(yīng)用的持續(xù)構(gòu)建部署,DevOps產(chǎn)品基本都是達(dá)成共識(shí)的,對(duì)于單個(gè)微服務(wù)應(yīng)用構(gòu)建部署的自動(dòng)化完善程度較好。
但對(duì)于企業(yè)級(jí)項(xiàng)目研發(fā)過程,我們看到,單應(yīng)用內(nèi)不同任務(wù)需要拉多分支來進(jìn)行開發(fā),受開發(fā)環(huán)境資源的限制,不同任務(wù)開發(fā)人員要不斷進(jìn)行線下溝通合并代碼發(fā)布開發(fā)環(huán)境進(jìn)行測(cè)試,過程中可能存在誰的代碼分支有問題導(dǎo)致整個(gè)環(huán)境不可用的現(xiàn)象。
項(xiàng)目級(jí)的聯(lián)調(diào)部署就更復(fù)雜了,首先需要配置項(xiàng)目環(huán)境,其中包含了項(xiàng)目級(jí)的參數(shù)配置以及大家公用的項(xiàng)目級(jí)中間件準(zhǔn)備部署;其次是復(fù)雜的微服務(wù)編排信息維護(hù),這些煩瑣的項(xiàng)目級(jí)維護(hù)管理動(dòng)作,往往會(huì)導(dǎo)致項(xiàng)目部署過程中出現(xiàn)各種阻塞,比如項(xiàng)目共同的中間件準(zhǔn)備阻塞,上游服務(wù)的部署和健康度也會(huì)影響或阻塞下游服務(wù)部署和測(cè)試等,這些問題會(huì)讓項(xiàng)目部署更加困難化。
由此可見,在DevOps實(shí)踐中,選擇正確的工具對(duì)于測(cè)試自動(dòng)化至關(guān)重要。利用共享工具幫助明確和簡(jiǎn)化協(xié)作流程,以便對(duì)整個(gè)軟件交付流程有共同的了解。因此,它們能夠促進(jìn)一致性和自動(dòng)化,幫助DevOps從業(yè)者提高交付速度,并避免在部署或生產(chǎn)故障恢復(fù)期間為臨時(shí)的救急處理花費(fèi)時(shí)間。
寫在最后
DevOps這一概念雖然比容器、微服務(wù)出現(xiàn)得早,卻是隨著他們的出現(xiàn)才得以快速地發(fā)展。實(shí)際上DevOps不單是一個(gè)實(shí)現(xiàn)自動(dòng)化的工具鏈,更是通過構(gòu)建企業(yè)文化的方式促進(jìn)開發(fā)與運(yùn)維之間的協(xié)作。