在2018雲栖大會南京峰會企業級網際網路架構專場上,由阿裡巴巴研發效能進階技術專家陳鑫帶來了“1682億背後的“企業級”高效持續傳遞”的主題分享,從技術管理者的煩惱開始引入持續傳遞與DevOps,對阿裡DevOps落地和實際案例進行了介紹。
數十款阿裡雲産品限時折扣中,
趕快點選這裡 ,領券開始雲上實踐吧! 直播視訊請點選 以下為精彩視訊内容整理:技術管理者的煩惱

一名開發工程師的日常通常首先要拉分支,每一個研發團隊都有自己的研發規範,我們必須要遵守這個研發規範,才能做到日常的轉接的疊代。然後會進行本地的開發驗證、持續內建、合并請求、多環境測試、線上釋出,在這個過程中其實是有很多重複工作的,比如說我們如何保證每個開發拉分支的規則是一緻的,如何保證代碼品質,如何保證測試環境的穩定性等等一系列問題。在持續傳遞領域有一個原則,如果這個問題需要花很多成本,是一件非常痛苦的事情我們應該盡早的盡量頻繁的去做它,這個持續性叫做原則。我們的雲上平台重點就是解決以上這些問題,提高效率。
日常開發工程師的煩惱就是管理者的煩惱,通常他們會面臨研發流程混亂、測試品質無法保證、環境管理低效、繁雜的開源工具等。看到這些煩惱後首先就會想到雲,第二個就是持續傳遞,可以看一下這些資料,資料來源:2016中國軟體開發者白皮書
http://img.bss.csdn.net/201611171615373712.pdf-
企業上雲成為趨勢
企業雲服務使用率呈上升趨勢,非公有雲模式的部署方式目前是首選。調研資料顯示,有27%的企業正在使用雲服務,相較去年(2015年)增長了8個百分點,2014年僅為7%。出于對企業關鍵業務資料與資源的安全性考慮,六成以上企業會選擇私有雲或混合雲的方式部署服務。
-
DevOps成為業界熱詞
86%的企業不同程度都使用了DevOps相關工具。其中Docker和Jenkins作為實作DevOps的重要技術手段被使用最多,占比分别為47%和44%。
-
企業對開發工具和流程的認可
近8成企業有正規的開發流程來指導軟體開發活動。近5成企業采用本企業自己制定的開發流程。6成以上的開發團隊在使用開發相關工具。7成以上的開發團隊認為開發工具能夠提高開發效率和産品品質。21%的開發者非常期待公司在做年度計劃的時候能增加在開發工具方面的預算。
持續傳遞與DevOps
如何應用持續傳遞與DevOps來提升軟體傳遞效率呢?先介紹幾個網際網路熱詞。
1、持續傳遞:需求小批量流轉、自動化流水線、短周期頻繁傳遞,這是網際網路的理念,盡快的去傳遞下去。
2、DevOps:它是一種方法和文化,自動化、度量、分享,基礎架構即代碼。
但這并不是名詞解釋,是想說明這兩個問題一個是效率,一個是開發成本。後面會介紹阿裡巴巴如何提升效率,如何減少成本。
高效協作與成本控制
研發模式全自動化
講到研發模式首先想到的就是流水線,但流水線并沒有解決研發模式的問題,如何保證一個企業裡步調一緻,我們抽象出來的分支模式、自由模式、GitFlow模式把它們直接做到産品裡面。可以看到整個的拉分支的過程,合并的過程,釋出的過程都在這個産品裡解決了。這樣就可以保證所有團隊的步調是一緻的。是以總結了三點,第一個是規範操作。第二個是高效協作。第三個是避免錯誤。
統一技術棧和運維棧
在這裡把研發模式的傳遞流水線和視圖都進行裡統一。在代碼推薦可以推薦 SpringBoot 、NodeJS、Go、PHP、Python、Ruby等等代碼的架構,然後讓它們建立新服務的時候所有技術站都是統一的。在運維模版,有Dockerfile的推薦還有标準化的環境等等一系列來規劃它的運維。系統軟體解決的是一個資源問題。其實可以看到雲效在這的作用就是把這幾層進行了黏合,它是所有的這些東西對開發者的唯一出口,就可以規劃技術站運維站落地新技術,提高效率。
全雲化測試平台
講了效率的問題再來說說成本的問題,是如何降低成本的。每個團隊都要有自己的測試,當他們突然出現的時候就不可控了。我們要做的就是通過規範化的接入把這些測試的方案全都接到雲平台上。接入進來之後通過統一的排程,去提供機器資源,當所有的機器資源都在手裡後就可以做很多事,使得測試平台特别高效。雲效也支援企業自研自動化測試方案得接入。
測試環境隔離
大家不要小看了測試環境,阿裡巴巴已經有數萬台的線下實體資源,而且随着微服務理念的推廣,服務出現了爆炸性的增長。不可能去給每一個鍊路部署一個單獨的環境,那是怎麼做的呢?整個環境分成三個部分,第一部分是開發機。第二部分是隔離環境,部署了三個服務,這三個服務開發了一組需求。在基礎環境裡部署了所有環境。所有請求進來就可以通過雲效平台進行隔離和打标,所有請求進來先到隔離環境然後到基礎環境。
企業級持續傳遞
一個平台真正做到企業級需要哪些元素,總結了五個部分:
1、應用建立:要有完整的應用元資訊、代碼推薦、技術棧模闆和流水線編排;
2、測試驗收:有靜态掃描、代碼規約、安全測試和品質評分;
3、标準環境:有标準stage、環境規劃、标準運維模版和測試環境動态伸縮;
4、上線卡點:有管理稽核、品質驗收、測試卡點和釋出視窗;
5、部署過程:有分批政策、過程監控、快速復原和應用基線。
阿裡DevOps落地
首先在阿裡巴巴内部都是以DevOps理念以應用為中心的,以應用為出口,可以串聯流水線釋出測試環境等。在往外延伸到監控、DB等這些都是以應用為一條主線進行串聯的。開發在定義應用,在定義應用周邊這些服務的内容,是以說它其實就是在定義運維。潛移默化的把原來Ops的工作逐漸的過度到Dev身上,最終實作了DevOps理念的落地。
容器化助力DevOps落地
在2016年雙十一前阿裡巴巴決定要進行全部服務的容器化,可以說阿裡巴巴基本上進入了容器化的一個時代。圖上是兩個對比,左邊是容器化前的決策。右邊是容器化以後,所有的運維的存儲都可以放到流水線裡面,讓它能夠自助化的進行變更。可以說容器化的落地标志着阿裡巴巴正式的進入了DevOps時代。
最佳實踐
使用持續傳遞流水線
這是阿裡巴巴内部的具有阿裡巴巴特色的流水線,我們認為它是業内領先的,易于協作的。在前邊日常工程中可能是開發在進行開發,預發過程可能是測試工程師完成,正式過程可能是營運工程師在進行部署。三者的所有行為都可以在同一個平台上進行展示,這個是業界目前還沒有的。
無侵入的建構加速
目前支援所有語言的建構,因為雲效提供了幾種主流語言的建構和環境模版,也允許使用者自定義自己的模版環境,接入到雲效中。并且我們還做了一個自适應的建構緩存,來加速建構過程,而不需要額外的下載下傳工作。系統都是阿裡雲進行安全認證的,保證代碼和資料不會洩露。
全網部署能力
從圖上可以看到,首先是共有雲,還有專有雲,還有自由主機。專有雲上有沒有購買雲效,都可以通過阿裡巴巴内部的Agent技術将自由主機接入到公有雲效中。而且最大優勢是不需要暴露公網的,非常安全。而且整個的Agent是阿裡巴巴現在正全網部署的,能保證它的安全可靠。而且可以支援一鍵的接入,企業租戶隔離。使用者可以選擇通過Internet/專線将自己的自由主機跟雲效進行打通,對于普通開發者來說完全不需要關心它的資源在哪裡,來實作這樣一個比較高效的協作。
本文由雲栖志願小組陳歡整理編輯