最佳實踐:金融級企業研發中自動和智慧SQL質量控制

資料和雲發表於2020-01-10

導讀:金融業研發過程都離不開平臺支撐,實現研發過程自動化協同和控制,其中程式碼的質控可以透過整合Sonar、Checkstyle等很好的實現自動化,但是SQL的質控在自動化流程中卻長期處於空白。如今,透過SQM研發的Jenkins外掛、JVM探針,將SQL質控的自動化能力組裝到DevOps流水線中,徹底填補了這個空白,必要時配以SQM的OpenAPI,能實現更強大的能力。

DevOps與金融企業研發

IT研發領域裡,DevOps已經成為一套越來越主流的實踐方法集和文化價值觀,它可以幫助企業縮短軟體釋出週期,提升軟體質量,安全快速獲取產品開發反饋。在國內,各大金融企業很早就開始實踐DevOps理念,並且有些銀行落地比較到位,已取得很好成效,比如招商銀行、平安銀行、民生銀行、中信銀行等。

研究機構發現,在DevOps過程中,自動化是帶來組織效能差異的關鍵因素,也是DevOps 的關鍵點。產品/專案的規劃設計、計劃跟蹤、迭代開發、持續交付這些不同階段都有好的方法論支撐,比如故事地圖、Scrum框架、看板方法等,但是那些將全域性過程標準化、自動化、視覺化,關鍵流程和節點管控到位,並行開發過程協同管理到位,構建起完整DevOps流水線的企業才能獲得最大收益。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

因此,過去幾年,各企業都在構建自己的DevOps平臺,即完整的DevOps流水線。筆者總結了一下,大致分為兩個流派,開源或自研。

開源流派,基於開源工具鏈的持續交付流水線,實現從0到1快速構建DevOps能力。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

自研流派,核心大多都是對開源工具鏈的封裝、擴充套件、增強,簡化使用難度,實現DevOps目標。金融企業出於安全性、穩定性,自主可控等因素,大多走自研或合作研發DevOps平臺的路徑。

無論哪個流派,對程式碼的質控管理都是關鍵一環,透過整合Sonar、Checkstyle等能很好的實現自動化。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制


但是SQL的質量控制卻還停留在不檢測或者人工檢測,效率低,質量標準差異大,不能自動化,不能和DevOps融合的狀態,產生很大的風險隱患。

SQL質控的挑戰和價值

多年的實踐中,我們發現影響業務效能、連續性、穩定性的因素多種多樣,但歸納起來可以分為六大類,其中兩大類和SQL有關。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

在現代的企業研發中,其它因素都有較好的方法和工具控制,但SQL質量問題一直未能得到較好解決,業務爆發各種SQL效能及安全問題,倒逼必須將能夠SQL質量控制住,在其影響業務之前就要發現並消除掉。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

經過在SQL質控方向多年的探索,我們發現,雖然SQL質量問題存在於應用軟體的全生命週期,從開發、測試、釋出上線、生產執行,SQL質量問題,無處不在,但進行SQL質量控制的效果,卻是越前置越好。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

開發測試階段SQL質控效果遠遠大於生產執行階段SQL質控效果,前置解決才是根本。同時透過將SQL質控按場景工具化、自動化,和DevOps過程整合起來,可以高效的實現質控目標。SQM-SQL質量管控平臺,應運而生。

  • 兩大引擎,SQL解析引擎+專家引擎

  • 覆蓋應用全生命週期:開發、測試、上線釋出、生產執行

  • 內建的專家經驗規則+語法樹特徵值、文字正則匹配的靈活自定義規則能力,全面覆蓋使用者SQL規範

  • 支援各種開發語言構建的應用

  • 支援資料庫Oracle、MySQL、DB2,即將支援Microsoft SQL Server 、PostgreSQL、OceanBase

  • Jenkins外掛、JVM外掛,與DevOps整合,自動化SQL質控

  • 強大的OpenAPI,方便使用者快速將SQM能力與其它使用者系統整合

  • 支援不同規模、不同研發模式的十多種場景化SQL質量管控方案,適合的才是最好的

  • 智慧最佳化,能夠對SQL進行全面分析後,給出精確的最佳化建議,比如建立索引等

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

