破除軟件開(kāi)發(fā)困局,基于容器平臺(tái)的DevOps轉(zhuǎn)型實(shí)踐(軟件容器技術(shù))
本文分享自華為云社區(qū)《DevOps賦能行業(yè)云原生數(shù)字化轉(zhuǎn)型-云社區(qū)-華為云》,作者:云容器大未來(lái)。
企業(yè)軟件開(kāi)發(fā)困局
隨著信息化的進(jìn)程不斷加速,帶來(lái)的各種業(yè)務(wù)應(yīng)用、平臺(tái)應(yīng)用等軟件資產(chǎn)的復(fù)雜度也快速上升。隨之而來(lái)的信息化基礎(chǔ)設(shè)施能力與軟件工程全生命周期的管理也會(huì)變得越來(lái)越復(fù)雜,數(shù)字化轉(zhuǎn)型、云原生、持續(xù)交付的口號(hào)隨之升起。
千行百業(yè)都在響應(yīng)數(shù)字化轉(zhuǎn)型的號(hào)召以提升業(yè)務(wù)效率、企業(yè)競(jìng)爭(zhēng)力或是市場(chǎng)競(jìng)爭(zhēng)力。但是企業(yè)在轉(zhuǎn)型的過(guò)程中卻舉步維艱。往往原因有以下幾點(diǎn):
- 流程固化,牽一發(fā)而動(dòng)全身:原有的流程已經(jīng)制定多年,相關(guān)人員也已經(jīng)習(xí)慣這套流程。突然的規(guī)則轉(zhuǎn)變以及帶來(lái)的相關(guān)風(fēng)險(xiǎn)無(wú)人愿意主動(dòng)承擔(dān)。
- 部門(mén)墻明顯,無(wú)法快速協(xié)同:在金融等行業(yè)中,每個(gè)部門(mén)的成員往往都是統(tǒng)一職責(zé)的。如業(yè)務(wù)部門(mén),只負(fù)責(zé)市場(chǎng)運(yùn)營(yíng)、項(xiàng)目需求管理等;研發(fā)部門(mén),只負(fù)責(zé)開(kāi)發(fā)以及測(cè)試;運(yùn)維部門(mén),只負(fù)責(zé)平臺(tái)的運(yùn)維、基礎(chǔ)設(shè)施的維護(hù)等。一個(gè)業(yè)務(wù)軟件的版本迭代,需要從多個(gè)部門(mén)層層流轉(zhuǎn),但部門(mén)與部門(mén)之間的溝通又不徹底,出現(xiàn)問(wèn)題也容易互相牽扯,最終導(dǎo)致軟件需求交付效率的大大下降。
- 嚴(yán)謹(jǐn)?shù)木W(wǎng)絡(luò)環(huán)境管理卻又松散的制品管理:網(wǎng)絡(luò)部門(mén)嚴(yán)格管理著各個(gè)環(huán)境之間的網(wǎng)絡(luò)訪問(wèn)邏輯,一般情況下,開(kāi)發(fā)人員只能訪問(wèn)開(kāi)發(fā)環(huán)境;而且開(kāi)發(fā)、測(cè)試、準(zhǔn)生產(chǎn)以及生產(chǎn)環(huán)境之間網(wǎng)絡(luò)都是不互通的。在沒(méi)有強(qiáng)有力的政策干預(yù)下,可能會(huì)出現(xiàn)各個(gè)環(huán)境都獨(dú)立一套代碼、制品倉(cāng)庫(kù),更糟糕的是,可能不同的軟件產(chǎn)品線都獨(dú)立管理各自的代碼、制品倉(cāng)庫(kù)。因此在階段流轉(zhuǎn)時(shí),需要通過(guò)傳統(tǒng)的拷貝方式去做流轉(zhuǎn)傳遞,帶來(lái)了額外的管理成本,也更容易引入人為風(fēng)險(xiǎn)。
- 過(guò)多的編外人員帶來(lái)的各種散亂工具鏈:在軟件研發(fā)部門(mén)可能存在多方外包人員,而每一方外包人員都有各自熟悉的軟件開(kāi)發(fā)工具,代碼倉(cāng)庫(kù)有些使用Gitlab,有些使用Gitea;制品倉(cāng)庫(kù)有些使用nexus,有些使用jforg;甚至構(gòu)建工具都不能統(tǒng)一,有用Jenkins的,也有本地構(gòu)建的。這也帶來(lái)了管理上的巨大麻煩。
顯而易見(jiàn)的困局,企業(yè)在數(shù)字化轉(zhuǎn)型過(guò)程中面臨流程固化、部門(mén)墻明顯、制品管理松散和工具鏈混亂等問(wèn)題,導(dǎo)致軟件需求交付效率下降。需要打破原有流程和部門(mén)墻,建立統(tǒng)一的管理體系,加強(qiáng)制品管理和工具鏈整合,以提高軟件需求交付效率。
破局之法:DevOps
面對(duì)以上重重現(xiàn)狀和困難,我們迎來(lái)了曙光——DevOps。
DevOps最初誕生于互聯(lián)網(wǎng)企業(yè)。DevOps作為一種文化、哲學(xué)和實(shí)踐的集合,自從誕生以來(lái),就一直在不斷地進(jìn)化和擴(kuò)展。它的定義以及理念大家都耳熟能詳:打破部門(mén)墻、緊密合作、自動(dòng)化、小步快跑、敏捷迭代等等。它是一種文化宣言,提及了方法論,每個(gè)企業(yè)或者行業(yè)都能夠結(jié)合自身實(shí)際情況去操作實(shí)施。
核心理念:
- 變更的快速響應(yīng):DevOps支持需求的快速更改和新功能的快速部署。通過(guò)自動(dòng)化構(gòu)建和部署流程,開(kāi)發(fā)團(tuán)隊(duì)可以快速地將代碼從開(kāi)發(fā)環(huán)境推送到生產(chǎn)環(huán)境。
- 持續(xù)反饋:通過(guò)持續(xù)集成和持續(xù)部署,可以確保在開(kāi)發(fā)周期的任何階段捕獲問(wèn)題,以及在生產(chǎn)過(guò)程中立即收集用戶反饋,然后快速將這些反饋整合到產(chǎn)品迭代中。
- 跨功能協(xié)作:DevOps鼓勵(lì)開(kāi)發(fā)團(tuán)隊(duì)、QA團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì)從需求收集的初期就開(kāi)始緊密合作,以確保全方位理解和滿足用戶需求,并從整個(gè)軟件交付流程中消除障礙。
- 原則優(yōu)化:DevOps的實(shí)踐著重于自動(dòng)化和精益原則,包括盡早消除浪費(fèi),確保需求的清晰性和簡(jiǎn)潔性,以及提供最大的價(jià)值。
從核心理念就能夠看出,DevOps文化實(shí)踐需要有統(tǒng)一的軟件工程工具鏈,所有相關(guān)人員都能夠在DevOps平臺(tái)上執(zhí)行各自的工作,實(shí)現(xiàn)部門(mén)之間通力協(xié)作和重復(fù)流程的全面自動(dòng)化。
上圖展示了DevOps的相關(guān)角色以及整體工作流程。一個(gè)較為完整的DevOps全流程工具鏈便呼之欲出:從基礎(chǔ)設(shè)施的管理、項(xiàng)目管理,再到代碼管理和持續(xù)交付,最后是持續(xù)運(yùn)維。除卻文化理念,DevOps的核心是自動(dòng)化流水線工具,實(shí)現(xiàn)了自動(dòng)化持續(xù)交付,而持續(xù)交付的核心是持續(xù)集成(CI)和持續(xù)部署(CD)。CI/CD共同構(gòu)成了現(xiàn)代軟件開(kāi)發(fā)的核心實(shí)踐,旨在促進(jìn)軟件的快速迭代和高質(zhì)量交付。其中,持續(xù)集成主要關(guān)注開(kāi)發(fā)階段的頻繁合并和測(cè)試,而持續(xù)部署則擴(kuò)展了這一過(guò)程,涵蓋了代碼從集成到被部署到生產(chǎn)環(huán)境的整個(gè)流程。兩者都是自動(dòng)化的關(guān)鍵實(shí)踐,有助于實(shí)現(xiàn)DevOps的目標(biāo)。
遵循理論引導(dǎo)并結(jié)合實(shí)際情況,我們歸納了針對(duì)金融等行業(yè)的破局三板斧。
DevOps專(zhuān)業(yè)團(tuán)隊(duì)指導(dǎo),打破固有流程
在金融等行業(yè)并不缺乏優(yōu)化現(xiàn)有流程的勇氣,只是沒(méi)有明確的目標(biāo)以及專(zhuān)業(yè)指導(dǎo)。當(dāng)DevOps的呼聲以及發(fā)展越來(lái)越強(qiáng)大時(shí),國(guó)內(nèi)涌現(xiàn)出了很多專(zhuān)業(yè)的DevOps專(zhuān)家咨詢團(tuán)隊(duì),他們能夠結(jié)合企業(yè)的實(shí)際現(xiàn)狀給出最優(yōu)解,在組織架構(gòu)不調(diào)整的情況下保障以盡可能小的變更達(dá)到最大的效果,消除企業(yè)顧慮。
統(tǒng)一的DevOps工具鏈平臺(tái),打破部門(mén)墻,規(guī)范研發(fā)流程
我們發(fā)現(xiàn)絕大多數(shù)企業(yè)都無(wú)法做到為每一個(gè)項(xiàng)目劃分全功能團(tuán)隊(duì)(從市場(chǎng)、需求到研發(fā)、測(cè)試最后到運(yùn)維),往往都是獨(dú)立的市場(chǎng)部、研發(fā)部和運(yùn)維部。這天然的形成了溝通與階段流轉(zhuǎn)之間的部門(mén)墻,由于更改現(xiàn)狀牽扯太大,我們便通過(guò)應(yīng)用DevOps的理念,建立統(tǒng)一的DevOps工具鏈平臺(tái),對(duì)當(dāng)前項(xiàng)目的全生命周期進(jìn)行管理。針對(duì)每一個(gè)原始需求,從需求記錄、分析、分配到后續(xù)的開(kāi)發(fā)、測(cè)試、驗(yàn)證及最終上線,都能被相關(guān)人員看到。階段的流轉(zhuǎn)也能夠在相關(guān)平臺(tái)上直接操作和通知,杜絕冗長(zhǎng)低效的跨部門(mén)流程。我們提倡相關(guān)人員使用DevOps平臺(tái)的同時(shí),梳理最佳實(shí)踐,進(jìn)行定期培訓(xùn),潛移默化的讓研發(fā)流程變得統(tǒng)一和規(guī)范。
在嚴(yán)謹(jǐn)?shù)木W(wǎng)絡(luò)環(huán)境內(nèi)搭建統(tǒng)一的核心資產(chǎn)庫(kù)
核心資產(chǎn)庫(kù)的統(tǒng)一有必要性,各個(gè)項(xiàng)目組成員,即使在不同的應(yīng)用環(huán)境下,也不能單獨(dú)建立。如代碼倉(cāng)庫(kù),不能在開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境各有一套。我們需要統(tǒng)一的核心資產(chǎn)庫(kù)去踐行DevOps的理念。該庫(kù)需要打通從開(kāi)發(fā)到生產(chǎn)環(huán)境的網(wǎng)絡(luò)連接,并通過(guò)嚴(yán)格的權(quán)限控制,來(lái)實(shí)現(xiàn)安全合規(guī)。
行業(yè)困局的解決方案
為了滿足理論支撐,我們基于華為云UCS作為容器平臺(tái)底座,結(jié)合軟通動(dòng)力應(yīng)用交付平臺(tái)來(lái)實(shí)現(xiàn)行業(yè)云原生數(shù)字化轉(zhuǎn)型的最佳解決方案。
華為云UCS(Ubiquitous Cloud Native Service)是業(yè)界首個(gè)分布式云原生產(chǎn)品,為企業(yè)構(gòu)建云原生業(yè)務(wù)部署、管理、應(yīng)用生態(tài)的全域一致性體驗(yàn) ,實(shí)現(xiàn)客戶在使用云原生應(yīng)用時(shí),感受不到地域、跨云、流量的限制,讓云原生的能力進(jìn)入企業(yè)的每一個(gè)業(yè)務(wù)場(chǎng)景,加速千行百業(yè)擁抱云原生。
而軟通動(dòng)力應(yīng)用交付平臺(tái)是一款持續(xù)交付產(chǎn)品,幫助企業(yè)快速建立穩(wěn)定軟件發(fā)布的內(nèi)部開(kāi)發(fā)者平臺(tái)與 DevOps 文化,為開(kāi)發(fā)者提供云原生應(yīng)用運(yùn)行環(huán)境,開(kāi)發(fā)者通過(guò)平臺(tái)的自助服務(wù)能力,進(jìn)行應(yīng)用的構(gòu)建、部署、驗(yàn)證、運(yùn)維等生命周期管理操作,降低應(yīng)用開(kāi)發(fā)者使用云原生技術(shù)的門(mén)檻,提升應(yīng)用的部署和運(yùn)行質(zhì)量。平臺(tái)支持UCS云原生服務(wù)中心快速安裝,用戶只需要通過(guò)頁(yè)面表單的填寫(xiě)即可快速部署平臺(tái),實(shí)現(xiàn)開(kāi)箱即用。
客戶通過(guò)UCS對(duì)多方集群執(zhí)行統(tǒng)一納管,從而達(dá)到對(duì)多個(gè)集群的統(tǒng)一治理,實(shí)現(xiàn)配置管理、容器遷移、策略中心、流量治理和容器智能分析。這在網(wǎng)絡(luò)環(huán)境嚴(yán)苛的金融等行業(yè)中是非常便利的。
云原生服務(wù)中心精選了各種成熟可靠的開(kāi)源工具,為客戶提供了統(tǒng)一便捷的安裝體驗(yàn),其中的多種工具能夠和應(yīng)用交付平臺(tái)實(shí)現(xiàn)集成聯(lián)動(dòng)效果,如SonarQube和ArgoCD。他們支持配置對(duì)接到應(yīng)用交付平臺(tái)的持續(xù)集成流水線或安全測(cè)試編排中,實(shí)現(xiàn)多個(gè)工具平臺(tái)的串聯(lián),打破數(shù)據(jù)孤島。
整體解決方案中,實(shí)現(xiàn)DevOps的核心便是華為云UCS提供的容器底座以及應(yīng)用交付平臺(tái)提供的集成和自動(dòng)化能力,兩者相輔相成。原本的應(yīng)用交付平臺(tái)得到升華。通過(guò)UCS的特性,我們可以實(shí)現(xiàn)多集群的統(tǒng)一聯(lián)邦管理,讓快速搭建雙活、主備等高可用應(yīng)用部署架構(gòu)變得輕而易舉。這種架構(gòu)極大地提升了運(yùn)維能力,使構(gòu)建發(fā)布過(guò)程實(shí)現(xiàn)全面自動(dòng)化,從而提高交付質(zhì)量、縮短交付周期、保持技術(shù)路線一致性以及規(guī)范資源使用。
值得一提的是,UCS云原生服務(wù)中心的引入使得企業(yè)能夠快速安裝和使用諸如ArgoCD、SornaQube等熱門(mén)開(kāi)源工具平臺(tái)。這不僅豐富了企業(yè)的技術(shù)選擇,還增強(qiáng)了企業(yè)的靈活性,使企業(yè)在快速變化的市場(chǎng)環(huán)境中始終保持競(jìng)爭(zhēng)力。
將UCS與軟通動(dòng)力應(yīng)用交付平臺(tái)相結(jié)合,企業(yè)將獲得一套更高效、更可靠的運(yùn)維解決方案。這套方案可以全面提高企業(yè)的運(yùn)維能力,降低人工干預(yù)成本,提高交付質(zhì)量,并確保技術(shù)路線的一致性。在此基礎(chǔ)上,通過(guò)UCS云原生服務(wù)中心的引入,企業(yè)還能夠快速接入各類(lèi)熱門(mén)開(kāi)源工具平臺(tái),進(jìn)一步提升企業(yè)的靈活性。這套解決方案將助力企業(yè)在激烈的市場(chǎng)競(jìng)爭(zhēng)中脫穎而出,實(shí)現(xiàn)業(yè)務(wù)的持續(xù)發(fā)展。
方案落地實(shí)踐與價(jià)值
某資產(chǎn)管理公司成立10年期間累積了不少軟件資產(chǎn),過(guò)于陳舊的研發(fā)體系以及日益膨脹的原始需求,使得他們迫切的想要進(jìn)行云原生改造,實(shí)踐DevOps來(lái)得到交付效率上的提升。
在入場(chǎng)調(diào)研的過(guò)程中,我們發(fā)現(xiàn)其所面臨的困境和金融業(yè)企業(yè)困境如出一轍:各個(gè)環(huán)境的割裂、沒(méi)有統(tǒng)一的代碼倉(cāng)庫(kù)、階段流轉(zhuǎn)靠U盤(pán)拷貝、散亂的依賴(lài)管理、缺失自動(dòng)化構(gòu)建能力以及沒(méi)有統(tǒng)一規(guī)范的軟件研發(fā)流程,全靠各個(gè)團(tuán)隊(duì)自由發(fā)揮。
云原生DevOps專(zhuān)家團(tuán)隊(duì)面對(duì)這種實(shí)際場(chǎng)景,針對(duì)性的給出了架構(gòu)設(shè)計(jì)和遷移改造方案。
容器化改造
客戶原先的系統(tǒng)服務(wù)都是虛擬機(jī)部署,一個(gè)微服務(wù)需要單獨(dú)規(guī)劃一臺(tái)4U8G的虛擬機(jī),如此配置不易彈性伸縮且有巨大的資源浪費(fèi)。專(zhuān)家團(tuán)隊(duì)順勢(shì)提出容器化改造,并且使用業(yè)界首個(gè)分布式云原生產(chǎn)品華為云UCS作為容器平臺(tái)底座,同時(shí)給出微服務(wù)容器化改造的最佳實(shí)踐,幫助客戶快速遷移。
統(tǒng)一代碼倉(cāng)庫(kù)和制品倉(cāng)庫(kù)
令人驚訝的是,客戶沒(méi)有統(tǒng)一的代碼倉(cāng)庫(kù)和制品倉(cāng)庫(kù),多個(gè)團(tuán)隊(duì)之間的代碼資產(chǎn)各自管理。有些使用Git,有些使用SVN,更有甚者就未使用代碼倉(cāng)庫(kù)。因此在代碼從開(kāi)發(fā)環(huán)境轉(zhuǎn)換到測(cè)試環(huán)境、準(zhǔn)生產(chǎn)環(huán)境時(shí),通過(guò)U盤(pán)拷貝的形式,制品依賴(lài)更是如此。所以改造的下一步是統(tǒng)一必備的軟件開(kāi)發(fā)工具。綜合考量各種因素后,我們?yōu)榭蛻籼峁┝薌itlab代碼倉(cāng)庫(kù)、SWR鏡像倉(cāng)庫(kù)以及nexus依賴(lài)倉(cāng)庫(kù)。
統(tǒng)一的DevOps平臺(tái)
有了容器平臺(tái)、代碼倉(cāng)庫(kù)、鏡像倉(cāng)庫(kù)等基礎(chǔ)設(shè)施和軟件開(kāi)發(fā)平臺(tái),實(shí)踐DevOps需要將這些平臺(tái)結(jié)合起來(lái),并提供持續(xù)交付的能力。軟通動(dòng)力應(yīng)用交付平臺(tái)完美匹配,其靈活的集成管理能力串聯(lián)了多個(gè)研發(fā)工具鏈,給客戶提供高效便捷的流水線配置體驗(yàn)。
研發(fā)流程優(yōu)化
當(dāng)基礎(chǔ)配置全部準(zhǔn)備完成后,此時(shí)需要流程規(guī)范和最佳實(shí)踐進(jìn)行指導(dǎo)。華為云UCS專(zhuān)家團(tuán)隊(duì)結(jié)合資產(chǎn)管理公司的組織架構(gòu)以及業(yè)務(wù)結(jié)構(gòu),為客戶量身定制了基于新平臺(tái)的研發(fā)流程。從理論出發(fā)結(jié)合實(shí)際為客戶實(shí)現(xiàn)云原生數(shù)字化轉(zhuǎn)型。
經(jīng)過(guò)客戶及華為云云原生團(tuán)隊(duì)的共同努力,客戶業(yè)務(wù)最終完美的遷移到容器環(huán)境中。經(jīng)過(guò)一段時(shí)間的學(xué)習(xí)、適應(yīng)和磨合,客戶按照DevOps的文化理念進(jìn)行迭代、統(tǒng)一代碼和制品倉(cāng)庫(kù)以及配置自動(dòng)化流水線。據(jù)效能統(tǒng)計(jì):人力管理成本平均減少70%、構(gòu)建部署的頻率提升十余倍、更改失敗率降低、平均交付周期以及資源利用率都有了巨大的優(yōu)化,順利打破金融等行業(yè)的云原生、數(shù)字化轉(zhuǎn)型困局。
訪問(wèn)鏈接,體驗(yàn)華為云分布式云原生UCS:華為云UCS_華為云
關(guān)注#華為云開(kāi)發(fā)者聯(lián)盟# 點(diǎn)擊下方,第一時(shí)間了解華為云新鮮技術(shù)~