CODING DevSecOps 助力金融企業跑出數字加速度

CODING發表於2022-07-08

金融數字化步履不停,研發效能升級不止

秉“雙區”建設之勢,懷服務大灣區之志,深圳某大型銀行(以下簡稱“A 銀行”)在 2022 年全面開啟以數字化轉型為方向的第二個五年發展戰略規劃新徵程。“零售+科技+生態”動力齊驅,A 銀行堅持以科技敏捷帶動業務敏捷,不斷縱深推進數字化轉型與場景經營。

然而,隨著 A 銀行數字化轉型逐漸深入,快速擴張的 IT 建設團隊給多團隊管理及跨團隊協作帶來了全新的挑戰,而不斷變化的業務需求,也對研發資產的安全管控及研發交付的效率、質量提出了更高的要求。

為了讓 IT 建設團隊以更敏捷的協作、更高效高質的交付應對數字時代的業務需求, A 銀行最終從多家廠商中選擇引入 CODING 一站式研效平臺,從研發效能升級入手加快其數字化步伐。

CODING 災備異構方案,保障銀行業務連續性

對於金融行業來說,保障使用者資料安全以及業務連續性是重中之重。為此, A 銀行內部有嚴格的資料容災要求:硬體層面滿足一份資料三個副本儲存,任意一物理節點當機均不影響平臺正常執行使用,同時還要滿足不同平臺的異構備份。

為了幫助 A 銀行完成基礎設施升級,實現其災備要求,CODING 的專家團隊深入客戶現場,最終制定了以 CODING 為基座的容災及異構備份建設方案。在應用層面上,採用羅湖(主)-武漢(備)兩地每日定時同步增量資料,兩地 K8S 叢集主節點掛載獨立備份儲存實現連續 7 日平臺全量資料備份。同時,行內原有 GitLab 通過 CODING 持續整合流水線,自動實現定時觸發備份,達到異構訴求;備份結果每日推送上報 IM 通訊平臺,管理人員及時感知。

CODING 為 A 銀行制定的容災及異構備份建設方案

在為 A 銀行制定災備方案的過程中,如果選擇實時同步,會存在以下兩個尖銳問題:

  1. 實時同步會導致頻繁讀寫,網路穩定性、平臺穩定性難保障,且資料庫易鎖。
  2. 從容災環境切換回生產環境之後,資料一致性難保障。

因此,CODING 專家團隊最終決定選擇為 A 銀行定時同步備份,備份機每日全量與增量備份,增量同步容災環境;切換至容災環境時,全量資料及增量資料備份,再次切換生產環境刷回增量,同時容災環境備份停止。

經過嚴密的切換演練及資料一致性驗證,CODING 平臺滿足 A 銀行的高可用建設要求,能夠大大降低原始碼資產資料丟失的風險保障極端情況下程式碼資產安全。這也為 A 銀行開發中心推動各團隊使用 CODING 平臺託管原始碼打下堅實的基礎。

CODING DevSecOps,實現持續安全交付流程閉環

除了滿足銀行嚴格的災備要求,一站式 CODING 研發效能平臺給 A 銀行帶來的價值遠不止於此。 A 銀行比較注重整體研發流程的體驗,一直期望能更好地管控其研發過程,充分利用自動化帶來的便利。通過 CODING, A 銀行成功落地端到端的 DevSecOps 流程,實現程式碼的統一安全管控,打造了敏捷化、規範化、自動化的持續安全交付閉環,極大提升了軟體交付質量與速度,降低研發成本,完成研發效能升級。

A 銀行基於 CODING 落地的 DevSecOps 研發工作流

研發核心資產統一納管

對於程式碼倉庫的管理, A 銀行原先使用了 Git、SVN 等程式碼版本控制管理工具,原始碼分散在各個專案組,沒有統一的管理入口。而 CODING 提供的程式碼倉庫功能,不僅支援 Git、SVN 倉庫型別,還支援匯入 GitLab、GitHub 等主流型別程式碼倉庫,並提供倉庫分組團隊-專案-倉庫級別的精細化許可權管控程式碼評審版本管理等功能,有力支撐 A 銀行順利將散落在各個工具的程式碼全部遷至 CODING,實現組織程式碼資產的統一分散式管理

除程式碼資產以外, A 銀行還將不同業務線的文件、製品及構建資源統一接入 CODING 平臺進行管理。CODING 打通了開發、測試、運維等各個研發環節的資產管理鏈路,利用一站式的優勢成功幫助 A 銀行實現資源整合,解決其面臨的軟體資產管理分散問題。

