CODING X C-Life:DevOps 加速企業(yè)數(shù)智化
數(shù)字化開始從抽象化、標準化走向智能化
2020 給全民普及了什么是線上化、數(shù)字化、智能化,也加速了企業(yè)的數(shù)字化轉型?!叭珨?shù)字化”時代,已經(jīng)不僅僅是簡單粗放的數(shù)據(jù)采集、映射、抽象。 數(shù)字化開始邁入高級階段——數(shù)據(jù)驅動的智能化 :基于云管端 + AIoT 等為代表的新技術群落開始大量涌現(xiàn),數(shù)智化企業(yè)思考的核心問題轉向了如何以客戶運營為核心,通過智能化手段提高客戶全生命周期的體驗。
作為物聯(lián)網(wǎng)大數(shù)據(jù)行業(yè)的排頭兵, 深圳數(shù)聯(lián)天下智能 科技 有限公司 (以下簡稱數(shù)聯(lián)天下)傾力打造的 C-Life 大數(shù)據(jù)綜合計算服務平臺,致力于為個人、行業(yè)、政府提供全周期、全鏈條、全維度、全方位的專業(yè)級運營顧問式服務。依托著公司強大的研發(fā)投入與技術實力,數(shù)聯(lián)天下在智慧養(yǎng)老、智慧 健康 校園、智慧美業(yè)、智慧家庭、智慧酒店、智慧農(nóng)業(yè)、智慧水生態(tài)等多個智慧領域,打造了一批又一批的標桿示范項目。
企業(yè)的敏捷性、適應性、反脆弱性,決定其在這場數(shù)字化顛覆中的勝與負
在交付各個領域的智慧項目過程當中,數(shù)聯(lián)天下的研發(fā)部門逐漸發(fā)現(xiàn)問題:研發(fā)團隊面對的是一個更加不確定、個性化、碎片化的市場需求。行業(yè)項目雖然存在著一定的通用性,但也因地制宜的存在大量定制化需求。如何讓個性化與規(guī)模化齊頭并進?多變的客戶需求帶動了研發(fā)組織開展與業(yè)務相適應的調(diào)整。 通過研發(fā)流程數(shù)字化提升研發(fā)流程的敏捷性、適應性、反脆弱性,數(shù)聯(lián)天下開啟了研發(fā)提效之路 。
數(shù)聯(lián)天下研發(fā)團隊和我們分享道:“客戶項目周期緊張,需求變化比較頻繁,開發(fā)團隊需要在短時間內(nèi)完成軟件開發(fā)并發(fā)布上線。而在之前的研發(fā)流程當中:發(fā)布流程長,審批環(huán)節(jié)多,發(fā)布節(jié)奏緩慢,開發(fā)運維之間沒有良好協(xié)作來提升發(fā)布效率。所以亟需打破跨部門之間的壁壘,減少開發(fā)、測試、運維之間的溝通環(huán)節(jié)、溝通成本。DevOps 是我們在較短開發(fā)周期內(nèi)開發(fā)高質(zhì)量軟件的首選方法,希望通過使用 DevOps 平臺 —— CODING 來提升客戶滿意度?!?/p>
區(qū)別于之前通過多個工具自建研發(fā)流程,數(shù)聯(lián)天下團隊首先基于 CODING 的持續(xù)集成、制品庫、持續(xù)部署逐步提升交付帶寬,再將項目管理、研發(fā)數(shù)據(jù)管理等流程統(tǒng)一至 CODING ,漸進式實現(xiàn)研發(fā)流程從需求提出到應用部署的價值交付,從而讓研發(fā)團隊各個角色基于統(tǒng)一平臺通力協(xié)作,按期保質(zhì)交付項目。
持續(xù)交付驅動業(yè)務加速
在使用 CODING 的過程中,數(shù)聯(lián)天下研發(fā)團隊遵循著循序漸進的路線。首先基于 CODING 持續(xù)集成、制品庫、持續(xù)部署建立持續(xù)交付流水線。區(qū)別于自建 Jenkins 與 Nexus, CODING 的持續(xù)集成與制品庫開箱即用 ,研發(fā)團隊通過持續(xù)集成構建好的 Docker 鏡像可以直接推送到 CODING 制品庫中,再通過持續(xù)部署拉取指定版本鏡像進行部署。
CODING 持續(xù)集成在構建腳本語法上全面兼容 Jenkins,支持數(shù)聯(lián)天下無縫地遷移 Jenkins 的構建到 CODING 中。并且支持 Docker 鏡像的構建,在基礎功能上滿足了研發(fā)團隊對構建制品的遷移需求。
在使用上,CODING 比自建 Jenkins 要方便許多,打開瀏覽器就可以使用,不需要繁瑣的機器配置、構建環(huán)境搭建、軟件插件安裝。而且 CODING 提供了多地域境內(nèi)外構建節(jié)點,并優(yōu)化國內(nèi)訪問海外主流鏡像鏈路,支持構建任務中開啟緩存,大大提升了構建速度。在構建資源的靈活性上,既支持數(shù)聯(lián)天下使用 CODING 云主機進行構建,也支持數(shù)聯(lián)天下將使用中的騰訊云機器設置為構建資源。
在使用 CODING 制品庫之前,數(shù)聯(lián)天下團隊基于開源項目自建制品庫,在使用自建私服制品庫常常遇到性能問題或易用性問題,比如一上傳大容量的 Docker 鏡像時,自建的制品庫就常常服務不可用,導致后續(xù)一系列的版本發(fā)布受阻,使用 CODING 后這類問題就迎刃而解了。 CODING 制品庫是專為生產(chǎn)環(huán)境打造的企業(yè)級制品庫 ,無論是制品庫的容量、分發(fā)效率都經(jīng)過產(chǎn)品團隊精心優(yōu)化。數(shù)聯(lián)天下團隊將所有制品推送至 CODING 制品庫,利用 CODING 制品庫提供的版本策略、權限控制、安全掃描等能力對制品進行了規(guī)范管理。
不僅僅是 Docker,CODING 制品庫提供了十多種主流制品類型,包括 Helm、通用文件、npm、Maven、PyPI 等等,可以支持研發(fā)團隊多樣化制品托管需求。同時制品庫提供的精細化的權限設置,支持每個制品庫設置項目內(nèi)、團隊內(nèi)、公開的開放范圍,針對多團隊并行開發(fā)的場景,數(shù)聯(lián)天下可以輕松地將通用組件設置為團隊內(nèi)開放,將項目獨有的制品設置為項目內(nèi)可見,既能加速公共制品在企業(yè)研發(fā)內(nèi)部的共享與流動,也能確保項目獨有制品的權限安全。
對于頻繁進行商業(yè)交付的研發(fā)團隊,安全也是商業(yè)客戶關心問題之一。CODING 制品庫除了解決數(shù)聯(lián)天下團隊的制品托管問題,還對制品的安全質(zhì)量進行了規(guī)范。通過制品掃描設置質(zhì)量紅線標準,杜絕問題組件發(fā)布至生產(chǎn)環(huán)境,掃描方案還提供了詳細掃描記錄和缺陷統(tǒng)計,方便研發(fā)團隊快速修復。這在一定程度上提高了制品的安全性,減少了應用在生產(chǎn)環(huán)境出現(xiàn)的安全漏洞問題。
接下來就是打通持續(xù)交付的最后一環(huán)——持續(xù)部署。通過持續(xù)部署,研發(fā)團隊可以自動、頻繁地將軟件部署到各種生產(chǎn)環(huán)境,使軟件產(chǎn)品能夠快速地交付使用。
1. 清晰靈活的流程編排
數(shù)聯(lián)天下運維團隊首先根據(jù)測試流程、上線流程以及部署環(huán)境規(guī)劃好每個應用的 部署流程 。針對開發(fā)環(huán)境、測試環(huán)境、類生產(chǎn)環(huán)境、生產(chǎn)環(huán)境分別創(chuàng)建不同的流程分支?;?CODING 持續(xù)部署,可以快速地編排出串行或者并行的部署流程:例如針對類生產(chǎn)與生產(chǎn)環(huán)境,必須要在類生產(chǎn)的集成測試(自動化+人工)通過之后,才可以進入生產(chǎn)環(huán)境發(fā)布;而多地域的生產(chǎn)環(huán)境發(fā)布,就可以并行部署,提高效率。
基于 CODING 持續(xù)部署 清晰靈活的流程編排,應用所有的部署分支流程一目了然。
2. 人工審批加上自動通知機制
針對過去運維發(fā)布過程中的多環(huán)節(jié)、多審批、多等待的情況,數(shù)聯(lián)天下團隊根據(jù)發(fā)布流程的級別差異將測試、產(chǎn)品經(jīng)理等角色加入審批環(huán)節(jié),配合自動化部署過程和通知機制,解決了從前需要人工反復確認部署環(huán)節(jié)的問題;也解決了從前開發(fā)人員只能等待運維人員定時部署版本的難題,開發(fā)和運維人員都可以隨時隨地按需部署應用。
每個環(huán)節(jié)的通知除了支持常見的站內(nèi)通知、企業(yè)微信、釘釘、Bearychat 等方式,還支持團隊通過 Webhook 的方式接入企業(yè)使用的其它協(xié)作工具,滿足團隊的個性化通知需求。
3. 規(guī)范的制品版本規(guī)則
在項目緊張的開發(fā)周期當中,數(shù)聯(lián)天下的制品構建地十分頻繁,制品數(shù)量也在急劇增長,其中包含了開發(fā)自測的 snapshot 版本和正式轉測的版本。如何確保測試環(huán)境、生產(chǎn)環(huán)境等能夠始終選擇主干發(fā)布的穩(wěn)定版本,避免因為手誤選到開發(fā)自測版本?通過在持續(xù)部署中的制品分支策略制定所選制品的規(guī)則,杜絕以往人工選擇臨時分支版本導致的錯誤情況。
4. 統(tǒng)一的部署控制臺
在數(shù)聯(lián)天下團隊的日常應用部署管理過程當中,CODING 持續(xù)部署提供了以應用為視角的控制臺。運維人員可以對所有應用的配置信息、基礎設施、資源分配、部署流程進行全面管理,無需在各個項目視圖之中來回切換。這對于需要面對繁多項目的數(shù)聯(lián)天下研發(fā)團隊來說, 統(tǒng)一的部署控制臺面板,大大提升了應用部署管理效率。
在應用部署完成后,就可以在 Kubernetes 集群面板中方便地檢查部署好的資源,包括集群內(nèi)資源的工作負載情況。一氣呵成的部署操作幫助運維或者開發(fā)人員一站式完成部署資源準備、部署流程編排、應用部署、部署后的檢查工作。
緊接著研發(fā)團隊將代碼管理、項目管理遷移至 CODING 的代碼托管、項目協(xié)同中。告別了過去的 SVN 代碼管理,基于 CODING 代碼托管進行 Git 式開發(fā),基于代碼掃描與 Code Review 建立研發(fā)質(zhì)量的基線。切換到項目協(xié)同進行項目管理后, 真正打通了從需求->代碼->制品->應用的全部鏈路 ,數(shù)聯(lián)天下研發(fā)團隊基于統(tǒng)一云平臺真正實現(xiàn)端到端的價值交付。和以前基于多個工具自建研發(fā)平臺的方式對比,統(tǒng)一研發(fā)管理平臺帶來的好處有:
基于 CODING 的 DevOps 實踐,數(shù)聯(lián)天下的交付帶寬達到了較大提升。DevOps 實踐給數(shù)聯(lián)天下的研發(fā)團隊帶來的不僅僅是流程上、工具上的改變,也進一步加深了團隊的業(yè)務共識。所有角色都坐在了一起:測試、運維、開發(fā)、產(chǎn)品、項目管理等,研究如何基于統(tǒng)一平臺通力協(xié)作,按期保質(zhì)地交付項目,服務好客戶。
數(shù)據(jù)已經(jīng)成為生產(chǎn)的要素之一
研發(fā)數(shù)字化不僅僅是自動化流程的搭建,更重要的是在數(shù)字化落地過程當中,如何將有機串聯(lián)的研發(fā)環(huán)節(jié)發(fā)揮出 1 + 1 > 2 的效果?如何讓研發(fā)數(shù)據(jù)服務于研發(fā)?
目前數(shù)聯(lián)天下的研發(fā)團隊已經(jīng)將研發(fā)全流程切換到 CODING,慢慢積累的研發(fā)數(shù)據(jù)也給研發(fā)管理帶來了新的指引。通過效能度量,可以清晰分析成員工作負載;通過儀表盤可以清晰看到代碼提交數(shù)、事項完成數(shù)、構建次數(shù)、發(fā)布次數(shù)等等多個維度的數(shù)據(jù)展示。這些數(shù)據(jù)也將支撐著研發(fā)團隊快速地調(diào)整和檢視以適應更加多變的未來。
數(shù)聯(lián)天下研發(fā)團隊負責人告訴我們:“最開始選擇 CODING,因為 CODING 持續(xù)集成全面兼容 Jenkins 的持續(xù)集成服務,支持 Java、Python、Node.js 等所有主流語言,并且支持 Docker 鏡像的構建。這與公司現(xiàn)有的發(fā)布方式,架構體系相吻合。在使用了一段時間后,不僅僅是持續(xù)集成,包括 CODING 制品庫、持續(xù)部署在內(nèi)的 DevOps 工具給我們的研發(fā)流程帶來不少提升,也期待 CODING 能夠在研發(fā)工具鏈上給我們帶來更多驚喜?!?/p>
在全面了解數(shù)聯(lián)天下的 DevOps 實施路徑之后,我們也發(fā)現(xiàn)企業(yè)的研發(fā)變革不是一蹴而就的,需要從流程上環(huán)環(huán)打通, 選擇一個遷移成本低、使用門檻低、功能靈活的一站式研發(fā)管理工具,能夠讓變革事半功倍。
我們欣喜地看到,數(shù)聯(lián)天下一直走在提升內(nèi)部效率的道路上,這家志在提升各行業(yè)數(shù)智化水平的企業(yè)全然擁抱了研發(fā)數(shù)字化,我們期待 C-Life 憑借著變革初心與極速交付能力,逐步成為智慧生活的強有力支撐平臺。在這場數(shù)字化顛覆中,CODING 也會堅定地與研發(fā)團隊站在一起,依托 DevOps、云原生、敏捷等研發(fā)利器,幫助各行各業(yè)改進、提升并創(chuàng)新。