中國銀河證券攜手嘉為藍鯨,探索企業級DevOps發展之路
中國銀河證券股份有限公司,作為中國證券行業綜合金融服務提供商,致力于成為在亞洲資本市場上領先的投資銀行和具有系統重要性的證券業金融機構。中國銀河證券目前已在國內擁有證券市場業務全牌照以及覆蓋較廣的營業網絡,業務遍及全球15個國家和地區,覆蓋國內31個省/自治區/直轄市、178個地級以上城市,有著近500家營業部。
而中國銀河證券的DevOps建設經歷了由下而上和由上至下兩個發展階段,也是國內金融企業在建設DevOps過程中比較典型的發展路徑,因而中國銀河證券DevOps建設的破冰之路,是證券行業DevOps建設案例中的典型。
中國銀河證券DevOps項目負責人黃金澤老師將按照中國銀河證券DevOps建設的時間軸,分為“破冰前夕”、“如何破冰”、“建設現狀”以及“下一步規劃”四部分來逐一詳細介紹,希望能給證券同行構建企業級DevOps體系帶來一些思路與啟發。
01 破冰前夕
在企業級DevOps平臺建設的前期,中國銀河證券已有近百人規模的自主研發團隊,此時的工具集以開源與免費的工具為主。研發人員自發組織建設DevOps的工具,呈現點狀分布、工具功能單一、服務連續性弱的特點,很少會做業務連續性和工具鏈集群部署,同時有重復建設的特點,這是大部分國內金融企業DevOps的現狀。
這個階段建設DevOps的初衷,是為了提高工作效率,解決當下問題。這時候的DevOps工具的建設,通常由研發人員自發地建設解決自己的問題為主,并不由上層領導推動,提供的服務也以研發人員解決自己痛點為出發點。
比如像中國銀河證券,早期使用了JIRA、Confluence、Gitlab、SVN、Jenkins、SonarQube、Nexus和Ansible等常見的開源工具。其實當這些工具上來的時候,大家還是眼前一亮,因為效率工具切實地解放了個體研發人員的雙手。這也是很多組織在建設“企業級”DevOps工具體系前的狀態。
但可以看到,這個階段還只是在局部解決一些效率問題,因為在DevOps整體工具建設上的痛點,單靠研發人員本身力量難以推動解決。
DevOps整體工具建設的痛點是指什么呢?具體來說,就是工具的功能過于單一,都是解決個體研發人員的問題,別人想用還要單獨搭一套。而企業內每個人都搭一套工具則會造成浪費資源的重復建設,同時工具之間也豎起了各種數據流轉的隔離墻,企業IT的整體效率反而被消耗掉了。
所以DevOps工具建設的下一個階段,需要企業花費大量精力做工具間的集成,通過整合工具、打通權限、打通測試數據和日志等數據流,使代碼能夠在工具之間流轉。
此時,企業建設下一階段的DevOps體系,面臨著兩個大方向選擇:
一就是增加大量的人手,通過集成工具來搭建企業級DevOps平臺。二就是花錢購買成熟的商業產品,來實現同樣的目標。
說白了,就是看企業更缺人,還是更缺錢。當然還有另一個更高級的選擇,就是既不缺人也不缺錢的企業,那可以考慮自研DevOps平臺,自研的東西適配度肯定更好。
那回到大多數企業建設DevOps工具體系的方向性選擇上,我們可以綜合來看兩者的利弊。
就集成工具方案而言,弊端有三點:
一是人不好找。通過集成工具打造DevOps體系化工具,需要去招聘市場上招聘人才,而擁有成熟經驗的DevOps工程師市場上本就不太多。大多數時候,企業需要自己慢慢地培養。
二是建設周期比較長。工具之間數據標準并不統一,打通權限和任務流轉需要做大量的二次開發,開發后需要調試和反復的調優。沒有多年的建設,很難說交付一個好用的DevOps平臺。
三是后期的研發度量其實非常難做。研發度量是在DevOps平臺建設成熟、穩定使用后更高一層級的需求,可以理解為是研發工具的中臺系統,它能提供研發過程的各類數據。在建設到這個階段的時候,企業就會發現,前期工具整合的深度還遠遠不夠,還需要進一步地整合。而二次開發越多,工具本身的升級就越困難,這就掉入了一個坑里。
那集成工具的優勢是什么呢?優勢是企業經過大量的二次開發,通過與項目團隊多年的磨合,不停地迭代、改造,磨合出了企業自己的一套DevOps平臺,它花費了企業本身很大的精力,那它的優勢就是較大程度上適合這家企業的。
但是企業需要經歷前面一到兩年,甚至兩到三年的痛苦期。集成工具的前幾年,它可能不會帶來效率的提升,甚至可能拖累整個研發效率,這時DevOps團隊會面臨被質疑,甚至團隊活不到平臺建成那一天。
那砸錢買的成熟平臺,優勢又是什么呢?優勢就是快。可以馬上吸取行業多年的沉淀經驗,工具里面固化的經驗和方法,企業拿來就能用。
再一個就是不容易走彎路。DevOps平臺的建設非常依賴DevOps負責人的經驗,他的方向錯了,平臺很可能就失敗了。
可成熟平臺的劣勢是什么呢?劣勢就是產品只能適配企業七八成的需求。比如企業里面有一個特殊的系統,有特殊的構建和部署方式,那產品只能優先考慮解決七八成通用構建方式的系統,最后才會考慮適配這些特殊的系統。而且在適配上,也需要企業項目組自己去適應產品,而不是由產品來適應所有的項目組。產品沒有辦法保證能夠百分百適應所有團隊的使用習慣。
以上就是企業級DevOps工具體系建設的兩種路線選擇,可以根據自身企業的情況來做出選擇,并沒有一個行業通行的做法。
02 如何破冰
首先,需要自上而下推動企業DevOps平臺的建設。可能有人會問,怎么自上而下呢?
因為DevOps的工具特點就是解決研發測試人員本身的問題,而不是解決上層領導的問題。上層領導可能看不到研發怎么解決的問題、問題解決得怎么樣,看不到的問題,那就覺得沒有問題。
所以,這就需要有個抓手,能夠提起上面領導的重視,同步解決研發人員自己的問題。
這個抓手,就是研發度量。前面提到,研發度量就是企業研發工具建設的中臺系統。通過讓研發人員都在DevOps平臺上來干活,干活就產生數據,有數據就可以作分析,分析出來的內容就可以度量,度量出哪里好、哪里不好、哪里有瓶頸,同時還能考核外部的廠商。
這就抓住了上面領導的需求,同時解決了下面的問題。所以說,度量就是推動自上而下的一個關鍵,也是破冰的抓手。
DevOps的建設是企業數字化轉型的前提和基礎,幾乎所有的自主研發型IT團隊都離不開DevOps。我們過去時常提及企業數字化,那企業里面研發人員都沒能數字化,他們都沒有效率工具和研發過程可視化工具,他們都沒有自己的中臺,又如何讓企業內業務部門數字化呢,又如何懂給別人建中臺呢?
所以DevOps平臺是非常重要的基礎設施,沒有DevOps平臺的企業搞數字化,研發人員其實就是帶著腳鐐在跳舞。
中國銀河證券從2013年起就開始了建設DevOps,當時首先引進了項目管理工具JIRA和Confluence。
2013年至2019年,是自下而上建設DevOps的階段,這時候使用了大量的免費開源工具,分散式地構建了大量的技術棧。
2019年至2021年,通過引進外部咨詢加開源工具的方式,初步整合及搭建起企業級DevOps的工具鏈。
2021年到2022年,公司通過采購成熟的商業產品加整合已有工具的形式,自上而下地建設了DevOps平臺,幫助我們更好地推動企業數字化轉型。
03 破冰現狀
目前通過引入嘉為藍鯨產品,中國銀河證券逐步搭建起了適合自身業務特性的DevOps平臺。
以下是DevOps完整流水線的配置示意圖,可以看到中國銀河證券是重流水線設計型,而有一些企業是輕流水線設計型,這個沒有好壞之分。在中國銀河證券流水線的應用里面,會設置有大量的門禁和審批節點,幫助中國銀河證券實現研發管理的自動化和強管控。
以下是自動化測試工具接入平臺的示意圖。目前,中國銀河證券已陸續建設了接口測試、單元測試和UI自動化測試,后面還計劃建設性能測試和安全測試。
以下是DevOps流水線的質量門禁。通過整合測試相關的數據,在流水線中加入可以定制化的質量門禁。開發的日常工作中會有很多定制化的數據進來,當不符合門禁要求的代碼流經流水線的時候,門禁就會自動化攔截并通知相關開發人員,實現代碼質量的自動化管控。
測試作為流水線里邊很重要的一個環節,它是后面能做門禁數據的一個前提,也是門禁數據的其中一個來源。只要自動化測試做得好,就可以節省很多功能測試的相關人員。
以下是DevOps數據打通的示意圖,自前期設計的時候開始,中國銀河證券就已經做好了打通所有研發數據的準備。中國銀河證券基于JIRA的需求編號,通過讓開發人員在代碼提交時,要求在Git Commit Message中關聯到JIRA需求編號的形式,將需求任務、開發任務、缺陷代碼、流水線集成、部署制品,數據打通并關聯到一起,為后續度量平臺的建設提供了數據上的支持。
以下是DevOps工具打通的示意圖。黃色的部分是引入嘉為藍鯨DevOps平臺的能力,在與原有工具(藍色)整合后,構建起中國銀河證券的DevOps工具全景圖。
可以看到,研發度量是中國銀河證券在建設DevOps工具體系前,就提前考慮好的重要建設內容。若不提前鋪墊,后面在建設研發度量的時候,就會遇到工具集成深度不夠、數據打通不足等問題。
04 后續展望
以下這張圖是研發度量平臺建設的5個階段,包括最開始的敏捷理念的推廣,然后是研發過程的標準化、工具的準備和打通,再然后是指標體系的建設,最后是度量指標促進標準執行。目前中國銀河證券剛完成研發標準化、業務自動化和工具智能化的建設,正在推進研發度量領域推進指標體系的建設。
下一階段就是平臺建設完畢后,中國銀河證券將通過度量平臺反哺企業研發過程,發現研發瓶頸、促進效率的進一步提升,這正是中國銀河證券研發度量的核心目標。
中國銀河證券也將積極響應國家信創計劃,推動DevOps平臺信創建設。同時中國銀河證券也計劃在明年通過信通院DevOps三級標準。
中國銀河證券的DevOps平臺建設將不僅僅局限于對應用發布的自動化,也會持續向配置管理和數據發布自動化發展。未來,DevOps平臺將會滲入到研發過程的方方面面,全面提升軟件研發全生命周期各環節的效率與質量。