研發管理規範統一落地

在未使用 CODING 之前, A 銀行內部缺乏分支管理規範,部分人員直接在主幹分支開發,部分又會拉取分支開發,分支和版本管理混亂。在 CODING 團隊的幫助下, A 銀行先後制定適配行內傳統單體應用和微服務應用的 Git 分支與標籤管理策略,同時建立起統一的程式碼合併評審流程及追溯審計機制,最終形成 master 主幹分支釋出feature 特性分支開發的過程分支管理模式。

A 銀行通過主幹-分支模型規範跨組織研發過程

主幹環境:部署主幹程式碼穩定版本,完整依賴,隨時發版,持續保護和維護。

分支環境:包含某個迭代分支涉及的單個/多個服務,用於聯調和測試(這裡未單獨體現出測試環境,不推薦維護測試分支,採用 master 主幹進行 daily build,隨時可部署環境,用於整合或聯調測試環境,提前發現問題)

此外, A 銀行發現研發規範很多時候依賴研發人員自覺遵守,缺乏一定的約束性。而 CODING 平臺提供的研發規範機制實時反饋規範執行情況自動攔截不符合要求的研發活動“無感”地約束和督促研發人員遵循研發規範。結合行內實際研發訴求, A 銀行在程式碼、分支、版本等方面均配置了對應的約束規則,並通過增加稽核環節,實現質量管控並減少協作溝通成本。

安全活動融入自動化 CI/CD 流水線

A 銀行的 IT 團隊長期面臨外部競爭與金融監管的雙層壓力,對業務訴求敏捷,對系統追求穩定。通過將程式碼掃描與製品掃描安全能力融入至自動化的 CI/CD 流水線,CODING 幫助 A 銀行提升業務效率的同時還構建了程式碼安全質量護城河。

如下圖所示,A 銀行在 CODING CI 流水線中融合了一系列自動化安全活動。在程式碼檢出時,系統會自動進行程式碼掃描,隨後進行單元測試,在映象被推送到 CODING 製品庫之後,隨之進行製品掃描。安全活動層層加持,消除了業務釋出之前的絕大部分缺陷與風險。

CODING 程式碼掃描支援 16 種主流開發語言的掃描方案。在設定了掃描語言方案、質量門禁之後,程式碼檢出時會自動對原始碼進行掃描自動生成問題列表並附帶修改建議

通過問題概覽大盤,研發人員可以清晰瞭解程式碼問題數量程式碼圈複雜度重複率等情況,極大地幫助 A 銀行及時發現潛藏程式碼缺陷、安全漏洞以及不規範程式碼,提升程式碼的可維護性和穩定性。

在映象構建並推送到製品庫的環節,CODING 製品掃描能力會被自動觸發。系統會對製品進行依賴分析,解析出製品引用的開源元件,再通過「騰訊安全開源元件漏洞特徵庫」識別出製品引用的開源元件存在的漏洞,輸出漏洞報告與修復建議。 A 銀行的研發人員可以通過預設的質量紅線判斷製品質量,也可在詳情頁檢視具體掃描結果。

DevSecOps 流水線一鍵複用

DevSecOps 的快速推廣,單靠重複的人工複製自然是行不通的。得益於 CODING 流水線的可配置可複用優勢, A 銀行鍼對行內常用的研發語言,結合原有指令碼,輸出了團隊內公用的流水線模板,大大降低存量系統接入 DevSecOps 的門檻。不同業務小組成員一鍵即可複用自動化流水線,提高日常研發過程中的構建與釋出效率。

研發效能全面提升,助力推進銀行數字化轉型

一站式 CODING DevOps 平臺的最大優勢,是給 A 銀行提供了統一的研發入口,為其打通從專案管理、程式碼託管、程式碼構建、測試、應用交付到系統運維的研發管理全鏈路,還同時滿足了銀行嚴格的災備異構需求,為 A 銀行高效、高質交付業務價值提供了強有力的基礎保障。在未來, A 銀行會在行內全面推廣並應用全新的基於 DevSecOps 的一站式 CODING 平臺,充分利用先進的 DevSecOps 理念讓研發鏈路運轉得更順暢、更高效、更安全。 CODING DevSecOps 解決方案,作為 A 銀行在數字化轉型過程中的強力引擎,將會持續賦能 A 銀行優化研發過程體驗、專注研發效能提升,領跑數字化業務新賽道。

相關文章