防患於未然:自動&智能的SQL質控讓你的DevOps更高效

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


DevOps與金融企業研發


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

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


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


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

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


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


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

無論哪個流派,對代碼的質控管理都是關鍵一環,通過集成Sonar、Checkstyle等能很好的實現自動化。


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


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


SQL質控的挑戰和價值


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


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


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


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


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


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


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

  • 兩大引擎,SQL解析引擎+專家引擎;
  • 覆蓋應用全生命週期:開發、測試、上線發佈、生產運行;
  • 內置的專家經驗規則+語法樹特徵值、文本正則匹配的靈活自定義規則能力,全面覆蓋用戶SQL規範;
  • 支持各種開發語言構建的應用;
  • 支持數據庫Oracle、MySQL、DB2、Microsoft SQL Server,即將支持GaussDB、OceanBase、PostgreSQL等;
  • Jenkins插件、JVM插件,與DevOps集成,自動化SQL質控;
  • 強大的OpenAPI,方便用戶快速將SQM能力與其它用戶系統集成;
  • 支持不同規模、不同研發模式的十多種場景化SQL質量管控方案,適合的才是最好的;
  • 智能優化,能夠對SQL進行全面分析後,給出精確的優化建議,比如創建索引等。


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


DevOps中的SQL質控


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

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

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


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


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

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

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


防患於未然:自動&智能的SQL質控讓你的DevOps更高效

過程示意圖


防患於未然:自動&智能的SQL質控讓你的DevOps更高效

Jenkins+SQM Plug-in實際運轉圖


案例解析與探討


X銀行、Z企業等

解決方案:Jenkins插件+JVM插件+OpenAPI,分階段落地
SQM與開發流程融合,在開發測試環節提供SQL審核服務。在開發階段處理大部分的SQL質量問題,將運維工作前置到開發階段,大大節約成本且提高開發效率。
1)SQM平臺實現與DevOps融合;
2)SQM提供SQL腳本審核功能(實時審核);
3)複雜SQL可經過SQM平臺由DBA協助處理;
4)提供SQL豁免處理流程。


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


Y銀行

解決方案:工單+OpenAPI+平臺
為了達成SQL質量控制目標,該行結合自身情況,從SQL質量控制要點出發,持續實踐迭代,利用SQM審核工具覆蓋開發環境和測試環境,進行SQL的審核與監控。
2016年SQM項目正式啟動。SQM從一開始的調研實施,到後續不斷的迭代完善,現在已經在該銀行的研發體系裡扮演了重要的角色。


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


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


防患於未然:自動&智能的SQL質控讓你的DevOps更高效


H企業

解決方案:OpenAPI+連庫捕獲+流程再造
該行對SQL審核的期望目標如下:
1)防止問題SQL流入至生產環境;
2)項目上線前SQL的檢測,對問題SQL進行審核整改;
3)設計的閉環審核流程,確保每個問題SQL都完成整改;
在對開發測試流程進行梳理,該行決定將SQM審核與開發流程融合在一起,進行流程再造。


防患於未然:自動&智能的SQL質控讓你的DevOps更高效

防患於未然:自動&智能的SQL質控讓你的DevOps更高效

想了解更多關於數據庫、雲技術的內容嗎?

快來關注“數據和雲"、"雲和恩墨,"公眾號及"雲和恩墨"官方網站,我們期待大家一同學習與進步!

防患於未然:自動&智能的SQL質控讓你的DevOps更高效

小程序”DBASK“在線問答,隨時解惑,歡迎瞭解和關注!

防患於未然:自動&智能的SQL質控讓你的DevOps更高效


分享到:


相關文章: