Categories
程式開發

獨家揭秘東南亞電商平台 Prestomall 去 Oracle 的全過程


很多人都說:“現在的東南亞就像是坐著時光機,回到了90年代的中國市場。” 的確,在互聯網領域,我們經常能在東南亞看到中國互聯網發展歷程的影子。本文我們將詳細介紹一下東南亞企業的去Oracle經歷,揭秘中國經驗是如何復製到東南亞市場的。

Prestomall是一家成立於2014年的東南亞電商企業,此前這家企業一直使用的是Oracle數據庫。所有業務全部由一套Oracle數據庫支持,同時還有一套Oracle數據庫用來支撐測試環境。

2018年8月,距離 Oracle 數據庫軟件授權證到期還有3個月的時間,Prestomall決定不再使用Oracle數據庫,並開始尋找替代方案。為什麼Prestomall決定在這個時候去Oracle呢?選定的替代方案是什麼呢?整個遷移過程又是如何做的? …為了搞清楚這些問題,InfoQ採訪了參與Prestomall去Oracle全過程的阿里雲技術團隊。

為什麼要去Oracle?

過去幾年,隨著整個東南亞移動互聯網的發展,Prestomall也迎來了增長黃金期。以營收規模計算,過去3個財年,該公司實現了256%的增長。 Prestomall 業務的成功使得公司需要處理的數據量出現井噴式的增長,IT費用也隨之水漲船高,這也是Prestomall決定去Oracle的主要原因。

Oracle的License費用太高了,隨著Prestomall 客戶量和數據量的增加,這部分費用佔據了大部分的IT預算,制約了其業務的發展,所以在授權還剩三個月的時候,Prestomall開始尋找Oracle的替代方案。

另外,隨著業務的快速發展,現有的Oracle數據庫垂直架構限制了其彈性增長的需求,傳統數據庫不適應快速的互聯網+發展,這也使得Prestomall下定決心替換Oracle。

技術選型

減少IT費用是 Prestomall 去Oracle的主要原因,所以最初在選擇替代方案時,IT費用是一個重要的指標,同時由於授權即將到期,遷移時間也是需要考慮的重要因素。

最開始的選型方案:更傾向於開源數據庫

據了解,Prestomall最初想到的替代方案有三種,分別是:

第一種,採用Oracle外的另一種商用數據庫,如IBM DB2, 微軟SQL Server等;

第二種,使用開源數據庫,例如MySQL、PostgreSQL;

第三種,保留Oracle,繼續續費License;

Prestomall想要徹底去Oracle,擺脫傳統傳統商業數據庫廠商的鎖定,所以排除了第一種和第三種方案。其實保留Oracle或者使用其它商業數據庫本就是權宜之舉,除非沒有可行的辦法或者時間來不及,才會保留Oracle,畢竟業務的正常運行是必須要保障的事情。不過,Prestomall 團隊也意識到,如果繼續拖延的話,未來去Oracle的困難和挑戰將會更大。

經過一番評估之後,Prestomall 團隊更傾向於選擇開源數據。在備選的開源數據庫產品中,PostgreSQL 比MySQL提供了更多的SQL功能,應用方面也與Oracle更加貼近,並且遷移成本也較低,自然成為了技術選型的第一選擇。

在有了初步的技術選型之後,Prestomall 團隊就遷移方案做了進一步細化的評估:

第一, 選取的數據庫與已有的Oracle有多大的兼容性 ?

第二, 延用已有的本地部署解決方案,還是遷移上雲?

第三, 遷移的工作量和時間究竟會多久?

第四, 採用新的技術方案,是否有足夠的技術支持?

最終選型方案:PolarDB + ADAM + DTS + 專家服務

Prestomall 最終選定的替代方案是 PolarDB + ADAM + DTS + 專家服務。說實話,這個方案有點出人意料,畢竟最開始這個方案並沒有出現在Prestomall的選擇列表中,而且 Prestomall 原有的Oracle數據庫是部署在本地的,選擇了PolarDB就意味著數據庫要遷移上雲。

最終方案中的PolarDB是阿里云自主研發的關係型分佈式雲原生數據庫,兼容三種數據庫引擎:MySQL、PostgreSQL、高度兼容Oracle語法;ADAM是數據庫和應用遷移服務,可覆蓋Oracle遷移的全生命週期;DTS支持RDBMS、NoSQL、OLAP等數據源間的數據交互,集數據遷移/訂閱/同步於一體。

那麼,為什麼最終會選擇這個方案呢?阿里雲數據庫與應用遷移產品總監楊霖表示主要原因其實有三個:

