【ATF】莊卓然(南天):掌上精彩-連接過去與未來

2016 ATF阿里技術論壇於4月15日在清華大學舉辦,主旨是闡述阿里對世界創新做出的貢獻。阿里巴巴集團技術委員會主席王堅,阿里巴巴集團首席技術官(CTO)張建鋒(花名:行癲),阿里巴巴集團首席風險官(CRO)劉振飛(花名:振飛),螞蟻金服首席技術官(CTO)程立(花名:魯肅)以及來自阿里巴巴集團各部門多位技術大咖齊聚一堂,與莘莘學子分享阿里的技術夢想。


在下午的電商分論壇中,莊卓然(花名:南天)做了主題爲《掌上精彩-連接過去與未來》的演講,分享了他親身經歷的阿里移動技術的演進之路,風趣的演講讓現場同學們不時會心一笑。

 

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

阿里上個財年中國電商平臺零售額突破3萬億元人民幣並超過沃爾瑪,成爲世界上最大的零售平臺。在這3萬億的背後最根本的力量就是阿里巴巴整個電子商務及互聯網技術在過去10年快速的發展。但是,3萬億只佔到整個中國社會零售總額的10%,因此整個電子商務和電子商務技術還有非常巨大的發展空間,移動領域更是如此。手機淘寶在海量業務背景增長的情況下,經歷了從工具到APP,從平臺到生態的發展歷程。技術架構也幾經創新突破。未來幾年將在視頻直播,VR/AR領域有所突破。非常期待在座的學子和我們一起去開創新時代。

 

演講實錄:

大家下午好,我叫南天,很高興今天來這裏跟大家分享。今天我們看移動互聯網,最早要追溯到將近20年前,那時候訪問移動互聯網還要通過移動夢網接入,當時硬件、軟件技術各方面都不成熟。真正意義上的移動互聯網要從2010年說起,這幾年我們都經歷了移動互聯網的崛起。今天就是和大家分享在阿里三萬億的背後,移動上都有哪些技術實力。



海量業務挑戰


先從整體的業務看,截止今年全中國能通過手機訪問移動互聯網的用戶已經9億人了,移動電商用戶超過5億人,其中手機淘寶和天貓等阿里巴巴的客戶端總用戶量超過4億,根據第三方的數據阿里移動電商佔了全中國移動電商的81%,所以我們說阿里巴巴是連接互聯網和商業的第一品牌,在移動領域更是當之無愧的第一品牌。除了規模還有技術上的挑戰。比如說多端,我們的手機終端就有iOS\Android\winphone及瀏覽器;比如說跨團隊協作,912億背後有無數的團隊,有無數的開發工程師,在阿里僅端側的移動開發工程師就有近兩千名,涉及數十個部門。還有各種各樣的模塊、插件、中間件的協同。這是一個非常複雜的工程體系。


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


這樣海量的規模下,在用戶體驗、開發效率、安全穩定和規模上都催生了革命性的變化。


第一、用戶體驗:每一次技術上的突破都是由用戶的使用習慣來驅動,互聯網是典型的用戶體驗驅動的產業。傳統PC時代我們用QQ聊天、淘寶買東西、百度搜索,這個本質就是體驗驅動,哪個產品體驗好就會選擇誰。今天在移動領域,這個規律非但沒有改變反而會變本加厲。移動端的體驗已不僅僅是產品的體驗、基礎技術的體驗,還有很多其他的如能耗、包大小,都可能成爲用戶體驗的新挑戰。

第二、開發效率:我們從開放透明的web生態迴歸到客戶端形態,對效率會產生非常大的影響。而互聯網很重要的就是“快”,唯快不破,怎樣在客戶端的時代,還能保證非常高的研發效率和迭代速度?

第三、安全穩定:因爲手機隨身攜帶,從某種意義上來講,它是我們人體器官的延伸,它掌握了大量的個人數據,怎樣保證這些數據的安全性?這對用戶來說是非常重要事。

第四、規模:阿里巴巴從某種程度上講是一個商業的生態,這樣的規模我們怎樣保證它的研發體系是有序、有標準、有效率的,並且我們每年會有非常嚴酷的挑戰“雙十一”,在阿里有句話,沒有經歷過“雙十一”技術人員是不完整的。但“雙十一”每年只有一次機會,你必須要保證它絕對的成功,所以在這樣的規模下,你用什麼樣的方式來保證?

 

技術改變世界


規模催生革命


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

移動研發效率之殤:隨着團隊規模越大,業務體系變的越來越複雜,整個工程體系要保證我們的研發速度迭代速度能不斷的加速。這是非常有挑戰的事情。可以給大家分享一組數據,手機淘寶客戶端迭代次數:2013年客戶端發佈了42次,2014年200次,2015年發佈了500次。


