最佳實踐:金融級企業研發中自動和智慧SQL質量控制
導讀:金融業研發過程都離不開平臺支撐,實現研發過程自動化協同和控制,其中程式碼的質控可以透過整合Sonar、Checkstyle等很好的實現自動化,但是SQL的質控在自動化流程中卻長期處於空白。如今,透過SQM研發的Jenkins外掛、JVM探針,將SQL質控的自動化能力組裝到DevOps流水線中,徹底填補了這個空白,必要時配以SQM的OpenAPI,能實現更強大的能力。
DevOps與金融企業研發
IT研發領域裡,DevOps已經成為一套越來越主流的實踐方法集和文化價值觀,它可以幫助企業縮短軟體釋出週期,提升軟體質量,安全快速獲取產品開發反饋。在國內,各大金融企業很早就開始實踐DevOps理念,並且有些銀行落地比較到位,已取得很好成效,比如招商銀行、平安銀行、民生銀行、中信銀行等。
研究機構發現,在DevOps過程中,自動化是帶來組織效能差異的關鍵因素,也是DevOps 的關鍵點。產品/專案的規劃設計、計劃跟蹤、迭代開發、持續交付這些不同階段都有好的方法論支撐,比如故事地圖、Scrum框架、看板方法等,但是那些將全域性過程標準化、自動化、視覺化,關鍵流程和節點管控到位,並行開發過程協同管理到位,構建起完整DevOps流水線的企業才能獲得最大收益。
因此,過去幾年,各企業都在構建自己的DevOps平臺,即完整的DevOps流水線。筆者總結了一下,大致分為兩個流派,開源或自研。
開源流派,基於開源工具鏈的持續交付流水線,實現從0到1快速構建DevOps能力。
自研流派,核心大多都是對開源工具鏈的封裝、擴充套件、增強,簡化使用難度,實現DevOps目標。金融企業出於安全性、穩定性,自主可控等因素,大多走自研或合作研發DevOps平臺的路徑。
無論哪個流派,對程式碼的質控管理都是關鍵一環,透過整合Sonar、Checkstyle等能很好的實現自動化。
但是SQL的質量控制卻還停留在不檢測或者人工檢測,效率低,質量標準差異大,不能自動化,不能和DevOps融合的狀態,產生很大的風險隱患。
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進行全面分析後,給出精確的最佳化建議,比如建立索引等
DevOps中的SQL質控
DevOps中的SQL質控應從流程制度建設、管控手段建設、人員能力提升三個維度綜合解決問題。
SQL質控前置到開發測試階段。在開發交付給測試的環節前引入SQL的質量控制,提升團隊之間的協作效率,減少返工帶來的成本增加,在測試環節引入自動的SQL質量複核能力,全面覆蓋。
人員能力和質量管控提升。人員能力,可透過培訓、專業輔導、SQL程式碼規範等方式進行提升。質量管控,藉助專業工具作為抓手進行管控,對於極端複雜問題可藉助專家支援最佳化。
一般的DevOps流程可視為兩級流程。一級主流程是DevOps的整體過程,包括“任務管理、程式碼管理、構建和釋出、其他後續”。
“構建&釋出”的二級流程,包括了多個步驟:原始碼管理,程式碼檢查,構建,測試,部署。二級流程下又包含了多項“操作”,比如“程式碼檢查”包括了規範性檢查,安全檢查,其他檢查。
SQM研發的Jenkins外掛、JVM外掛,支援快速組裝到DevOps流水線中,在程式碼檢查環節,自動化進行SQL的質量檢查。在測試環節,自動化進行SQL的質量檢查。
過程示意圖
Jenkins+SQMPlug-in實際運轉圖
案例解析與探討
X銀行
解決方案:Jenkins外掛+JVM外掛+OpenAPI,分階段落地
SQM與開發流程融合,在開發測試環節提供SQL稽核服務。在開發階段處理大部分的SQL質量問題,將運維工作前置到開發階段,大大節約成本且提高開發效率。
1)SQM平臺實現與DevOps融合
2)SQM提供SQL指令碼稽核功能(實時稽核)
3)複雜SQL可經過SQM平臺由DBA協助處理
4)提供SQL豁免處理流程
Y銀行
解決方案:工單+OpenAPI+平臺
為了達成SQL質量控制目標,該行結合自身情況,從SQL質量控制要點出發,持續實踐迭代,利用SQM稽核工具覆蓋開發環境和測試環境,進行SQL的稽核與監控。
2016年SQM專案正式啟動。SQM從一開始的調研實施,到後續不斷的迭代完善,現在已經在該銀行的研發體系裡扮演了重要的角色。
截止2019年年中,該行的SQM平臺的使用者有三千餘人,配置的專案(子系統)有四百多個,監控五百多個測試庫,工單總數將近五千個,每天建立工單數有20個左右,工單當天處理完成率達80% 自動化的SQL稽核減輕了測試和運維的壓力,大大減少了人工的工作量統一了開發規範流程,透過不斷探索,總結出了最佳實踐的工作流 極大減少了應用投產之後由於SQL效能引發的嚴重問題助力該銀行打造資料中臺,以及DevOps開發運維一體化建設 促使專案效能問題統一歸檔、分類和追蹤,形成比較完善的處理閉環,併為專案組開發質量評價提供量化指標資料。
Z銀行
解決方案:OpenAPI+連庫捕獲+流程再造
該行對SQL稽核的期望目標如下:
1)防止問題SQL流入至生產環境
2)專案上線前SQL的檢測,對問題SQL進行稽核整改
3)設計的閉環稽核流程,確保每個問題SQL都完成整改
在對開發測試流程進行梳理,該行決定將SQM稽核與開發流程融合在一起,進行流程再造。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2672912/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 騰訊質量效能提升最佳實踐:智慧自動化測試探索和建設
- React SSR 企業級方案最佳實踐React
- 企業級雲資料庫最佳實踐資料庫
- “大模型驅動的軟體研發” 華為雲助推企業研發智慧化升級大模型
- NQI質量基礎設施實現企業質量新發展
- Selenium 自動化最佳實踐技巧 (中)
- 科技型企業文件外發控制管理,最佳實踐方案是什麼?
- 大資料智慧:金融行業使用者畫像最佳實踐大資料行業
- 從研發域到量產域的自動駕駛工具鏈探索與實踐自動駕駛
- 測試自動化中遵循的最佳實踐
- Spring Batch在大型企業中的最佳實踐SpringBAT
- Spring Batch 在大型企業中的最佳實踐SpringBAT
- JavaScript 最佳實踐:幫你提升程式碼質量JavaScript
- 百億級小檔案儲存,JuiceFS 在自動駕駛行業的最佳實踐UI自動駕駛行業
- DCOS實踐分享(3):基於Mesos 和 Docker企業級移動應用實踐分享Docker
- 金融科技行業軟體開發的安全類最佳實踐行業
- 金融行業研發管理行業
- 企業IT研發
- 質量運營在智慧支付業務測試中的初步實踐
- 變局之下迎重塑機遇期 智慧製造推動企業高質量發展
- QMS質量管理系統:打造企業質量控制的新紀元
- 阿里專家分享:企業級大資料輕量雲實踐阿里大資料
- DATAGUARD監控,保護和自動修復最佳實踐
- 中國遊戲企業研發競爭力報告:自研遊戲收入同比下降13.07%,企業逆境中謀發展遊戲
- 自動化測試的最佳實踐
- 分散式資料庫企業級功能技術解密與最佳實踐分散式資料庫解密
- 自研DevOps實踐dev
- StartDT AI Lab | 智慧運籌助力企業提升決策效率、最佳化決策質量AI
- 經驗分享:在金融企業中實施領域驅動設計的敏捷實踐 | 敏捷聯盟敏捷
- 《SpringBoot實戰開發》——基於Gradle+Kotlin的企業級應用開發最佳實踐Spring BootGradleKotlin
- 位元組跳動自研萬億級圖資料庫 & 圖計算實踐資料庫
- 基於Sentinel自研元件的系統限流、降級、負載保護最佳實踐探索元件負載
- 程式碼質量(權威精選植根於開發實踐的最佳讀物)
- 如何做好質量管理、提高研發的程式碼質量?
- 研發團隊資源成本最佳化實踐
- 掌握TypeScript:10個最佳實踐提高程式碼質量.mdTypeScript
- UITableViewCell使用自動佈局的“最佳實踐”UIView
- 容器技術在企業落地的最佳實踐