DevOps已不再陌生,但目前業界主要集中在開發與運維的高效協作和快速發佈上,而作為企業核心資產的數據庫,其結構設計、SQL審核、變更發佈已成為企業效率提升的主要瓶頸,這篇文章為杭州雲棲大會的分享議題(文末有視頻),將詳細介紹阿里在數據庫DevOps上遇到的挑戰以及解決方案。
>>阿里數據庫DevOps是什麼
一句話定義: 阿里數據庫DevOps是以數據庫產品為核心,促進數據庫研發自助化,提升研發效率,同時保證員工數據庫訪問安全及數據庫高性能。
阿里數據庫DevOps由3款產品組成,分別是阿里企業級數據管理服務iDB、數據庫智能優化服務CloudDBA、阿里企業級數據庫管控服務DBPaaS,本文會重點介紹阿里企業級數據管理服務iDB。
>>我們的挑戰
近10年,阿里研發人數從幾百人擴展到幾萬人,與此同時,不斷對數據庫服務提出挑戰。回顧阿里數據庫服務發展歷程,包含以下幾個階段:
2010年前,數據庫賬號直接開放給開發,自由查詢數據
2010年,為了解決數據查詢安全問題,全面回收數據庫賬號,只能DBA查詢數據
2011年,為了解決數據查詢低效問題,iDB1.0發佈,開發在WEB平臺上自助查詢數據,但此時數據庫變更尚需郵件提交給DBA
2012年,為了解決數據庫變更溝通問題,iDB2.0發佈,數據庫變更可以在線提交匯總,同時結構設計規範也可以自動應用到開發數據庫設計中,但此時數據庫變更還只能DBA執行
2013年,為了解決數據庫變更低效問題,iDB3.0發佈,開發可以自助執行數據庫變更
2014年,為了滿足阿里雲用戶對數據庫管理安全、效率的需求,數據管理DMS發佈,定位於個人數據管理雲服務
2015年,為了解決阿里業務暴漲DBA支撐瓶頸問題,iDB4.0發佈,第一次做到數據庫研發全自助
2016年,為了解決業務數據庫性能問題,數據庫智能優化服務CloudDBA發佈,定位於用戶身邊的數據庫專家
2017年,為了將多年實踐/經驗/沉澱分享給更多人,數據管理DMS企業版(iDB對應雲上產品)發佈,提供完整的數據庫研發全自助流程、企業級數據庫安全管控等服務
今天,我們(準確說是我們的產品)要解決阿里20,000開發人員高效的結構設計、SQL審核和變更發佈,要解決每週上萬條SQL發佈無慢SQL漏網,要解決每週百萬次數據查詢分析的權限控制和操作審計,因此在效率、性能和安全上,阿里數據庫DevOps正面臨巨大挑戰。
>>解決方案
當你感覺痛苦的時候,正是你成長的時候,阿里數據庫DevOps應運而生。
效率
數據庫效率最終衡量體現在發佈效率,而在發佈前面還有結構設計、SQL設計、測試數據構建、庫表同步、結構審核、SQL審核等工作,數據庫發佈自身也會細分成結構變更、數據訂正和分庫分表發佈等。
阿里數據庫DevOps在效率上的解決方案:全自助的數據庫研發流程,覆蓋上述數據庫發佈涉及的全部工作,如30+結構設計規範自動應用到開發結構設計中、多人設計衝突檢測和DDL溯源、多環境的庫表同步、百萬級測試數據自助生成等等,最終讓DBA無需參與具體項目的設計和評審,將主要精力投入到對業務架構理解,更加全局的看待業務和數據庫的關係,促進企業效率最優。
效率解決方案涉及功能太多,這裡僅以分庫分表發佈為例,希望大家能對全自助的數據庫研發流程有所瞭解:
如果選擇MySQL作為數據存儲,隨著業務增長,大多數企業都會遇到單表容量瓶頸,其中大表DDL性能問題最為嚴重。業界普遍解法是將單表拆成分表,分庫分表使得容量不再是瓶頸,但給維護管理帶來很大挑戰。
面對1024、4096個分表,如何加字段就是首要解決問題,經常遇到執行過快導致性能卡頓、一次性全量執行風險不可控、異常任務中斷等一系列問題,最終讓分庫分表方案實際效果大打折扣。
阿里數據庫DevOps在物理分庫分表基礎上封裝出邏輯庫、邏輯表,所有DDL都在邏輯庫、邏輯表上操作,而在物理分庫分表上的具體執行動作由產品來保證,目前可以做到數據庫鎖檢測、實例/庫級並行、自動灰度、執行限速、任務暫停重試等細粒度控制。
性能
數據庫性能,拋開數據庫類型/版本選擇、內核優化、硬件選型等方面,我們看到對業務感知最明顯、最關注就是SQL(準確說是慢SQL),如何從根源上解決慢SQL,而不是每次出問題時救火,是阿里數據庫DevOps一直努力的方向。
在一條SQL被設計出來,到其成為慢SQL前,它需要通過審核,這時開發提交SQL審核後,會自動抽取SVN/GIT代碼中SQL並識別變化部分,這時阿里數據庫智能優化服務CloudDBA會對有變化的SQL進行診斷,先基於規則對select *、動態SQL等給出審核建議,然後對通過規則校驗的SQL進行優化,給出索引建議,整個SQL審核流程由產品完成,開發最終會看到SQL審核報告,包含SQL改寫建議、索引建議。
在大多數業務場景中,一次性優化相對容易些,如何做到持續優化?這就需要我們的優化流程能做到閉環,自動打通從採集->分析->建議->採納->跟蹤->評估整條鏈路,而不是靠DBA人肉串聯。
數據庫性能話題很大,比如上面提到的SQL上線前審核和優化閉環,還有運行中SQL優化、空間優化、鎖優化、全量SQL、性能成本度量等等方面,我這裡不做展開,大家可以在阿里雲數據管理DMS數據庫優化服務(入口:DMS登錄數據庫-性能)找到你需要的答案。
安全
在數據庫領域,可以說數據安全是一切的基礎。而大多數企業數據庫都會存在以下幾種數據安全風險:
應用訪問
主機訪問
數據倉庫
備份
員工訪問
在企業初期,往往會關注在前四種的安全防護上,而忽略人的因素,但隨著員工增多、角色增多,員工訪問數據安全風險日益突顯,而員工訪問數據安全正是數據庫DevOps要解決的重要課題。
阿里數據庫DevOps從以下5大方面解決員工訪問數據安全:
查詢管控
變更管控
權限管控
數據分級
安全審計
每個大方面又細化出很多功能點,如權限管控就包含庫/表/列細粒度控制、物理庫/物理表/邏輯庫/邏輯表權限、查詢/導出/變更權限分類、到期提醒回收等功能點。
>>雲上:數據管理DMS
上面介紹的阿里數據庫DevOps,對應到雲上產品:數據管理DMS。
數據管理DMS產品架構如下:
從產品架構圖上可知, 數據管理DMS提供了企業版、高級版、免費版和移動版。
其中,數據管理DMS企業版為每個企業構建獨有的數據庫管理系統,包含每個企業獨有的員工信息、流程、規則和元數據,如果企業研發人數大於20人,強烈推薦使用。
如果你是個人、創業團隊或者小企業用戶,我們推薦數據管理DMS高級版, 讓你訪問雲端數據更安全。
另外,數據管理DMS最近還添加了新成員:移動版,一期支持雲端數據管理,後續還會支持數據庫診斷優化、數據庫研發流程以及自建IDC數據庫。