應用朝前,數據庫向后,DBA何去何從
在最近這些年里,我一直在思考DBA的未來是如何的,此前我一直保持樂觀,不過隨著時間的推移,一種不安的感覺越來越凝重起來。
上周五在去參加一個會議的路上,我正好和海文同車。說到一件事兒,就是說在未來的數年間DBA和應用開發的關系。我們兩個都覺得在所見到的行業里有一個趨勢,那就是應用在不斷向前,而數據庫在不斷退后。周一我看到海文發了一篇同樣題目的文章,今天我從另外一個角度也來探討一下這個問題。
歷史總是在不斷循環的,從DBA苦研發久矣,到研發苦DBA久矣。這是一個歷史的輪回。我剛工作的時候,計算機和數據庫都比較弱小,因此應用 研發是IT系統的主宰,程序員是神一樣的存在。不過隨后信息技術高速發展,服務器與數據庫都在往前發展,而應用則在不斷后退。數據庫與服務器的進步讓應用開發變得越來越簡單,越來越多技術不是很強的人也都能成為程序員了,于是程序員從神變成了碼農。
在這個階段,應用系統中大量的復雜性讓服務器、存儲系統和數據庫承擔了,特別是數據庫,承擔了極為復雜的計算和邏輯推理任務。程序員的工作變得簡單了,而DBA的工作日漸復雜。這時候DBA的價值是在不斷升值的。2000年代的最初幾年里,DBA的工資待遇開始超越程序員,后來甚至形成了碾壓。我當時經營過一家軟件公司,這家公司同時也在做數據庫服務,一些優秀的程序員都希望能夠轉型成為DBA。
物極必反,隨著數據庫不斷向前侵蝕應用的領地,數據庫和服務器變得不堪重負了。企業的IT主管突然發現,數據庫成為IT系統中明顯的堵點,因為其他組件都是可集群化的,集中式數據庫不能。
互聯網架構的出現給了企業IT一個新的選擇,那就是分布式架構。隨著越來越多的傳統企業將應用架構改造為分布式架構,數據庫這個中心點被打散了,似乎以前不堪重負的數據庫服務不會成為瓶頸了。
就這樣隨著應用不斷向前,數據庫不斷向后,DBA所控制的陣地在不斷的向后退,而研發則在不斷的向前進。掌握通用IT基礎設施的DBA所掌握的技能是很容易替代的,但是研發是與業務高度集成的,他所掌握的技術不僅僅是技術本身,還包括更為復雜的業務,他們的不可替代性超越了DBA。在這場斗爭中,研發的話語權會日漸增大,而DBA的話語權則不斷喪失。
這種互聯網架構也不是毫無問題,首先是將原本高聚合的應用拆解的過程并非易事,這需要更高水平的研發團隊才能完成,這意味著更高的研發投入。另外一點是IT成本的提升,原本學習互聯網的經驗是為了節約成本,不過很多企業很快發現,硬件成本降低只是相對小型機時代的降低。如果按照X86的成本來評估,分布式改造后的總體IT投入要遠大于以前依賴數據庫進行計算的集中式架構。隨著PC服務器和數據庫技術的發展,這種趨勢越來越明顯。
前陣子和一些行業ISV交流,他們覺得以前的業務系統只要把一些核心的PL/SQL存儲過程寫好,后面的研發其實是很簡單的 。后來為了讓應用能夠適應不同類型的數據庫,以及分布式架構的改造。這些存儲過程都被JAVA模塊替代了 。JAVA替代的壞處有兩個,一個是效率大大下降了,因為JAVA程序與數據庫的多次網絡交互,讓復雜一點的應用的性能下降明顯;另外就是業務邏輯分散后管理起來十分困難了。JAVA程序員不會像以前一樣直接調用集中化的存儲過程,而是將一些業務代碼不斷拷貝 粘貼修改。
我突然想到目前國產化數據庫都是兼容Oracle 的PL/SQL,今后數據庫的存儲過程不兼容問題得到了極大的改善,那不是又可以回歸使用存儲過程了?現實是悲觀的,他們都覺得隨著那一代對業務理解十分透徹的PL/SQL程序員的老去,現在已經找不到能夠寫出復雜存儲過程的業務專家了。研發的方式一旦發生改變,就很難逆轉。
最近十年服務器與數據庫的技術進步并沒有在這場數據庫與應用的爭奪中逆轉局面,數據庫并沒有實現向前收復失地。這些年企業在總體投資上,也將更多的經費投入到了應用研發上,這大大擠壓了對于運維的投入。應用向前,數據庫向后的局面依然維持。
隨著數據庫國產化替代的開始,以目前國產數據庫的能力而言,更沒有能力像Oracle那樣向前攻占應用的領地。隨著數據庫國產化替代的不斷深入,應用還將繼續向前侵占數據庫的領地。
信創時代DBA的價值和生存空間是否會急劇縮小,對這個問題的看法,最近我有所改變。最近我的觀點是,DBA的價值 空間會被更快地壓縮。在目前我和一些國產數據庫用戶的交流中,我發現國產數據庫DBA可以做的事情比Oracle DBA少多了。一方面是他們沒法深度掌握國產數據庫運維中的關鍵技術,一方面是因為使用了國產數據庫,應用開發變得更加規范,對數據庫的使用變得相對收斂,不會肆意使用數據庫了。
說得更直白點的話,那就是在國產數據庫替換時代,企業會逼著應用開發團隊提升能力,來抵消國產數據庫能力不足這個事實,這意味著企業進一步加大對研發的投入。對DBA來說,更高水平的應用開發團隊并非好事。因為時間長了,DBA所擅長的工作大多數可以被研發接替了。今后數據庫安裝部署都被云平臺和數據庫自帶的云管平臺解決了,數據庫的擴縮容都是一鍵完成了,數據庫的慢SQL都自動審計了,SQL優化也更適合研發人員來完成,IT基礎設施的問題都被智能化監控管理得很好了,那么DBA的價值在哪里呢?研發+DBA+三線專家/原廠服務這個體系可能會變成研發+三線專家/原廠服務,DBA被短路了。
作為DBA肯定是不希望這種情況發生的,那么DBA的思想必須做出轉變,從不關心業務的IT基礎設施管理者轉向面向業務的信息系統管理者。積極向前探索,爭取將數據庫原廠的工作和一些研發的工作承擔起來。這就需要DBA去研究和熟悉業務與應用的特點,幫助研發人員解決研發工作中的難題。如果不這樣,當DBA被逼退到懸崖邊上的時候,再想反擊,可能就來不及了。
其實應用持續擠壓數據庫也并非易事,這意味著持續增加的研發投入。而隨著企業降本增效以及人力成本的不斷提升,持續加大研發投入也是有極限的。2023、2024年對大型軟件企業的調查發現,中國軟件行業的利潤下降超過90%,這一點和我的觀察是一致的。軟件研發是否需要降低成本?如何才能降低成本?這個問題可能已經有很多人在思考了。不過最大的問題是國產數據庫的能力是否能夠支撐我們采用更加節約成本的方式去做研發?這場應用與數據庫的博弈仍將繼續下去。