提要:借助網(wǎng)易蜂巢容器云平臺,網(wǎng)易考拉完成了核心系統的服務(wù)化和分布式改造,實(shí)現了從資源到應用的端到端彈性擴容,可保障電商系統從容面對雙11、黑五的壓力
為了備戰本次雙11,跨境電商領(lǐng)頭羊網(wǎng)易考拉海購(以下簡(jiǎn)稱(chēng)“網(wǎng)易考拉”)早早就宣布投入4億資源,精心營(yíng)造了一個(gè)“超級洋貨節”。造節在引流的同時(shí),也會(huì )給電商系統帶來(lái)了巨大的考驗。但網(wǎng)易考拉對此并不擔憂(yōu):借助網(wǎng)易蜂巢容器云平臺,網(wǎng)易考拉已經(jīng)完成了核心系統的分布式改造,全面實(shí)現了資源彈性和應用彈性,以保障電商系統在業(yè)務(wù)規??焖僭鲩L(cháng)的情況下穩如泰山,618、雙11、黑五等大規模促銷(xiāo)的訪(fǎng)問(wèn)壓力也可從容面對。
重新定義消費升級,網(wǎng)易考拉的崛起和壓力
2015年1月,攜網(wǎng)易媒體的優(yōu)勢,網(wǎng)易考拉正式開(kāi)始角逐跨境電商。只用了短短一年,從零起步的網(wǎng)易考拉就開(kāi)始沖擊100億銷(xiāo)售額。截至今年10月末,網(wǎng)易考拉已積累超過(guò)1,500萬(wàn)的忠誠復購用戶(hù),在國內自營(yíng)型跨境電商進(jìn)口銷(xiāo)售額榜單上,網(wǎng)易考拉已經(jīng)名列第一。
網(wǎng)易考拉的快速成長(cháng),有互聯(lián)網(wǎng)和消費者趨勢變化推動(dòng)的因素,但更是網(wǎng)易考拉運營(yíng)策略得當的結果。借助網(wǎng)易集團現金充沛的優(yōu)勢,網(wǎng)易考拉在跨國的倉儲、物流、供應鏈、支付等基礎工作上投入了大量的精力,全球布點(diǎn),嚴格審核供應商的資質(zhì),并通過(guò)自營(yíng)直采以保證100%正品,為贏(yíng)得消費者信任、進(jìn)行各種促銷(xiāo)活動(dòng)打下基礎。
原始積累已經(jīng)完成,2016年的雙11就是網(wǎng)易考拉的大日子。以重新定義消費升級之名,網(wǎng)易考拉瞄準了品牌、個(gè)性和專(zhuān)業(yè)等三個(gè)需求,進(jìn)行差異化的競爭(價(jià)格已經(jīng)不是電商競爭的關(guān)鍵)。網(wǎng)易考拉很早就已經(jīng)為規模促銷(xiāo)進(jìn)行準備,不僅為保稅倉擴容8萬(wàn)多平方米,從10月初開(kāi)始備貨,而且還從8月初就開(kāi)始構建了一個(gè)物流云平臺,通過(guò)智能化管理系統“祥龍”根據銷(xiāo)量預測分倉,以保證及時(shí)配送。所以,網(wǎng)易考拉有底氣在“超級洋貨節”期間推出一項1元試用正品好貨的活動(dòng),即支付1元就可申請海外商品的試用,施華洛世奇、大王、好奇等眾多海外一線(xiàn)品牌參與。
供應鏈、倉儲、配送的能力固然是與眾不同的“11.11超級洋貨節”收效的保障,然而,臨門(mén)一腳的在線(xiàn)商城系統也是不容忽視的一環(huán),如果直接面向用戶(hù)的電商系統不能及時(shí)上線(xiàn)策劃的新功能,不能頂住訪(fǎng)問(wèn)壓力,網(wǎng)站的體驗不能讓消費者滿(mǎn)意,后端的工作準備得再好也是枉然。據網(wǎng)易考拉預測,本次雙11大促零點(diǎn)的訂單量將瞬間達到平時(shí)的數倍,系統壓力極大。
另一方面,網(wǎng)易考拉對用戶(hù)體驗有一種近乎偏執的要求。根據網(wǎng)易考拉海購高級副總裁朱靜波的介紹,網(wǎng)易考拉內部有一個(gè)用戶(hù)存活率的指標,希望至少50%的大促用戶(hù)能夠因為良好的用戶(hù)體驗、有趣的內容最終留下來(lái)。
其實(shí),本次雙11帶來(lái)的技術(shù)挑戰和應對方式,正是網(wǎng)易考拉快速成長(cháng)的縮影,在此之前,618、黑五等大促銷(xiāo)規模壓力屢創(chuàng )新高,但網(wǎng)易考拉網(wǎng)站從未崩潰。這得益于網(wǎng)易考拉有一個(gè)支持彈性擴容的業(yè)務(wù)架構。當然,這個(gè)架構并不是生來(lái)就有的,而是隨著(zhù)網(wǎng)易考拉的成長(cháng)經(jīng)過(guò)了兩次大版本的迭代形成的,其中大量借鑒了網(wǎng)易互聯(lián)網(wǎng)產(chǎn)品研發(fā)經(jīng)驗。
彈性架構迭代:容器的勝利
資源的彈性是云計算的一個(gè)基本承諾,尤其是2009年雙11之后,電商團隊對彈性計算的需求愈發(fā)清晰,都自覺(jué)地探索各自的云架構。2014年底立項的網(wǎng)易考拉,也含著(zhù)資源彈性的金鑰匙出生——2012年開(kāi)始構建的網(wǎng)易私有云此時(shí)已經(jīng)上線(xiàn),支撐著(zhù)多個(gè)網(wǎng)易互聯(lián)網(wǎng)業(yè)務(wù),網(wǎng)易考拉系統也直接在網(wǎng)易私有云上開(kāi)發(fā)和部署,借助網(wǎng)易私有云計算、網(wǎng)絡(luò )、存儲資源的彈性,輔助自動(dòng)化腳本及配置工具,可以完成基本的資源的管理和控制以及應用的部署。同時(shí),由于跨境電商剛剛興起,初期需要快速驗證商業(yè)模式,系統也采用了單體式架構,直接聚焦核心場(chǎng)景進(jìn)行開(kāi)發(fā)。
自從2015年1月上線(xiàn)后,網(wǎng)易考拉的業(yè)務(wù)開(kāi)始進(jìn)入了高速發(fā)展期,第一版電商系統的第一個(gè)瓶頸逐漸凸顯,就是迭代速度緩慢,而僅僅提供基礎的資源彈性無(wú)法解決問(wèn)題。具體而言,隨著(zhù)用戶(hù)數量的不斷增加、市場(chǎng)需求的變化、運營(yíng)體系的完善,網(wǎng)易考拉對功能模塊變更的需求越來(lái)越頻繁(例如注冊模塊要從只支持手機登錄到支持微信、微博、QQ、支付寶登錄),不僅僅基礎資源管理越來(lái)越復雜,腳本化的應用層的部署和管理也已經(jīng)遠遠跟不上需求。在原有模式下,每一個(gè)小迭代都要申請資源搭建一個(gè)測試環(huán)境,每當有新的模塊和服務(wù)的時(shí)候,都需要維護腳本及自動(dòng)化配置工具,以網(wǎng)易考拉較高水平的研發(fā)能力,每天也只能最多實(shí)現兩次更新。此外,原有模式附帶的一個(gè)問(wèn)題,就是容易出錯,多次的環(huán)境部署無(wú)法完全的復現,畢竟再牛的程序員也還是人類(lèi)。
網(wǎng)易云的容器云平臺、新一代云計算——網(wǎng)易蜂巢的自動(dòng)化能力解決了網(wǎng)易考拉的燃眉之急。網(wǎng)易蜂巢采用了流行的Docker容器作為整個(gè)軟件部署和調度的基本單元,并以結合Google生產(chǎn)集群管理的理念和業(yè)界的實(shí)踐經(jīng)驗打造的Kubernetes作為容器管理和編排服務(wù)框架。
與傳統IaaS架構不同,容器提供的不僅僅是基礎資源,而是將操作系統,應用運行環(huán)境以及代碼打包成一個(gè)不可修改的鏡像進(jìn)行交付,容器的機制可以保證無(wú)論在哪里,什么時(shí)候運行,都能保持環(huán)境的一致性,也就是Docker所宣稱(chēng)的“Build, Ship, and Run Any App, Anywhere(一次構建,隨處運行)”。
一個(gè)服務(wù)往往會(huì )包含多個(gè)組件,因而會(huì )封裝成為多個(gè)容器,容器之間會(huì )有相互的依賴(lài),相互的調用,Kubernetes可以實(shí)現服務(wù)的編排、自發(fā)現、自修復,使得復雜服務(wù)的部署變成了一次API調用。
網(wǎng)易蜂巢根據網(wǎng)易考拉的架構,把代碼里面的功能自動(dòng)封裝到容器當中,并且把容器做成鏡像,再通過(guò)編排服務(wù)解決不同容器之間的依賴(lài)關(guān)系,自動(dòng)完成軟件的安裝、部署和運行,然后把運行起來(lái)的軟件放到網(wǎng)易考拉的測試環(huán)境、聯(lián)調環(huán)境和現場(chǎng)環(huán)境。另外,網(wǎng)易考拉將代碼管理和持續集成工具同網(wǎng)易蜂巢容器平臺集成起來(lái),整個(gè)過(guò)程中網(wǎng)易考拉只需要完成編碼和測試,不需要關(guān)心申請資源和部署環(huán)境,既便捷又減少出錯概率。
網(wǎng)易考拉在使用了網(wǎng)易蜂巢的自動(dòng)化部署工具實(shí)現一鍵式生成環(huán)境、觸發(fā)測試和發(fā)布之后,變更的頻率由每天2次可以增長(cháng)到每天11次,同時(shí)整個(gè)軟件產(chǎn)品質(zhì)量也提升了52%。
經(jīng)過(guò)第一次大迭代之后,網(wǎng)易考拉進(jìn)入了爆發(fā)增長(cháng)期,然而當用戶(hù)量達到百萬(wàn)級的時(shí)候,又一個(gè)大瓶頸出現了,就是單體架構遭遇性能的天花板。在業(yè)務(wù)的爆發(fā)期,網(wǎng)易考拉對迭代速度有了更高的要求,同時(shí)需要保證系統在高并發(fā)訪(fǎng)問(wèn)下的穩定性和頁(yè)面性能。首先,軟件的穩定需要一定的時(shí)間,但單體架構牽一發(fā)而動(dòng)全身,頻繁的變更會(huì )造成頻繁的業(yè)務(wù)中斷,比如注冊模塊的內存泄漏就會(huì )導致整個(gè)系統不可用;其次,軟件對用戶(hù)量的承載是有限的,一次訪(fǎng)問(wèn)的延遲在日活十萬(wàn)時(shí)是幾毫秒,到日活百萬(wàn)時(shí)可能就上升秒級,尤其是到了網(wǎng)易考拉日活用戶(hù)已經(jīng)超過(guò)千萬(wàn)、促銷(xiāo)活動(dòng)以周為單位的時(shí)期,壓力更是巨大。然而,在單擊架構下,網(wǎng)易考拉的瓶頸是全環(huán)境每天最多更新112次,單次訪(fǎng)問(wèn)的延遲達到500毫秒,整個(gè)業(yè)務(wù)的更新率越來(lái)越低。同時(shí),在單體架構下做彈性擴容還會(huì )造成浪費,比如一些訪(fǎng)問(wèn)頻率不高的模塊,也需要根據購物車(chē)模塊面臨的訪(fǎng)問(wèn)壓力來(lái)準備資源。這個(gè)時(shí)候,解決的辦法,是借助網(wǎng)易蜂巢對業(yè)務(wù)的分布化改造能力,再次進(jìn)行大版本的迭代。
基于Kubernetes提供的服務(wù)發(fā)現功能,網(wǎng)易蜂巢可以支持網(wǎng)易考拉方便地把注冊、購物車(chē)、支付等不同的功能模塊拆分出來(lái),由不同的團隊獨立開(kāi)發(fā)和維護,將原來(lái)的單體結構變成微服務(wù)結構,單獨進(jìn)行彈性伸縮,并通過(guò)編排建立它們之間的聯(lián)系,這就保證了網(wǎng)易考拉團隊可以靈活地實(shí)現軟件的快速迭代,以及軟件架構的彈性伸縮。這次迭代為網(wǎng)易考拉帶來(lái)了6倍以上的能力提升,每天的更新頻次上限由每天112次上升到每天723次,并發(fā)訪(fǎng)問(wèn)支持由原來(lái)的每秒2,600次提升到了每秒16,000次。
為了支撐高性能的應用,網(wǎng)易蜂巢基于原生的Kubernetes的基礎上,對于調度進(jìn)行了優(yōu)化,保證應用的快速部署和快速修復,并且利用多年運行IaaS層的調優(yōu)經(jīng)驗,對于容器之間的網(wǎng)絡(luò )互通和持久化存儲做了優(yōu)化,保證數據讀寫(xiě)的高性能及容器之間互相訪(fǎng)問(wèn)的高性能。
為了保障在不同規模下的一致的用戶(hù)體驗,網(wǎng)易考拉還使用了蜂巢推出的全鏈路的性能監控體系。在某次大促之前,線(xiàn)上壓測團隊發(fā)現,原本一次加入購物車(chē)的延遲僅僅20毫秒,在用戶(hù)量爆發(fā)之后就超過(guò)了1秒鐘,通過(guò)該功能回溯整個(gè)鏈路的調用過(guò)程,發(fā)現在整個(gè)服務(wù)的過(guò)程當中,數據庫操作環(huán)節的時(shí)延占到了整個(gè)時(shí)延的95%以上,所以,網(wǎng)易考拉能夠快速地優(yōu)化數據庫的操作邏輯,很好地應對了大促時(shí)的爆發(fā)訪(fǎng)問(wèn)。
小結
網(wǎng)易公司創(chuàng )始人兼CEO丁磊曾說(shuō),電商的核心在于“商”而不在于“電”,網(wǎng)易考拉也確實(shí)圍繞商務(wù)開(kāi)展了靈活的玩法,本次雙11尤其如此,這也讓雙11成為了電商技術(shù)團隊的一次大閱兵。然而,網(wǎng)易考拉在網(wǎng)易蜂巢的基礎上實(shí)現了業(yè)務(wù)架構的現代化,獲得了快速迭代和全面彈性伸縮的能力,經(jīng)受住了618和多次黑五大促的考驗,這讓團隊可以從容地玩好本次洋貨節。事實(shí)上,網(wǎng)易考拉的線(xiàn)上壓測團隊已經(jīng)提前申請資源,按照近期平均交易量的數倍對電商系統進(jìn)行壓測,并針對一些小瓶頸進(jìn)行快速的代碼調整,對于實(shí)際的挑戰,團隊已經(jīng)心中有數,所以并不驚慌。
網(wǎng)易考拉認為,容器云之所以能夠帶來(lái)超過(guò)傳統IaaS的好處,并不僅僅是因為Docker的應用,關(guān)鍵還是因為通過(guò)網(wǎng)易蜂巢能夠實(shí)現整個(gè)業(yè)務(wù)架構的變革。其實(shí),作為網(wǎng)易云的基礎服務(wù),網(wǎng)易蜂巢已經(jīng)在支持95%以上的網(wǎng)易互聯(lián)網(wǎng)產(chǎn)品的運行,這些產(chǎn)品團隊通過(guò)網(wǎng)易蜂巢的容器服務(wù)和工具鏈,實(shí)現了敏捷的生產(chǎn)方式和先進(jìn)的分布式架構,從而支撐他們的業(yè)務(wù)像網(wǎng)易考拉一樣快速地成長(cháng)。