Jenkins之父Kohsuke Kawaguchi談持續(xù)交付流水線
一切優(yōu)秀理念和方法論的大規(guī)模普及,都有賴于先進技術(shù)的發(fā)展以及對應工具的發(fā)明創(chuàng)造來承載,DevOps持續(xù)交付理念亦不例外。軟件開發(fā)是截至目前,人類最復雜、最不可控的工程技術(shù)工作,一次代碼提交到上線,會涉及數(shù)十、數(shù)百、乃至數(shù)千個步驟、命令、服務、應用和環(huán)境,如果我們沒有自動化交付流水線來不斷提升自動化率,實施可重復且可靠的交付運作,而按照傳統(tǒng)的以流程文檔和操作規(guī)范指引、通過手工操作來進行交付活動的話,其工作效率之低、錯誤率之高已經(jīng)和正在被諸多沒有采用DevOps開發(fā)模式和持續(xù)交付工具鏈的企業(yè)所驗證。
KK談DevOps持續(xù)交付理念和方法論
Kohsuke Kawaguchi(KK)作為Jenkins的創(chuàng)始人,同時也是CloudBees公司CTO,是將DevOps持續(xù)交付理念進行工具工程化實踐的第一人,更是推動DevOps理念大規(guī)模普及的靈魂人物之一。作為軟件開發(fā)端到端持續(xù)交付系統(tǒng),Jenkins用戶量達200+萬,在持續(xù)交付流水線專業(yè)工具領(lǐng)域市場占有率超90%,是事實上的流水線工具標準。
日前,在2018華為全聯(lián)接大會上,KK帶來主題為《Super Powers Coming to Your Jenkins》的精彩演講,內(nèi)容涉及DevOps CI/CD持續(xù)交付理念和方法論,以及Jenkins流水線Blue Ocean、Cloud Native Jenkins、Jenkins Evergreen、Jenkins X等面向不同場景的產(chǎn)品解決方案及關(guān)鍵技術(shù)。
例如,有了Cloud Native Jenkins,通過云化和彈性擴容降低單點故障,用戶就不會在周五晚上接到Jenkins服務宕機需要修復的連環(huán)奪命call,也無需做資源的預留以降低運維成本和前期投資,未來也將會有更高的性能表現(xiàn)。
Jenkins Evergreen提供了預置模板,用戶僅需幾次點擊,在幾分鐘內(nèi)即可生成一條可持續(xù)工作的流水線,大大簡化流水線的配置步驟,有效降低配置門檻。Evergreen所有的配置均由Jenkins管理,可在線升級,用戶只需專注于自己的業(yè)務開發(fā)和交付即可,無需關(guān)注各種復雜的流水線配置和組件管理。
Jenkins configuration as code實踐一切配置即代碼,用戶可通過編寫YAML腳本來對接插件、安全工具、檢查工具、文檔服務等,任何工具或者服務均可以通過腳本來實現(xiàn)對接?;诖?,用戶可以對版本控制、代碼審計、滾動部署等環(huán)節(jié)跟蹤查看,精確追溯插件集及其版本,使用戶對各種更改更有信心。
隨著新型云操作系統(tǒng)kubernetes的興起,用戶需要跟進學習一大堆新知識、工具和服務,比如如何往容器遷移,如何安裝和實施k8s,如何將容器安裝到k8s,k8s的生態(tài)系統(tǒng)和工具鏈對比選型等等,總而言之,適配Kubernetes絕非易事。Jenkins X致力于提供持續(xù)交付云原生應用的最佳實踐,涵蓋構(gòu)建、測試、審查、變更、協(xié)作等各種最優(yōu)產(chǎn)品。
華為云DevCloud Cloudpipeline實踐分享
此外,會上華為專家還向與會者介紹了DevCloud Cloudpipeline實踐。華為云專家講道,華為研發(fā)模式先后經(jīng)歷了手工作坊、IPD、測試自動化工廠、CI、CD、DevOps等各種研發(fā)模式的變遷,隨之進行了對應的組織和流程變革,并產(chǎn)生了相應的工具平臺來承載這些模式的落地和運行。隨著研發(fā)模式、組織、流程、工具的不斷變革,產(chǎn)品交付效率大幅提升,TTM時長從過去的1~1.5年縮短至2~6周。一些偏互聯(lián)網(wǎng)化的產(chǎn)品,迭代周期縮短至1周,每天可以并行發(fā)布多個微服務。
在這個過程中,自動化的持續(xù)交付流水線平臺/服務,是最核心的工程實踐?;诹魉€,以代碼提交到上線的端到端交付周期的縮短作為目標驅(qū)動,使得各服務自動化能力和并發(fā)效率實現(xiàn)大幅提升改進,比如手工轉(zhuǎn)自動化測試、容器化構(gòu)建、基礎設施即代碼、容器化部署、灰度發(fā)布服務等,確保產(chǎn)品最終的可重復、可靠的快速迭代發(fā)布。
華為內(nèi)部8萬研發(fā)員工,最初使用的基本都是商用開發(fā)工具,而這些工具很難滿足產(chǎn)品敏捷交付的需求,畢竟產(chǎn)品的敏捷和快速迭代,有賴于工具平臺的敏捷和快速迭代能力的支撐。因而全面轉(zhuǎn)向了開源,并在保證100%兼容原生開源系統(tǒng)的同時,進行云化、服務化、單點登錄、多region、高并發(fā)、高可靠、高安全、面向不同行業(yè)和解決方案場景等方面持續(xù)強化,構(gòu)筑產(chǎn)品核心競爭力。
當華為意識到,華為內(nèi)部面臨的軟件持續(xù)交付工具鏈搭建、運維的核心痛點,其他企業(yè)也會面臨時,便將工具鏈對外提供服務。希望通過可視化、靈活編排的自動化持續(xù)交付流水線及DevOps工具鏈,實現(xiàn)不中斷業(yè)務升級,產(chǎn)品分鐘級發(fā)布上線,助力企業(yè)大幅縮短交付周期,提升交付效率和產(chǎn)品質(zhì)量。
華為產(chǎn)品團隊和代碼規(guī)??缍葮O大,一些典型的大產(chǎn)品,代碼量達1000+萬行,團隊規(guī)模也達1000+人,不僅組件多,團隊也多,相互依賴更多。同時,華為大平臺戰(zhàn)略帶來一個現(xiàn)象,就是產(chǎn)品通常依賴于另外一個獨立BG下的一個大平臺產(chǎn)品,且業(yè)務BG內(nèi)部還會有自己的小平臺產(chǎn)品,這樣導致一個產(chǎn)品會依賴于好幾個不同團隊交付的不同平臺。而由于產(chǎn)品規(guī)模太大,業(yè)務特性達數(shù)千個,模塊也往往達到數(shù)十上百個。不同部門使用的環(huán)境和組網(wǎng)也會存在極大差異。
在這種復雜的環(huán)境下,華為構(gòu)建了分層分級持續(xù)交付流水線,分為個人級、項目級、子系統(tǒng)級、產(chǎn)品級(版本級)、解決方案級等數(shù)級流水線,通過流水線編排工作流、觸發(fā)下一級流水線的執(zhí)行來保障產(chǎn)品團隊和組件之間的協(xié)同交付。
在這個過程中,配套L1-L4分級測試模型,在不同層級流水線執(zhí)行不同的自動化測試策略,并設置每個階段任務對應的質(zhì)量門禁來判斷是否允許流水線繼續(xù)執(zhí)行。通過多級流水線的層層防護,使得缺陷發(fā)現(xiàn)前移,有效保障了產(chǎn)品質(zhì)量。
對應于最新的微服務化的產(chǎn)品形態(tài),配套提供了微服務持續(xù)交付流水線模板。區(qū)別于傳統(tǒng)產(chǎn)品持續(xù)交付流水線,微服務流水線在角色權(quán)限上匹配全功能團隊全棧工程師的角色權(quán)限模型,SDE可以從代碼提交并端到端執(zhí)行流水線直至微服務發(fā)布上線。同時,構(gòu)建出鏡像,并實施容器化部署、灰度發(fā)布策略、失敗自動回滾策略,微服務可按天、按小時甚至分鐘級灰度發(fā)布上線。
針對靜態(tài)資源提供了持續(xù)部署流水線,流水線從軟件包變更開始執(zhí)行,到跨多region并行部署,實現(xiàn)多區(qū)多服務器的靜態(tài)資源包自動更新。
在相關(guān)配套技術(shù)和服務中,灰度發(fā)布能力、極速構(gòu)建、基礎設施即代碼、配置即代碼、Docker、K8s、自動部署、自動化測試、CloudPipeline CDDL(Continious Deliver Domain Language)描述文件等尤為關(guān)鍵?;叶劝l(fā)布、藍綠部署等策略可以確保不中斷服務升級。增量構(gòu)建、并行構(gòu)建、依賴預讀與緩存、容器化slave等不斷提升構(gòu)建速度,從小時級進入分鐘級。通過容器化技術(shù)使得環(huán)境標準化,有效消除DTAP四大環(huán)境間的差異,減少環(huán)境配置、部署和問題定位成本。CDDL描述語言定義流水線的編排和各服務接入標準。人工審核可以在自動化能力未達到完全保障質(zhì)量的情況下,增加評審人來把控下發(fā)布質(zhì)量。
自動化一切、代碼化一切、服務化一切、版本化一切、數(shù)據(jù)化一切、可視化一切,是流水線和DevOps平臺的基本方向。未來還會包括智能化一切。同時,DevCloud流水線支持百萬級并發(fā)調(diào)度能力能力,并提供可視化看板,和任務健康度(執(zhí)行成功率)、及流水線整體、階段、任務三級執(zhí)行時長直觀展示。
在DevCloud on DevCloud的dogfooding吃狗糧實踐分享中,提及在傳統(tǒng)自動化測試理念上,探索在線測試的新方法和理念、實踐,并逐步加大在線測試比重,以便進一步縮短TTM、提升產(chǎn)品質(zhì)量。
在演講末端,華為專家基于現(xiàn)網(wǎng)進行了“一次修改如何快速上線”的實戰(zhàn)演示,這種基于現(xiàn)網(wǎng)的現(xiàn)場演示,是需要十分的底氣和自信的,也彰顯了DevCloud華為軟件開發(fā)云服務的質(zhì)量可信度。
華為正致力于Jenkins網(wǎng)站的中文本地化工作,且一直以來雙方共同探索在社區(qū)等各方面更深層次的合作,希望Jenkins和DevCloud華為軟件開發(fā)云服務能夠共同為大家提供更好的持續(xù)交付流水線服務。
最后,“The more you build quality into systems — through automation & shorter cycle times — the more you increase throughput & stability”,用流水線所承載的快速、可靠、可重復的持續(xù)交付使命作為結(jié)束吧。