台灣新蛋雲端架構大搬家,靠中介層2周快速轉移回私雲



台灣新蛋有一套檔案管理App,後端原本部署在AWS,但美國總部為了節省公雲支出,去年七月決定自建OpenStack取代,如何將現成應用程式快速從公雲轉移到私雲,台灣新蛋IT總監劉人豪想出了一個關鍵解法。(圖片來源/iThome)

公有雲服務當道,彈性擴充的按需計價服務開始成為大企業節省基礎架構成本的手段,不過公有雲支出是否真較私有雲便宜,還是得按照企業應用型態而定,才能既符合自家需求又能降低成本。像是年營收臺幣千億元規模的美國電商新蛋(Newegg)就兩者併用,在美國總部將核心的電商系統基礎架構建置於IDC機房,但海外據點,如台灣新蛋在臺電商網站新蛋全球生活網,就看上Azure SQL資料庫較自建SQL Server實體主機可以節省近一半的成本,在2016年3月臺灣網站就從本地環境搬上了微軟Azure公有雲。

不過,台灣新蛋負責開發的另一套檔案管理App稱為NeweggBox,卻採取了不一樣的做法,反而將App的後端系統,從公有雲搬到了臺灣IDC內的自建OpenStack私有雲環境,主導整個轉移過程的關鍵人物,正是台灣新蛋IT總監劉人豪。

早在2015年初,台灣新蛋就將NeweggBox後端系統部署在AWS公有雲服務上,劉人豪表示,看上AWS的原因在於,不僅環境組態設定方便,平臺也提供了許多服務API,開發人員不需要獨立開發,只需要串接不同的API即可使用,可以減少開發時間。但是導入AWS一年之後,台灣新蛋發現營運成本越來越高。劉人豪解釋,早期開發階段中,必須建立多個VM來執行不同的功能,如儲存系統中介資料(Metadata)、運作前端Web Server需求。他表示,初期系統規模不大,而隨著新功能推出,架構逐漸成形後,所需要的VM數量就越來越多。

此外,在NeweggBox還尚未正式推出時,開發團隊可以限制需要的VM數量,來控制雲端費用的額度,但是因臺灣新蛋IT架構中,劃分成開發環境、半正式環境(Pre-Production)及正式環境等三種部署環境,服務上線後,VM用量也會增加,讓NeweggBox在AWS的運作成本提高。若以可支援2千萬名用戶規模來估算5年租用AWS服務的成本,劉人豪表示,至少需要8千萬元。

但若改用VMware或微軟商用私有雲解決方案,以台灣新蛋的未來用量,也要負擔高昂的授權費,因此,因此,新蛋高層開始思考,能否有其他替代方案,後來決定導入免授權費的OpenStack平臺Liberty版本,自己來建置一套私有雲。

原本台灣新蛋導入公有雲服務,就是不想介入太多維運工作,將資安、硬體、線路等維運工作外包給廠商解決。但是,除了成本考量,劉人豪也發現了使用公有雲提供基礎架構的一些缺點。他舉例,台灣新蛋部分IT服務必須靠24小時運作的VM運作,某些服務則是靠隨需擴充的VM執行,因此AWS針對不同使用情境,各有其專屬的計費方式。想要清楚估算整體服務的維運成本,不是一件容易的事。

公有雲服務計價機制還不夠透明

但是,劉人豪認為,AWS計費機制還不夠透明,「AWS每月寄送的電子帳單沒有提供太多細節,企業該要如確定使用量?」像是系統當機、維護的過程中,是否也被列入計費範圍中。此外,企業也應查驗系統紀錄,比對它與AWS帳單的使用紀錄是否一致,「但是開啟AWS進階的監控服務,又得支付額外的費用。」這都讓雲端服務的成本控制更加複雜。

難以掌握公有雲硬體的使用情況