打磨極致體驗之旅:無論是從crash率、啓動的時間、網絡的開銷還是在滑屏的幀率上,這些相對於web來說提出更高的要求,在過去的幾年裏,我們取得了一些非常有效的成果,我們有專門關注用戶反饋的平臺,在過去的一年裏,我們發現用戶關於閃退、性能類的反饋從8%降到3%。


守衛信任使命之戰:我們評估了APPStore裏18個行業Top10的APP,平均能掃描出的安全漏洞是87個,而今天在手機淘寶客戶端裏面,我們基本每個版本都能夠控制在個位數

 

黑五&感恩節大促  VS  雙11購物狂歡節

我們用“黑色星期五”和“網購星期一”兩天全美國的電子商務網站、APP等加一起的數據跟阿里巴巴“雙十一”這一天的數據對比。成交金額上我們是美國的3.2倍。黑五在移動端的成交佔比僅在34%,而“雙十一”在阿里移動端佔比高達68%。可見不僅是成交額的趕超,我們在移動電商的普及上也是要超過美國一大截。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy



顛覆傳統web的移動技術


傳統的互聯網技術跟PC時代一樣是一個典型的BS的架構,在B的這一側只是薄薄的一層的變現層,核心的工作是在做渲染。而所有的跟用戶邏輯跟業務有關的東西全都在sever層。這個時代的前端工程師核心工作是解決不同瀏覽器的兼容性問題而不去處理太多後端的複雜業務邏輯。而我們所談的架構、編程模型、伸縮性、擴展性、穩定性等技術都其實在談服務端技術但在2010年左右,隨着計算機設備計算能力的提升,我們開始把一些業務邏輯前移,當時出現了一系列像AJAX這樣的前端的框架,能夠很好的利用起個人計算機的能力,但本質上雲和端的分工是沒有改變的。但是到了移動時代這一切發生了很大的變化。


首先移動設備的計算能力不輸於PC,其次移動設備上提供了將近200多個傳感器。而這些是PC不具備的。所以這時候我們就發現開發的分割線發生了很大的變化,前端不再僅僅是跑在瀏覽器裏的展示層,而是可以利用傳感器利用移動設備做更加複雜的邏輯處理。這樣的分層變化,計算的前移,使得雲和端之間的網絡裏發生了很大的變化。這時候我們再去看客戶端,原來只在後端出現的性能、兼容性、擴展性等問題都成爲了客戶端架構領域需要去考慮的核心問題,它決定了我們怎麼樣打造一個讓用戶滿意,又有高性能、強擴展性、安全、還能保持高速迭代的移動客戶端。

 640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


這是這個時代非常不一樣的挑戰。所以我們簡單來看看,隨着這樣的變化,回到富客戶端的開發模型裏面,可能在哪幾個領域裏面,會是我們需要重點攻克的課題。


第一、部署模式:PC時代,所有業務邏輯計算都是集中在服務端完成,即使是前端的js腳本也是部署在服務端可以快速下載,而客戶端我們要通過發版安裝在用戶的手機上,每次更新都需要用戶去下載,整個迭代速度、用戶側的更新速度都達不到要求,那我們怎樣能在客戶端的研發模型下具備很強的動態部署能力?能發現bug快速修復?怎樣在客戶端裏具備很強的動態性?

第二、編程模型:到了富客戶端側,我們編程模型會發生什麼樣的變化?傳統在服務端我們通常會去用的MVC編程模型,到今天或許因爲綁定方式調動方式的不同,會進入MVVM或MVP的編程模型下。

第三、系統架構:整個移動的生態,它是有多個操作系統,拿Android操作系統來說,每個廠商都有自己的定製,這些嚴重碎片化的東西我們要去面對,安裝包不能無限制的擴大。對於用戶而言,好的體驗一定是相對小的安裝包,這部分又如何解決?

第四、體驗度量:性能等等這一系列的問題,它不僅僅是看吞吐率這一個簡單的指標,用戶在看手機時會說這個軟件有點卡,那卡的原因是什麼?就體現在軟件的刷新頻率上,如果刷新頻率跟不上,突然出現GC過多內存佔用時可能就會丟幀,這一幀丟掉就會讓用戶感覺卡。


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


阿里演進之路


在阿里巴巴,手機淘寶走過的5個時代:2009年是最早的WAP版的手機淘寶;然後到了2010年的時候手機淘寶是一張披着Native外殼的Wap,外面的殼是Native,裏面的核心技術還是大量使用webview的技術,通過h5去展現,通過JS去轉碼;2013年我們做了比較大的改版,整個集團裏打造了航母戰略,整個APP不僅僅是一個簡單的工具,它是一個平臺,它上面不僅有天貓、聚划算,還有口碑等,這裏每個模塊既可以單獨的運行成爲獨立的客戶端,也可以長在平臺的APP上,所以在內部有很形象的比喻叫航母,這上面所有的模塊稱之爲飛機,既可以在航母上降落,又可以獨立起飛;而2015年—2016年阿里巴巴在移動佈局進入生態時代,我們在打造一個電子商務的商業操作系統,那今天在移動端也一樣,這裏麪包括很多核心的組件、基礎設施可以在不同的APP中共享,去複用。同時不同App的內容既可以作爲獨立的App,也可以作爲一個插件的形式存在,這就是整個阿里在技術演進的5個時期。


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


