易寶支付首席技術官陳斌

你的智慧型手機裡,現在有幾個支付工具呢?或者,有幾個電子錢包?隨著行動支付逐漸影響人們的日常生活,現在臺灣開始有人試著不帶錢包出門,光靠智慧型手機在外解決一整天的交易需求。

但這件事在中國大陸早已不是新聞,每一個去過中國大陸的人,無不盛讚其第三方支付發展的網絡綿密,帶來的高度便利性已經成為日常中不可或缺的一項服務,甚至很多小店家根本不願意收紙本現金,只接受掃碼支付。

2011年,易寶支付成為了中國境內第一批發放《支付業務許可證》的支付業者,不過,他們早在2003年就展開了行動支付版圖,在2005年推出第一代支付平臺,歷經14年發展,從網路支付一路延展到手機支付。一開始只靠一臺主機就能處理幾千筆的交易,但現在的易寶支付,每秒鐘有4千筆交易正在發生,一年就有2兆筆交易。

早在創辦初期時,易寶支付首席技術官陳斌加入易寶支付,當時他擔任技術副總約一年時間後赴美,先後任職過Nokia美國首席工程師、eBay與PayPal資深架構師。直到2014年他再次回歸易寶支付,這次他帶著更多能量,率領技術團隊,打造易寶集團的技術體系。

3維度架構擴充策略:水平複製、服務拆分和數據拆分

陳斌透露,為了符合越來越高頻、多元的支付交易,初期以水平複製為主的技術架構,接下來的關鍵就是「拆分」策略,還能細分為「服務拆分」和「數據拆分」兩種作法。

他用「3維度策略」來形容易寶支付平臺的技術發展歷程,包括了水平水平複製(X軸)、服務拆分(Y軸),以及可以無限擴展的Z軸擴充作法,也就是數據拆分。這3個維度的成效會相互加乘,任一軸的作法都能提高平臺的整體效能。就像3維座標中,立方體的長、寬、高任一邊增加,都能讓整體體積增加的概念一樣。

易寶支付剛成立時,將所有應用,包含登錄、註冊、處理交易訂單、查詢,結清算等功能的系統都放在同一個伺服器內。但是隨著業務的發展,用戶數開始增長、支付頻率的提升等,當時一天大約只需處理幾萬筆交易,因此易寶支付採取複製資料庫的方式來擴充架構。遇到交易量增加時,就將同一份資料庫,直接複製其他主機來提供查詢,從單一資料庫架構,轉而變成多套讀取用途的資料庫和單一的寫入用資料庫,以分攤大量查詢需求。這個階段,就是陳斌所說的「X軸水平複製」策略(X- Horizontal Scalability),以複製主機的方式進行擴充,來提高平臺效能。

隨著時間拉長,易寶支付開始發現,原始系統中的6個主要功能:登錄、會員、訂單、對帳、結算跟通知的使用型態不一樣,可以進一步歸納分兩類:常用和不常用。例如,訂單和通知,這兩項是每一筆交易都會使用到的常用功能,因此易寶支付改將這類「常用功能」從原有系統內部中,獨立拆分出來成為獨立的服務。陳斌表示,當不同服務的需求規模出現不平衡時,就可以進行拆分。

不只前面2項,後來發現,結算和對帳功能也需抽離到單獨的伺服器上執行。到最後,這6個功能就分別成為了6套系統。不只是功能,也會按系統服務或資源來拆分系統,以提高平臺效能。陳斌指出,這就是第二階段的「Y軸服務拆分」策略(Y-Application Separation)。

到了2009年,易寶支付的業務量,開始出現指數型的爆炸成長,每年激增3倍,先前兩種策略雖有不錯的成效,但當時系統的能力,仍然無法支撐到每秒4千筆交易。更關鍵的考驗是,支付處理的是錢的問題,任何交易作業都必須嚴謹不能有一筆疏漏。

