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