一是上雲適配業務發展。之前Prestomall使用的是本地Oracle數據庫,而選擇PolarDB就可以享受到雲數據庫彈性擴展的能力,按需申請資源,對於電商企業而言這種模式非常適配業務。

二是遷移成本最優。這裡的成本不單單是指遷移後數據庫資源的使用費用,同時也包括了遷移的工作量、代碼的修改量以及遷移時間等其它成本。經過評估,PolarDBD與Oracle數據庫的兼容性非常高,整體遷移成本最優。

三是風險整體可控,技術支持有保障。 2000年,阿里開始使用Oracle數據庫,2008年,決定去Oracle數據庫。當前Prestomall的遭遇,跟十年前的阿里一樣,而在過去十幾年中,阿里的技術人員趟出了從Oracle-RAC 數據庫到PolarDB,從雲下到雲上的搬遷,積累了很多經驗,並沉澱了類似ADAM、DTS這樣的產品。這些成功經驗對Prestomall來說有著很大的吸引力。

據透露,在最初的提案階段,阿里雲數據庫團隊通過ADAM給出了一個超詳細的改造計劃,包括DB層面如何去自動映射、自動解析、自動轉換,以及應用層每一行代碼如何改造。同時,還對不同數據庫產品的兼容性做了比較定量的代碼改造分析。

阿里雲數據庫國際站產品負責人德邁介紹:“使用ADAM分析之後,我們發現,如果不使用ADAM,從Oracle遷移到PostgreSQL,80%以上的代碼是需要修改的,如果使用ADAM遷移到PostgreSQL,10 %左右的代碼是需要修改的,而如果遷移到PolarDB,只有5%的代碼是需要修改的。”而這也是PolarDB入選最終遷移方案的重要原因。

遷移過程

確定了遷移方案之後,接下來要做的就是具體的遷移工作了。據了解,Prestomall整個去Oracle可以六個階段:

第一步是去Oracle的技術選型,前面我們詳細介紹了選型過程,這裡不再贅述。

第二步是去Oracle的賦能,即在實現與Oracle數據庫解耦的同時,實現業務IT架構升級,獲得更大的業務自由度。

第三步是業務改造,對於所有想要去Oracle的客戶來說,這是最難的部分。業務改造面臨的兩大問題是工作量評估和兼容性。

第四步是數據遷移,不僅要保證全量和增量數據的一致性,同時還要提供數據回流的能力,讓數據上得來下得去。

第五步是測試與調優,雖然PolarDB與Oracle兼容,但是始終是兩個產品,各自有各自的產品特性,因此遷移上去之後還需要做進一步的調試。

第六步是割接與護航,在完成上線割接之後,還會有兩個星期的阿里技術專家的保駕護航。

值得一提的是,在遷移過程中,ADAM有兩個功能發揮了很大的作用,一個是自動轉換的功能,可以幫助使用者將原有的Oracle SQL 自動改造成PolarDB兼容的SQL。另一個是自動學習功能,雖然PolarDB與Oracle是高度兼容的,但也會有語法差異,而ADAM的SQL語法染色功能會使用不同的顏色來標註語法差異,幫助使用者快速領悟到語法差異規則。

據了解,目前Prestomall的業務流量幾乎全部遷移到了PolarDB上,只剩郵件系統中的兩張表還在做反向同步。

另外提到數據庫遷移,很多人都會關心安全性的問題,尤其Prestomall作為東南亞的一家電商平台,在流程方面會更關注業務保護。據阿里雲高級DBA專家鄭旦介紹,在數據保護和業務穩定方面,阿里雲主要做了兩個層面的工作:第一個層面,DTS不僅完成了數據遷移的工作,同時還在這個過程中做了數據校驗;第二個層面,ADAM對Prestomall系統的兼容性和兼容性結果做了一致性的檢查。

寫在最後

業界一直有“天下苦Oracle久矣”的說法,但是在實際去Oracle的過程中,總會犯難。那麼,業界在去Oracle實踐時,通常都有哪些選擇呢?

阿里雲智能數據庫事業部產品總監葉正盛(鬥佛)表示:“其實去Oracle的選擇不是很多,業內常使用的基本上只有三種,一種是遷移到其它商業數據庫,但這種方式用的較少;第二種是選擇一種兼容度較高的數據庫,這種方式的優勢是業務基本不用做大的改造;第三種是切換到分佈式數據庫,這種方式的劣勢是需要在業務上做重新設計,但優點是完成之後,可以享受分佈式帶來的紅利。”