此外,使用公有雲服務,IT團隊也較難掌握硬體的使用狀況。劉人豪表示,AWS曾因維運作業,通知IT團隊其服務可能受影響。但他發現,儀表板上的某臺VM出現警示紅燈,「無法確定究竟是我們的服務故障,還是AWS的維運工作導致。」他認為,IT團隊很難掌握實體設備、VM的狀況,最後只好選擇重新啟動VM。事後,透過美國總部向AWS反應,才得知原來廠商的實體伺服器故障必須進行汰換,導致服務故障。除了導入公有雲日漸提升的成本,這些使用的不方便,也間接讓新蛋決定自建OpenStack私有雲。

導入穩定版本OpenStack比較有保障

不過,OpenStack每半年推陳出新的改版步調,讓許多企業望而卻步。劉人豪表示,目前市面上還沒有一套完善的OpenStack套裝產品,讓企業可以無縫接軌升級新版本,因此每一版本的使用期限,也是台灣新蛋在思考的問題。他表示,決定採用後,儘管當時OpenStack即將推出Mitaka版本,但是考量前一個Liberty版本已經累積較多使用經驗及社群文件,為求穩定,台灣新蛋還是決定導入Liberty版本。他認為,即便使用較舊的版本,未來只要沒有資安疑慮、嚴重Bug,或是新版還沒釋出重大新功能,台灣新蛋都還是會維持在Liberty版本上運作。

一旦碰上非更新不可的情況,劉人豪也已經想好了未來的升級策略,他表示,台灣新蛋會採用平行轉移的方式進行更新,首先建立出一套最基本的OpenStack架構,再慢慢地遷移叢集上運作的VM、儲存元件。

靠系統中間層2周完成部署任務

但是,如何無痛轉移這個已經開發了一年的應用系統卻是一大挑戰。劉人豪去年4月接到新蛋總部指示後,馬上率領團隊旋緊發條,分析既有AWS的架構中的各個服務,例如AWS RDS、AWS SQS(Simple Queue Service)、AWS CloudSearch,都得找到對應的開源模組,之後IT團隊就開始模仿原有服務在AWS上運作的系統架構,來打造各自對應的Gateway層,這是用來串接AP服務和後端IaaS間的系統中間層。

如此一來,上層Ap服務都是直接介接Gateway層,而不需與底層服務直接串連,未來就算底層基礎架構還要改用其他IaaS或另一套私有雲,也不需要重新大幅修改程式碼,只要重新增加Gateway層對新環境的串聯機制即可。

花了3個月時間,終於在6月時完成了搬遷準備,並將轉移計畫提交到美國總部,高層審核後拍板定案,臺灣團隊在7月時,按照規畫開始部署OpenStack,將部署在AWS上的NeweggBox各項服務,透過中間層改介接至OpenStack的各開源元件,只花了2周時間,就完成了所有的遷移任務,「最痛苦的回憶就是三天三夜都在待在IDC機房內工作。」

最後還得測試這些開源工具,能否滿足未來5年新蛋成長的需求,劉人豪表示,目前這個OpenStack私有雲已經通過內部壓力測試,可以同時承受1百萬人同時傳送檔案的工作負載,而應付當前的使用規模,大約需要200臺VM。根據台灣新蛋的評估,NeweggBox專案未來5年改用自建私有雲的成本,可以下降到約2千多萬元,比起原本預估採用AWS時近8千萬元的預估費用,自建私有雲的「成本減低了7成以上。」劉人豪表示。

在設計新OpenStack架構時,「組態設定就是遵循正式環境的水準設計,將開發環境視同正式環境。」劉人豪表示,新蛋的IT環境總共可以分為開發環境、半正式環境及正式環境。開發人員未經許可,不得接觸半正式、正式環境。在開發團隊推出新功能時,也會經過軟體測試工程師(SQA)的測試,確認功能無誤,不會影響正式環境運作後,基礎架構團隊才會將新功能推上線,「一旦測試工程師發現有Bug,新功能就不可進入正式環境。」

《全文請見iThome(http://www.ithome.com.tw/people/113572)》