很多人都說(shuō):“現(xiàn)在的東南亞就像是坐著時(shí)光機(jī),回到了 90 年代的中國(guó)市場(chǎng)。” 的確,在互聯(lián)網(wǎng)領(lǐng)域,我們經(jīng)常能在東南亞看到中國(guó)互聯(lián)網(wǎng)發(fā)展歷程的影子。本文我們將詳細(xì)介紹一下東南亞企業(yè)的去 Oracle 經(jīng)歷,揭秘中國(guó)經(jīng)驗(yàn)是如何復(fù)制到東南亞市場(chǎng)的。
Prestomall 是一家成立于 2014 年的東南亞電商企業(yè),此前這家企業(yè)一直使用的是 Oracle 數(shù)據(jù)庫(kù)。所有業(yè)務(wù)全部由一套 Oracle 數(shù)據(jù)庫(kù)支持,同時(shí)還有一套 Oracle 數(shù)據(jù)庫(kù)用來(lái)支撐測(cè)試環(huán)境。
2018 年 8 月,距離 Oracle 數(shù)據(jù)庫(kù)軟件授權(quán)證到期還有 3 個(gè)月的時(shí)間,Prestomall 決定不再使用 Oracle 數(shù)據(jù)庫(kù),并開(kāi)始尋找替代方案。為什么 Prestomall 決定在這個(gè)時(shí)候去 Oracle 呢?選定的替代方案是什么呢?整個(gè)遷移過(guò)程又是如何做的?…為了搞清楚這些問(wèn)題,InfoQ 采訪了參與 Prestomall 去 Oracle 全過(guò)程的阿里云技術(shù)團(tuán)隊(duì)。
為什么要去 Oracle?過(guò)去幾年,隨著整個(gè)東南亞移動(dòng)互聯(lián)網(wǎng)的發(fā)展,Prestomall 也迎來(lái)了增長(zhǎng)黃金期。以營(yíng)收規(guī)模計(jì)算,過(guò)去 3 個(gè)財(cái)年,該公司實(shí)現(xiàn)了 256% 的增長(zhǎng)。Prestomall 業(yè)務(wù)的成功使得公司需要處理的數(shù)據(jù)量出現(xiàn)井噴式的增長(zhǎng),IT 費(fèi)用也隨之水漲船高,這也是 Prestomall 決定去 Oracle 的主要原因。
Oracle 的 License 費(fèi)用太高了,隨著 Prestomall 客戶量和數(shù)據(jù)量的增加,這部分費(fèi)用占據(jù)了大部分的 IT 預(yù)算,制約了其業(yè)務(wù)的發(fā)展,所以在授權(quán)還剩三個(gè)月的時(shí)候,Prestomall 開(kāi)始尋找 Oracle 的替代方案。
另外,隨著業(yè)務(wù)的快速發(fā)展,現(xiàn)有的 Oracle 數(shù)據(jù)庫(kù)垂直架構(gòu)限制了其彈性增長(zhǎng)的需求,傳統(tǒng)數(shù)據(jù)庫(kù)不適應(yīng)快速的互聯(lián)網(wǎng) + 發(fā)展,這也使得 Prestomall 下定決心替換 Oracle。
技術(shù)選型減少 IT 費(fèi)用是 Prestomall 去 Oracle 的主要原因,所以最初在選擇替代方案時(shí),IT 費(fèi)用是一個(gè)重要的指標(biāo),同時(shí)由于授權(quán)即將到期,遷移時(shí)間也是需要考慮的重要因素。
最開(kāi)始的選型方案:更傾向于開(kāi)源數(shù)據(jù)庫(kù)據(jù)了解,Prestomall 最初想到的替代方案有三種,分別是:
第一種,采用 Oracle 外的另一種商用數(shù)據(jù)庫(kù),如 IBM DB2, 微軟 SQL Server 等;
第二種,使用開(kāi)源數(shù)據(jù)庫(kù),例如 MySQL、PostgreSQL;
第三種,保留 Oracle,繼續(xù)續(xù)費(fèi) License;
Prestomall 想要徹底去 Oracle,擺脫傳統(tǒng)傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)廠商的鎖定,所以排除了第一種和第三種方案。其實(shí)保留 Oracle 或者使用其它商業(yè)數(shù)據(jù)庫(kù)本就是權(quán)宜之舉,除非沒(méi)有可行的辦法或者時(shí)間來(lái)不及,才會(huì)保留 Oracle,畢竟業(yè)務(wù)的正常運(yùn)行是必須要保障的事情。不過(guò),Prestomall 團(tuán)隊(duì)也意識(shí)到,如果繼續(xù)拖延的話,未來(lái)去 Oracle 的困難和挑戰(zhàn)將會(huì)更大。
經(jīng)過(guò)一番評(píng)估之后,Prestomall 團(tuán)隊(duì)更傾向于選擇開(kāi)源數(shù)據(jù)。在備選的開(kāi)源數(shù)據(jù)庫(kù)產(chǎn)品中,PostgreSQL 比 MySQL 提供了更多的 SQL 功能,應(yīng)用方面也與 Oracle 更加貼近,并且遷移成本也較低,自然成為了技術(shù)選型的第一選擇。
在有了初步的技術(shù)選型之后,Prestomall 團(tuán)隊(duì)就遷移方案做了進(jìn)一步細(xì)化的評(píng)估:
第一, 選取的數(shù)據(jù)庫(kù)與已有的 Oracle 有多大的兼容性 ?
第二, 延用已有的本地部署解決方案,還是遷移上云?
第三, 遷移的工作量和時(shí)間究竟會(huì)多久?
第四, 采用新的技術(shù)方案,是否有足夠的技術(shù)支持?
最終選型方案:PolarDB + ADAM + DTS + 專家服務(wù)Prestomall 最終選定的替代方案是 PolarDB + ADAM + DTS + 專家服務(wù)。說(shuō)實(shí)話,這個(gè)方案有點(diǎn)出人意料,畢竟最開(kāi)始這個(gè)方案并沒(méi)有出現(xiàn)在 Prestomall 的選擇列表中,而且 Prestomall 原有的 Oracle 數(shù)據(jù)庫(kù)是部署在本地的,選擇了 PolarDB 就意味著數(shù)據(jù)庫(kù)要遷移上云。
最終方案中的 PolarDB 是阿里云自主研發(fā)的關(guān)系型分布式云原生數(shù)據(jù)庫(kù),兼容三種數(shù)據(jù)庫(kù)引擎:MySQL、PostgreSQL、高度兼容 Oracle 語(yǔ)法;ADAM 是數(shù)據(jù)庫(kù)和應(yīng)用遷移服務(wù),可覆蓋 Oracle 遷移的全生命周期;DTS 支持 RDBMS、NoSQL、OLAP 等數(shù)據(jù)源間的數(shù)據(jù)交互,集數(shù)據(jù)遷移 / 訂閱 / 同步于一體。
那么,為什么最終會(huì)選擇這個(gè)方案呢?阿里云數(shù)據(jù)庫(kù)與應(yīng)用遷移產(chǎn)品總監(jiān)楊霖表示主要原因其實(shí)有三個(gè):
一是上云適配業(yè)務(wù)發(fā)展。之前 Prestomall 使用的是本地 Oracle 數(shù)據(jù)庫(kù),而選擇 PolarDB 就可以享受到云數(shù)據(jù)庫(kù)彈性擴(kuò)展的能力,按需申請(qǐng)資源,對(duì)于電商企業(yè)而言這種模式非常適配業(yè)務(wù)。
二是遷移成本最優(yōu)。這里的成本不單單是指遷移后數(shù)據(jù)庫(kù)資源的使用費(fèi)用,同時(shí)也包括了遷移的工作量、代碼的修改量以及遷移時(shí)間等其它成本。經(jīng)過(guò)評(píng)估,PolarDBD 與 Oracle 數(shù)據(jù)庫(kù)的兼容性非常高,整體遷移成本最優(yōu)。
三是風(fēng)險(xiǎn)整體可控,技術(shù)支持有保障。2000 年,阿里開(kāi)始使用 Oracle 數(shù)據(jù)庫(kù),2008 年,決定去 Oracle 數(shù)據(jù)庫(kù)。當(dāng)前 Prestomall 的遭遇,跟十年前的阿里一樣,而在過(guò)去十幾年中,阿里的技術(shù)人員趟出了從 Oracle-RAC 數(shù)據(jù)庫(kù)到 PolarDB,從云下到云上的搬遷,積累了很多經(jīng)驗(yàn),并沉淀了類似 ADAM、DTS 這樣的產(chǎn)品。這些成功經(jīng)驗(yàn)對(duì) Prestomall 來(lái)說(shuō)有著很大的吸引力。
據(jù)透露,在最初的提案階段,阿里云數(shù)據(jù)庫(kù)團(tuán)隊(duì)通過(guò) ADAM 給出了一個(gè)超詳細(xì)的改造計(jì)劃,包括 DB 層面如何去自動(dòng)映射、自動(dòng)解析、自動(dòng)轉(zhuǎn)換,以及應(yīng)用層每一行代碼如何改造。同時(shí),還對(duì)不同數(shù)據(jù)庫(kù)產(chǎn)品的兼容性做了比較定量的代碼改造分析。
阿里云數(shù)據(jù)庫(kù)國(guó)際站產(chǎn)品負(fù)責(zé)人德邁介紹:“使用 ADAM 分析之后,我們發(fā)現(xiàn),如果不使用 ADAM,從 Oracle 遷移到 PostgreSQL,80% 以上的代碼是需要修改的,如果使用 ADAM 遷移到 PostgreSQL,10% 左右的代碼是需要修改的,而如果遷移到 PolarDB,只有 5% 的代碼是需要修改的?!倍@也是 PolarDB 入選最終遷移方案的重要原因。
遷移過(guò)程確定了遷移方案之后,接下來(lái)要做的就是具體的遷移工作了。據(jù)了解,Prestomall 整個(gè)去 Oracle 可以六個(gè)階段:
第一步是去 Oracle 的技術(shù)選型,前面我們?cè)敿?xì)介紹了選型過(guò)程,這里不再贅述。
第二步是去 Oracle 的賦能,即在實(shí)現(xiàn)與 Oracle 數(shù)據(jù)庫(kù)解耦的同時(shí),實(shí)現(xiàn)業(yè)務(wù) IT 架構(gòu)升級(jí),獲得更大的業(yè)務(wù)自由度。
第三步是業(yè)務(wù)改造,對(duì)于所有想要去 Oracle 的客戶來(lái)說(shuō),這是最難的部分。業(yè)務(wù)改造面臨的兩大問(wèn)題是工作量評(píng)估和兼容性。
第四步是數(shù)據(jù)遷移,不僅要保證全量和增量數(shù)據(jù)的一致性,同時(shí)還要提供數(shù)據(jù)回流的能力,讓數(shù)據(jù)上得來(lái)下得去。
第五步是測(cè)試與調(diào)優(yōu),雖然 PolarDB 與 Oracle 兼容,但是始終是兩個(gè)產(chǎn)品,各自有各自的產(chǎn)品特性,因此遷移上去之后還需要做進(jìn)一步的調(diào)試。
第六步是割接與護(hù)航,在完成上線割接之后,還會(huì)有兩個(gè)星期的阿里技術(shù)專家的保駕護(hù)航。
值得一提的是,在遷移過(guò)程中,ADAM 有兩個(gè)功能發(fā)揮了很大的作用,一個(gè)是自動(dòng)轉(zhuǎn)換的功能,可以幫助使用者將原有的 Oracle SQL 自動(dòng)改造成 PolarDB 兼容的 SQL。另一個(gè)是自動(dòng)學(xué)習(xí)功能,雖然 PolarDB 與 Oracle 是高度兼容的,但也會(huì)有語(yǔ)法差異,而 ADAM 的 SQL 語(yǔ)法染色功能會(huì)使用不同的顏色來(lái)標(biāo)注語(yǔ)法差異,幫助使用者快速領(lǐng)悟到語(yǔ)法差異規(guī)則。
據(jù)了解,目前 Prestomall 的業(yè)務(wù)流量幾乎全部遷移到了 PolarDB 上,只剩郵件系統(tǒng)中的兩張表還在做反向同步。
另外提到數(shù)據(jù)庫(kù)遷移,很多人都會(huì)關(guān)心安全性的問(wèn)題,尤其 Prestomall 作為東南亞的一家電商平臺(tái),在流程方面會(huì)更關(guān)注業(yè)務(wù)保護(hù)。據(jù)阿里云高級(jí) DBA 專家鄭旦介紹,在數(shù)據(jù)保護(hù)和業(yè)務(wù)穩(wěn)定方面,阿里云主要做了兩個(gè)層面的工作:第一個(gè)層面,DTS 不僅完成了數(shù)據(jù)遷移的工作,同時(shí)還在這個(gè)過(guò)程中做了數(shù)據(jù)校驗(yàn);第二個(gè)層面,ADAM 對(duì) Prestomall 系統(tǒng)的兼容性和兼容性結(jié)果做了一致性的檢查。
寫(xiě)在最后業(yè)界一直有“天下苦 Oracle 久矣”的說(shuō)法,但是在實(shí)際去 Oracle 的過(guò)程中,總會(huì)犯難。那么,業(yè)界在去 Oracle 實(shí)踐時(shí),通常都有哪些選擇呢?
阿里云智能數(shù)據(jù)庫(kù)事業(yè)部產(chǎn)品總監(jiān)葉正盛(斗佛)表示:“其實(shí)去 Oracle 的選擇不是很多,業(yè)內(nèi)常使用的基本上只有三種,一種是遷移到其它商業(yè)數(shù)據(jù)庫(kù),但這種方式用的較少;第二種是選擇一種兼容度較高的數(shù)據(jù)庫(kù),這種方式的優(yōu)勢(shì)是業(yè)務(wù)基本不用做大的改造;第三種是切換到分布式數(shù)據(jù)庫(kù),這種方式的劣勢(shì)是需要在業(yè)務(wù)上做重新設(shè)計(jì),但優(yōu)點(diǎn)是完成之后,可以享受分布式帶來(lái)的紅利?!?/p>