Categories
程式開發

跳出前端看前端,才能跟別人平等對話


跳出前端看前端,才能跟別人平等對話 1

對於很多前端同學來說,如何在工作中掌握更多的話語權,甚至主導解決方案,是他們當前很關注的問題。在這方面應該怎麼做呢?在 GMTC 全球大前端技術大會(深圳站)2019 現場,InfoQ記者採訪了阿里巴巴高級前端專家,ICBU (阿里巴巴國際事業部)性能架構師易曉峰,請教這個問題。作為無線前端和工程團隊的負責人,他認為現在前端越來越複雜,很多問題需要多方協同解決,所以要跳出前端再去看前端。如果只盯著前端自己的領域,很難去跟別人平等對話。前端需要保持一個空杯心態,多向後端、客戶端同學學習。

InfoQ:請您介紹一下您在阿里巴巴的經歷以及您團隊的基本情況。

易曉峰:我是2015年加入的阿里巴巴,一直在阿里巴巴的國際事業部,也就是ICBU,我們是一個面向全球用戶的國際化團隊。我加入後就進入了剛剛組建的無線前端團隊,算是見證了整個阿里巴巴國際站無線化的發展。目前我主要負責無線前端以及工程團隊,今年團隊主要是在跨端和性能兩個方向上。

InfoQ:對於一個面向全球用戶的大型電商網站,它在性能優化上要重點考慮哪些因素?

易曉峰:性能優化我覺得通常會存在一個“不可能三角”,什麼叫“不可能三角”呢?就是性能、規模、成本這三者你只可取其二,很難三者兼得。對我們來說,能通過哪些方式朝向三者兼得的目標去突破是我們的重點。

所以我們做性能優化基本上會考慮這幾個方面:第一,我們的方案對於整體性能能夠提升多少;第二,我們的方案是不是能夠規模化;第三,我們要考慮這個方案的成本。

對於阿里巴巴這麼大一個網站,不可能像一個小網站一樣通過整體重構去提升性能。做一個Case的性能極致很容易,但是如果我們要在低成本規模化下達到性能極致,這是相當難的,我把它叫性能的工業化生產,如果一個性能方案做不到工業化生產,它可能就不是一個特別好的方案。

還有一個重點就是要考慮到國際化的特殊性,包括地區的差異性、物理距離、用戶分散等複雜的問題。這些特殊性會給我們的性能優化帶來很多挑戰,有些行之有效的方案可能需要調優才能工作得好,有些大家認為完全不會是問題的可能會成為問題。

InfoQ:具體到阿里巴巴,在性能優化上我們是怎麼做的?

易曉峰:我們主要圍繞兩個方向 。第一個方向是減少資源的響應時間;第二個方向是降低執行運算的複雜程度。但跟傳統的前端性能優化不太一樣的是:我們會從網、雲、端整個鏈路去看性能的優化。

在網絡層面,我們會有如BBR加速、動態加速、邊緣流式渲染等;在雲端,我們會做SSR、API優化、鏈接復用等;在端上,會有各種緩存策略、API加載等性能的優化。此外我們對數據也非常重視,會花很大精力做數據的度量、數據的採集,因為數據不只是可以讓我們的優化成果得以呈現,還能夠指導我們去做優化。打個比方,全球網絡最差地區,跟網絡最快地區,可能相差70倍,這麼高的一個網速的差別,用戶硬件設備在體驗上的差別也會很大。所以我們會基於數據去做分層,了解整個鏈路中的每個環節時間的消耗。例如一個用戶它可能是從Facebook跳過來的,經歷了很多次跳轉到你這邊來,性能可能就會比較差;但如果說用戶直接打開網頁,性能就會好一些。不同的設備,不同的網絡,性能到底阻塞在哪裡,我們都要通過數據去發現問題,然後去尋找解決方案。

InfoQ:隨著業務的發展,我們性能優化工作的重心發生過哪些變化?

易曉峰:我們性能優化這塊可以分成三個階段。第一階段叫做蠻荒時代。什麼叫蠻荒時代?就是純靠體感進行優化。比如老闆去國外,回來說我們網站太慢了;或者大家自己覺得最近我們這個網站太慢了;或者程序員良心發現,覺得太慢了,我們應該把它修一修。這個時候主要就是純前端層面的優化,比如說JS大小,或者拿著雅虎前端優化的35條軍規對一對,做一下優化;或者一些什麼通用的優化方案,做一做看一看。

