大概是2011年,我第一次聽到了行業內去IOE的聲音。那會剛畢業,還在一家中小銀行工作,而工作中的三件套恰恰就是IOE。當時的領導也很想挑戰一下去IOE,包括我自己也對這事很有興趣。
十年后,已經輾轉多個公司和崗位,和當年的同事問起當年三件套的現狀,他給我的答案是,I全去掉了,E去掉的一大半,O非但沒去掉,使用的規模還擴大了很多。這個答案倒也在我預料范圍內。一家中小銀行,IT部門正式編制的員工不到20人,其中多數人都是項目經理或者系統負責人的身份,所有系統都是外包開發的模式。人員編制和組織結構決定了,很多東西怎么省事怎么來。
十年前去I的時候,正好趕上pc服務器突飛猛進,成本優勢逐漸顯現出來。越來越的系統基于x86架構開發,無論從哪個角度,用它們替掉小型機都成為了大多數公司的首選。從另一個角度,以前的我所在的銀行使用的小型機只有IBM一家,各種后續支持服務如果有問題,也沒得選。替掉這些小型機之后,一下子多了好幾個廠商的硬件可以選擇。過去幾年哪家服務好設備穩定,就多采購點,反過來就減少采購量。用這個辦法也調動起來了幾家客戶經理的積極性。
EMC的存儲相對沒有那么好容易去,畢竟EMC的存儲在行業內是第一梯隊,那會不用EMC從穩定性以及性能考慮,也沒有多少選擇余地。更何況在銀行,業務穩定性壓倒一切。沒有哪個IT領導敢拿著自己的飯碗去冒這個風險。所以去E面臨的現狀要比去I要麻煩很多。核心業務系統至今還在使用EMC的存儲,而外圍系統以及一些災備環境,使用了其他品牌。從規模上來看,去掉了一大半。
去O是最復雜的,核心系統以及很多重要的業務系統都是基于Oracle開發的,去O幾乎就等同于推倒重做了。2013年核心系統替換的時候,DB2、Oracle、Sybase都曾經作為備選,但是沒有任何人敢去提用開源的MySQL或者當時國內使用人數很少的PG。而且非常重要的是,現有的運維人員都沒有過長期運維其他數據庫的經驗。要么從外面招要么讓現有的運維人員學習。從外面招就得擠壓其他編制,現有人員學習就要接受打怪升級階段遇到的各種問題。最后開了半年的會,正行長拍板,繼續使用Oracle,確保穩定性與連續性。而諸如理財、風控、網銀這些重要系統,繼續保持使用Oracle。幾年下來,伴隨著新業務不斷增多,Oracle的使用規模反而擴大了。而一些不那么重要的系統,比如OA、員工關懷、差旅預訂之類的,則陸陸續續使用了MySQL、PG以及其他數據庫。從另一個維度上,提高了其他數據庫的使用比例。
事實上,這家中小銀行是很具有代表性的。中國很多的傳統企業,對于IT部門的編制卡得都很嚴格。阿里當年去IOE是有足夠的工程師來支撐,但是面對很多中小企業一人多職能的需求,顯然做不到拿出大量的運維人員去折騰開源的東西。風險越低越好,投入編制越少越好,廠商能力越強越好。最后兜兜轉轉發現,還是得選一個穩定強大的商業數據庫。以前用Oracle的繼續用Oracle,用SQL Server的也別亂替。Oracle貴不假,但是分攤到全年的預算里,好像又沒有那么高。去O在很多傳統企業面前,反而就沒有那么急迫了。
到了外資銀行,幾乎就沒有開源數據庫被使用。除了我剛入職的時候為了補充本地監控配了一套Zabbix+MySQL,生產環境清一色的Oracle、SQL Server、Sybase。公司在全球幾十個國家都有業務,全球采購授權服務之后,分攤到各個國家的分公司,成本已經非常低。更何況和中國企業不同的是,外企有大量的四五十歲員工,很多都是扎根在Oracle二三十年的老前輩。誰敢說用開源數據庫替掉Oracle,等于直接動搖了他們在公司的根基,這種事情絕對不會發生。在離職前的最后一年,我做過多次分享,尤其是PG,和Oracle有很多相似之處,在國外的認可程度也非常高。這些資深的DBA和開發人員聽完之后,都會拿出少有的委婉來告訴我,這些東西很酷,我們也覺得會是一件很有前途的事,不過和公司目前的各種規定和策略不是很匹配,而且沒有人能拍板去做這件事情。
到了上家公司,自己熬成了名義上的DBA團隊老大,有了更多的權限。而和很多中國民營企業一樣,數據庫的種類、版本、服務標準,都沒有一個成文的規定。都是項目經理和軟件公司溝通,選一個最穩定最易用的數據庫。相當一部分比例的數據庫都是Oracle和SQL Server。經歷過多次有關去O的探索和經歷之后,我對于去O這件事情的熱情和是否去O都已經有了不一樣的認識。這一次我不再糾結于是否真的要去O,而是更多地從業務和系統本身考慮,來決定選擇哪種數據庫。
例如財務類系統,需要審計同時又要保證穩定性的,一般就默認使用Oracle,因為現階段除了Oracle沒有哪個方案更合適,也不要給自己找麻煩。一些對于復雜查詢沒有那么多需求,同時數據量又可控的系統,選擇用MySQL來支持。數據量比較大,但是沒有審計要求的,我會建議項目經理考慮一下要不要用PG。
幾年下來,讓我明白一件事情,在現有的產品選擇以及人力配置下,去O是做不到的。去O只是手段,但不是目的。從DBA的角度,最終的目的有兩個,一個是確保每年的運維成本是可控的,既包含了硬件的預算,也有每年付給Oracle和微軟的軟件授權。另一個是不要顯著增加自身的工作量。在述職報告中,我不再用去O這個字眼,而是改用減O。減少對Oracle不必要的成本投入。甚至可以和領導說,今年DBA團隊在完成更大規模數據庫運維的情況下,成本沒有明顯提升甚至持平,能不能給大家漲點工資。
最近兩年,我們都處在信創的浪潮之中。越來越多的國產數據庫應運而生。這在十年前是一件難以想象的事情。作為一個中國人,有著家國情懷,何嘗不希望有一天,我們中國人自己的數據庫,能夠在全球數據庫領域獨樹一幟。然而這一塊,我們缺課缺的太多了,Oracle、微軟積累了幾十年的優勢,絕不是三五年就能追上的。去O固然是一個很美好的愿景,然而我們仍然要銘記,不要為了去而去,仍然要從實際出發,腳踏實地地做好每一項數據庫相關的工作。
十年,從去O到減O,也是我在工作中,不斷思考不斷調整自己的一個過程。