為了避免爆量而讓資料庫系統來不及處理,易寶支付又採取了新的架構策略,陳斌說,從2009年開始,改將原本集中式的資料庫,改依照用戶名稱的字首英文字母,拆分成了26個小資料庫,並分布在3套資料庫系統中,沿著用戶的方向進行拆分。「隨著服務越來越多,分類就得更加細緻,最後分成了5套資料庫系統。」他強調,這個架構調整作法還持續進行中,若需求量再增長,他們可以將資料庫繼續細分,也許將A字母的資料庫,再分割為A1、A2、A3的次資料庫。「一直拆到能滿足處理突發性要求為止。」陳斌指出,這是第三階段的Z軸數據拆分(Z-Data Separation)。

到了2014年,易寶支付的架構拆分工作告一個段落,陳斌說,此時卻又面臨一個全新的挑戰。

日趨複雜的系統架構,設下人工維運的新障礙

強調24小時,全年無休的支付系統,必須要讓用戶隨時隨地都可以交易,那怕只是1%的系統當機時間都是很大的問題。解決了爆量交易的效能問題,但易寶支付卻在2013年到2014年這段時間裡,系統可用性(Availability)程度,大幅在97%~100%之間擺盪,甚至2013年7月~9月間掉到98%以下,意味著,若以30天來看,系統就會有2%將近14個小時無法交易。

造成系統高度不穩定的主因,竟然是架構拆分。因為拆分後,讓既有系統環境變得十分複雜,當時依靠人工處理的維運作業,變得相當困難。根據易寶支付在2014年的數據指出,在這麼複雜的IT環境下,當時,人工失誤的比例就占了所有失誤事件的19%之多。

「以前資料庫只有一個,現在有N個;以前伺服器只有一臺,現在卻有400~500臺,這麼多服務、版本、環境,再加上各有複雜的操作指令,給我們帶來很多問題。」陳斌指出,靠人工維運得面臨的問題就是不可避免的人為錯誤。「人總是會犯錯的,操作伺服器時,一個疏忽就做錯了。」再加上系統越多,同樣的維護動作就得重複越多次,更容易出錯。

而且,在維運人員訓練的成本上,也成為一大負擔。不只得持續告知維運人員系統增加了什麼新程式,甚至還得叮嚀哪些細節的影響,需仔細評估後才能執行操作。而且,一整天下來,反覆做這些例行工作,帶給員工的成就感也很低落。

資料複製、服務拆分後,伴隨而來的複雜環境,無疑地,讓人工維運這件事成為了易寶支付的新挑戰。為了解決這個問題,陳斌表示,他們決定要往智慧化、自動化的方向發展。

攝影/洪政偉

作業流程要更加自動化、智慧化,減少人員干預,讓機器自己去做自己的事。── 易寶支付首席技術官 陳斌

用Docker自建私有雲,往自動化、智慧化的DevOps靠攏

「為了解決這個問題,我們想出了很多自動化作法,都跟DevOps精神不謀而合。」陳斌舉例,不只要將過去人工處理的維運操作,寫成一支支自動化的腳本程式,也想讓研發人員能進入維運體系。因此,從一開始的程式碼、提交、測試,一直到系統正式上線的全套流程,易寶支付都重新審視與調整,要做到研發跟維運之間能無縫接軌,也能快速地實作。

例如,研發人員提交程式碼後,系統可以自動進行建置及全套測試,包含效能、功能、壓力和安全測試等。通過測試後的程式碼,就可以上傳到正式環境中執行,展開自動化部署,這也就能實現持續交付的機制。

不過,為了做到這件事,易寶支付花了整整一年時間來研究容器技術,更建立了一個專案小組,指派全職人力研究容器。評估了多種可能方向後,他們最終決定以Docker容器技術和容器調度工具Kubernetes來自建一朵容器私有雲。

在易寶支付這朵容器私有雲中,主要先透過GitLab管理程式專案和版本控制,一旦有新的程式碼上傳更新,Jenkins腳本程式會先展開建置工作,並將完成的新版Docker映像檔上傳一份到Docker容器映像檔儲存庫保存。建置完成後就會驅動QA測試,這時改由Kubernetes來接手,一方面從Docker儲存庫下載要測試的容器映像檔版本。

通過QA測試後,還要進行正式環境內測,也就是在正式環境中測試新版本(稱為生產內測),這也由Kubernetes來調度,再度從儲存庫取得這個新版容器映像檔,但改部署到與正式環境相同的內測環境上執行。通過正式環境內測後,這個新版容器映像檔就會同步複製到正式環境所用的儲存庫中,由Kubernetes部署到正式環境中啟用,來套用新版程式。

