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