傳統的服務端架構,我們通常喜歡增加一個層次來解決問題,比如爲了提高性能需要增加緩存,可以通過增加一個分佈式的訪問層等去解決問題。那在服務端,因爲所有的部署是在sever端,在我們自己維護的IDC裏,我們可以把這個層次加的非常厚,而且非常穩定,一切可控。


進入移動端後,發生了巨大的變化:首先,上層還是很重的業務,除了iOS和Android這類移動os之外在上面有一個很重的標準App Framework,這時候對架構來說進入非常大的挑戰期,有時架構會設計得對整個改動非常的大。很多時候你的設計都會白費;其次,你不可能無限制的增加你的層次,因爲手機容量有限,安裝包大小必然受限;再次,你要兼容OS,因爲OS和App Framework變重了,架構的設計考量要面向整體用戶體驗,這都是在移動客戶端整個架構上和PC非常不同的特徵。 


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


平臺級APP的客戶端架構之道


我們應該都經歷過這個階段,就像趕火車一樣,不同團隊都想拼命的爬上這個火車,但是一個地方出bug整趟火車都開不了。一開始我們架構治理就面臨這樣的問題,在早期Android 2.4版本還有65535方法數的限制阿里巴巴是除了Facebook之外第一個面對開發工程方法數超過這麼多的公司,所以說要有平臺級APP的客戶端架構設計方式,才能夠滿足這麼多的模塊,這麼多的用戶,能夠快速的迭代,且有很好的用戶體驗。


所以,2014年我們開發了容器架構,簡單來說,過去客戶端是兩層的結構,下層是基礎庫,上層是業務邏輯。現在我們改成三層架構:最下層還會有一部分的基礎庫,主要是一些與業務無關的客戶端中間件;中間層,我們增加了runtime運行時的容器來調動總線,其中總線又會分UI、服務、消息,它讓不同的模塊只去依賴Runtime容器,而不會形成互相的依賴;最上層,我們把每個可以部署的模塊稱之爲一個bundle,每個bundle之間是沒有關係的,既可以作爲一個模塊長在容器上,也可以獨立出去打成一個完全獨立的APK。我們可以把客戶端看成一個完整的工程被拆分成了多個不同的小工程,在這個插件式的體系中,所有的模塊可以動態的插拔在這個容器之上。既可以做到在開發時模塊之間互不影響,也可以做到在運行時不需要打整包讓用戶去下載,而只要去下發一個獨立bundle,用戶在有Wi-Fi條件時自動下載及動態加載。通過這個機制我們可以實現所有模塊的替換。這是2014年做的非常大的技術改進。


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


2014年8月份,我們第一次在行業裏公佈我們架構是容器化的,在ArchSummit上做了一次完整的演講,所以很高興看到2015移動開發圈討論最多的就是動態部署,插件化的架構、容器架構如何去運行,很多公司都加入這個陣容中。在2015年Android新版本發佈時,他們也採用了這樣的架構方式重新去設計AndroidAPP Framework。所以客戶端的彈性架構上我們經歷了這麼幾個不同的時代,有了這樣的架構後,我們的從發佈頻次、打包效率、還是彈性發布、運維監控上都有很大的進步。

 

支撐上億人同時在線的移動接入平臺


我們在開發PC端軟件或傳統互聯網web網頁時,基本不會考慮帶寬、時延。但在移動端是非常大的挑戰。所有的無線都是有線的,所有有線都是無線的。因爲所有的移動開發是通信和互聯網的結合,所有的手機連到互聯網是去和基站做連接。這使得移動端在2G網絡下什麼都沒拿到,光建立連接就花了1S。這樣的網絡情況,我們根本談不上用戶體驗。很多用戶通常是在公交上、火車上、地鐵裏訪問手機淘寶,那我們如何保證弱網環境下的用戶體驗?我們的方案是建立一個叫ACCS的網絡接入平臺,在架構上一方面做網絡通訊協議的優化,另一方面靈活的調度,在全國有多個接入點,通過調度模塊來選擇最優的接入鏈路和最穩定的連接鏈路,同時在後端數據網絡的模型上也不僅僅是傳統web的Request、Response的R模型,它也支持消息下發的PUSH模型,也支持像sync這樣同步的模型等等。這是過去兩年裏阿里做的非常核心的工作。


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