陳斌表示,導入Docker私有雲後,就算機器分布各處,也可以利用日誌系統(Journal)將所有系統Log訊息集中,一旦出現問題時,能在單一系統上掌握全部系統訊息。再者,還可以結合服務探查(Service Discovery)功能,不斷試探系統狀況,自動檢查容器的健康狀況。這些容器運作的健康資訊,還會串連到監測(Monitoring)功能,若發現異常能迅速反應。

「從DevOps的自動化部署,到正式環境中的各種服務監控,易寶支付要擔保的就是服務的彈性與不間斷。」他說。

重設IT基礎架構,高彈性、高靈活讓系統可用性大增

陳斌舉例,一般狀態下只需要5個用容器打包的Tomcat來提供服務,但當流量暴增時,系統能會自動判定是否要增加Tomcat容器,「彈性跟靈活度都高出非常多。」他說。

易寶支付這朵私有雲能自動調度和調整容器的能力,也讓伺服器的使用效率、密度大幅增高。靠著容器私有雲的新架構,易寶支付成功地精簡了伺服器規模,從數千臺,減少到只需要20臺。

不僅如此,陳斌指出,過去遇到系統上線、升級、回復或是擴充時,每次至少需要15分鐘的啟動時間。「改用Docker後,全部的部署工作都是秒級的(速度)。」這類系統維運作業,現在都可以在1分鐘內執行完成。他強調,使用Docker重新設計基礎架構後,好處非常明顯,省時、省力外,系統可用性也大幅提昇。

陳斌指出,對支付服務的平臺來說,可用性、安全性(Security),跟效率(Efficiency)是3個關鍵要素。易寶支付的系統可用性在2013年到2014年特別嚴重,但改用Docker後,大幅度的波動就不存在了,近2年都維持在99.5%以上,接近100%,「這對整個業務的支撐非常有力!」

回顧易寶支付的技術發展之路,從3個維度的擴展、拆分,到後續面臨的維運挑戰,陳斌強調,Docker不會是唯一的解法,但有一個不變的大方向是:「要讓作業流程更加自動化、智慧化,減少人員干預,讓機器自己去做自己的事。」他說。

面對未來技術走向,陳斌也提出他的看法。他指出,現在應用程式彼此相依性高,無法避免出現問題的可能性,解法就是盡可能的將應用跟應用之間脫鉤(Decouple),他說,易寶支付也持續往這個方向前進。

其次,則是軟體將逐漸朝向開源邁進,硬體則將越來越虛擬化。最後則是,自動化維運的大勢將持續成為潮流,維運人員將越來越靠近軟體,而不是跟數據中心或硬體打交道。陳斌表示,易寶支付的技術架構,將會持續往更輕量、更容易管理的方向邁進。

 CTO小檔案 

陳斌

易寶支付首席技術官

學歷:中國吉林大學資工碩士

經歷:自1993年起即投入網路服務產業,曾任日立美國系統集成總監、Abacus首席架構師、Nokia美國首席工程師,及eBay與PayPal的資深架構師。2003年就曾參與易寶支付的初期創業,在2005~2006年擔任易寶支付技術副總,2014年再次回歸,帶領技術團隊,建設易寶集團的技術體系。

 公司檔案 

易寶支付

● 成立時間:2003年8月

● 主要業務:電子支付服務平臺

● 員工數:易寶支付集團整體約2,500人

● 執行長兼共同創辦人:唐彬

● 總裁兼共同創辦人:余晨

 公司大事紀 

● 2003年:易寶支付創立

● 2005年:第一代支付平臺上線

● 2006年:併購西部支付

● 2009年:交易額突破千億人民幣

● 2011年:第一批獲得中國央行頒發《支付業務許可證》的業者

● 2013年:完成中國首筆跨境支付、發表行動支付解決方案「一鍵支付」

● 2015年:發表O2O解決方案「掌櫃通」

● 2016年:獲得《支付業務許可證》的續展


Advertisement

更多 iThome相關內容