第二個階段叫做工業化時代。我們建立了一個多維度全鏈路的度量分析體系,以及數據監測體系,同時我們在網、雲、端做全方位優化。

第三個階段很快就會到來,叫做精細化時代。為什麼要精細化呢?因為我們現在性能優化已經進入了深水區,這時候就需要去精耕細作,用數據驅動的方式去做差異化的優化,根據不同用戶客觀環境(網絡、用戶設備)和主觀環境(用戶行為及動線)去做差異化優化。

InfoQ:您個人比較關注前端領域哪些技術發展趨勢?

易曉峰:首先我比較關注跨端;其次比較關注性能;第三比較關注D2C(Design to Code)。另外就是邊緣計算,雖然到現在這個技術的基建還是非常薄弱,但是我覺得它未來是有無限可能的;除此之外,我們還很關注Google的技術,畢竟我們是一個國際化團隊,像Google推出的PWA、AMP,以及我們現在和Google合作的TWA,都是我們關注的重點。

InfoQ:您的角色還挺神奇的,又負責前端,同時又是性能架構師,為什麼會有一個這樣複合的角色呢?此外對於希望從前端轉向架構師的同學,您有何建議和忠告?

易曉峰:我覺得性能跟前端本身就比較相關,前端重體驗,而性能又是體驗的一部分。你服務器的性能好不好用戶不一定能感知到,用戶感知的都是跟前端相關的東西。其實我們在做性能優化的時候一直在提一個概念:“用戶不是要真的快,他是要感知到快”。性能這個事情本身在前端的視角去看會更合適,或者準確來講,它叫做用戶視角,因為我們離用戶更近,我們更有責任、也有義務去把這個事情做好。

建議和忠告不敢說,只能說一點淺見吧。現在前端面臨的問題越來越複雜,很多問題我們需要結合多方一起解決,我們需要跳出前端看前端,如果只是盯著前端這個領域,很難平等對話及主導解決方案。現在要在前端領域做好,除了前端專業的知識,還需要很多的服務器、客戶端、數據庫、網絡等多方面的累積。所以我們也需要保持空杯心態,多向後端、客戶端學習。

InfoQ:2019年在大前端領域,您覺得有哪幾個技術發展是超過預期的? 2020年您對趨勢的預判是什麼?

易曉峰:第一個是跨端跨容器技術,2019年我覺得跨端技術太繁榮了,百花齊放,比如SwiftUI、Flutter,以及各種小程序的解決方案;另外就是D2C,過去一年我們在這塊兒發展還是挺好的。

我再說說Serverless,2019年大家都在講Serverless。 Serverless是雲計算發展到一定階段之後的一個比較有意思的產物,我覺得它會徹底改變前後端的協作模式。後端未來可能更專注於領域模型的建設,前端可能更專注於產品的建設。過去這個中間呢,其實有很多牽扯。大家都講前後端分離,但是怎麼去分離?大家本質上還是在組成一個東西。現在如果是基於Serverless這種方式,就是讓前端擁有控制數據的能力,同時你又不用去擔心這個服務器的運維問題,我覺得這個對於前端會帶來很多變化。還有一個就是現在部署在CDN邊緣結點上的Serverless,這個會給前端帶來非常多的可能。我們現在正在做的邊緣流式渲染,就是利用了CDN邊緣結點Serverless的能力。

當然在我看來無論是跨端技術,還是Serverless、D2C、邊緣計算,我都很看好他們在2020年的發展前景。

嘉賓介紹:

易曉峰,阿里巴巴高級前端專家,ICBU (阿里巴巴國際貿易)性能架構師,負責無線前端&工程團隊。 2018年主要負責性能優化,從網、雲、端全方位優化三端性能,讓海外用戶的性能得到了極大幅度的提升,同時還建立起用戶視角的國際化性能監測及度量體系。歡迎對國際化事業有興趣的前端朋友們加入我們:微信:wvv8oo。