今天拿ACCS平臺跟業界所有的移動加速網關做對比,我們都取得非常好的效果。這側除了架構的設計,靈活的調度之外,同時很重要的是在協議這一塊。今天傳統的HTTP在移動端是非常低效的,所以在2014年我們開始嘗試spdy,到2015年我們的基礎協議全面升級到HTTP2.0,現在我們在花很多精力研究自己的應用協議,因爲在應用側兩個端都在掌握在自己手上,我們沒有必要去遵守一個低效的標準做事情。去年我們通過TLS1.3的協議改造,優化窗口時間等,成爲全球唯一一家支持HTTPS的電子商務網站,大家都知道支撐HTTPS這在移動端是非常大的挑戰。今天我們能支持10億設備的管理能力,同時在線數超過2億,在全國有多個接入點做到就快接入和連接管理以及數據轉發。這些爲未來視頻、直播等網絡上的升級做好了準備。


雙十一背後的移動開發框架 Weex

我們再回到雙十一的Case上,過去有很多人嘗試用h5來做這個事。第一因爲不用跨多端,ios、android都用一個語言來實現。第二動態性好,不需要發版本。雖然我們能做到動態下發bundle,還是要開發iOS、android兩個bundle,繞不開跨平臺開發的複雜度。那麼H5可以做到,但爲什麼大家又不用?核心問題是性能。我們曾做過測試,將頁面用戶首屏打開時間從4秒優化到3秒,這僅僅節省1秒讓用戶的轉發率提高了68%。雙十一”的時候面對很大挑戰是會場,頁面裏面有大量的商品,完全是個性化的。它展現的形式是動態調整,如果是純Native所有的便捷性就會失去,如果是純h5,體驗又無法保障,爲此我們開發了非常重要的Weex框架,它本質上是一個性能更好的webview,可以讓所有開發者用H5的語言,且在多個平臺上達到近似Native的效果。


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


在過去我們常會拿基督教裏的聖盃來比喻軟件開發的銀彈,比如高速迭代和性能的完美平衡點,一次編譯多次運行。我們提到一次編譯多次運行會想到web、Java。今天Weex希望把整個移動開發生態通過H5取得更好的體驗從“雙十一”來看無論是首屏的加載時間、內存的消耗、CPU的消耗、幀率整體的流暢度,Weex都有非常好的展現效果,今年6月份我們會把這個框架開源出來,希望這一年Weex在行業內的推進能夠減少移動端的的開發複雜度,提升開發效率和整體體驗。 


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

展望未來


席捲全球的移動技術革命,極大程度推動了互聯網的用戶規模和觸網深度的發展。智能手機APP對互聯網的影響,不僅僅是又一個終端,更是人體身體器官的衍生。連接過去,暢想未來。阿里移動核心技術又將爲我們開啓怎樣的明天,創造何等的驚喜?


未來移動端上依然有很多想象的空間。互聯網這麼些年裏產生了媒體內容變化的趨勢,最早是純文本,然後是圖片,阿里巴巴積累了非常多圖片方面的技術,無論是圖片內存的優化還是傳輸編碼的成本都做了大量優化。到今天我們進入了視頻、直播領域,隨着技術的成熟和新的用戶出現,很多人更加喜歡直播的產品體驗。未來的3-5年我們還會進入到VR、AR和MR的時代,像VR的概念已經出現很久了,但是計算機視覺的時延問題一直沒有解決,設備時延會超過100毫秒,而大腦的反應超過4毫秒就會眩暈。所以,雖然VR在20世紀60年代左右就有人提出,但是實際上在互聯網高速發展20年過程中,這個領域並沒有發生質的變化。但是到今年我們很高興看到,隨着硬件設備的發展,離理想值標準越來越接近,預計在未來的3-5年可能會出現更多的VR或AR的內容。這可能是互聯網未來新的發展方向。所以在整個阿里巴巴移動端的技術演進過程中,我們花了很多精力在提升多媒體互動,無論是視頻的同時在線的人數,還是整個視頻量的轉碼技術降低成本,互動方面我們都已經有大量的積累。


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=



通過下面這支小視頻,讓大家感受一下未來購物會是什麼樣子的:

http://v.youku.com/v_show/id_XMTUxODc0NzE2MA==.html?from=s1.8-1-1.2

關於VR和AR這個視頻講了很多東西,是我們期待的未來購物形態,我們相信這裏面很多東西慢慢都會變成現實。對於一家技術互聯網公司而言,改變我們上億用戶生活的,非常重要的是技術背後的想象力。所以我們沿着這條充滿想象的道路上去摸索,一定能摸索出更好有意思的創新產品。

希望大家能夠加入我們,讓我們一起共創未來!


本文轉載自雲棲社區:https://yq.aliyun.com
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章