DevOps中的SQL質控

DevOps中的SQL質控應從流程制度建設、管控手段建設、人員能力提升三個維度綜合解決問題。

SQL質控前置到開發測試階段。在開發交付給測試的環節前引入SQL的質量控制,提升團隊之間的協作效率,減少返工帶來的成本增加,在測試環節引入自動的SQL質量複核能力,全面覆蓋。

人員能力和質量管控提升。人員能力,可透過培訓、專業輔導、SQL程式碼規範等方式進行提升。質量管控,藉助專業工具作為抓手進行管控,對於極端複雜問題可藉助專家支援最佳化。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

一般的DevOps流程可視為兩級流程。一級主流程是DevOps的整體過程,包括“任務管理、程式碼管理、構建和釋出、其他後續”。

“構建&釋出”的二級流程,包括了多個步驟:原始碼管理,程式碼檢查,構建,測試,部署。二級流程下又包含了多項“操作”,比如“程式碼檢查”包括了規範性檢查,安全檢查,其他檢查。

SQM研發的Jenkins外掛、JVM外掛,支援快速組裝到DevOps流水線中,在程式碼檢查環節,自動化進行SQL的質量檢查。在測試環節,自動化進行SQL的質量檢查。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

過程示意圖


最佳實踐:金融級企業研發中自動和智慧SQL質量控制

Jenkins+SQMPlug-in實際運轉圖

 案例解析與探討

  • X銀行

解決方案:Jenkins外掛+JVM外掛+OpenAPI,分階段落地

SQM與開發流程融合,在開發測試環節提供SQL稽核服務。在開發階段處理大部分的SQL質量問題,將運維工作前置到開發階段,大大節約成本且提高開發效率。

1)SQM平臺實現與DevOps融合

2)SQM提供SQL指令碼稽核功能(實時稽核)

3)複雜SQL可經過SQM平臺由DBA協助處理

4)提供SQL豁免處理流程

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

  • Y銀行

解決方案:工單+OpenAPI+平臺

為了達成SQL質量控制目標,該行結合自身情況,從SQL質量控制要點出發,持續實踐迭代,利用SQM稽核工具覆蓋開發環境和測試環境,進行SQL的稽核與監控。

2016年SQM專案正式啟動。SQM從一開始的調研實施,到後續不斷的迭代完善,現在已經在該銀行的研發體系裡扮演了重要的角色。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

截止2019年年中,該行的SQM平臺的使用者有三千餘人,配置的專案(子系統)有四百多個,監控五百多個測試庫,工單總數將近五千個,每天建立工單數有20個左右,工單當天處理完成率達80%  自動化的SQL稽核減輕了測試和運維的壓力,大大減少了人工的工作量統一了開發規範流程,透過不斷探索,總結出了最佳實踐的工作流 極大減少了應用投產之後由於SQL效能引發的嚴重問題助力該銀行打造資料中臺,以及DevOps開發運維一體化建設 促使專案效能問題統一歸檔、分類和追蹤,形成比較完善的處理閉環,併為專案組開發質量評價提供量化指標資料。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

  • Z銀行

解決方案:OpenAPI+連庫捕獲+流程再造

該行對SQL稽核的期望目標如下:

1)防止問題SQL流入至生產環境

2)專案上線前SQL的檢測,對問題SQL進行稽核整改

3)設計的閉環稽核流程,確保每個問題SQL都完成整改

在對開發測試流程進行梳理,該行決定將SQM稽核與開發流程融合在一起,進行流程再造。

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

最佳實踐:金融級企業研發中自動和智慧SQL質量控制

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2672912/,如需轉載,請註明出處,否則將追究法律責任。

相關文章