Categories
程式開發

從考拉前端團隊演進看前端技術的變化與取捨


2015年,考拉前端團隊只有6個人,到2019年年底,這個數字已經變成了100。隨著團隊人數不斷增加,技術和管理上的挑戰也會接踵而來。如何分階段建設前端團隊?前端團隊如何分工?隨著前端技術快速更迭和業務不斷變化,前端團隊如何做到快速重組和調配? InfoQ記者有幸在GMTC 全球大前端技術大會(深圳站)2019上採訪到了考拉海購前端負責人俞棋軍,他與我們分享了自己在建設考拉前端團隊過程中的一些思路,對於前端技術的發展現狀和未來,他也提出了自己獨到的見解。

考拉前端團隊演進

作為最早的團隊成員之一,俞棋軍見證了考拉前端團隊從最初的6個人,在五年間增長到百人左右。他在與我們分享了考拉前端團隊在技術和管理模式上的演進過程。

2015年左右,考拉在大促PK中得到了非常大的業務反響,這意味著考拉從最初的產品原型到業務實現邁出了很重要的一步。從這次大促PK以後,基本上建立了考拉一個月一次大促一次小促的運營模式,這種模式給當時只有6-7個人的前端團隊帶來了非常大的考驗,因為很多運營工作、大促頁面搭建需要在前端完成。團隊一開始只在PC上做活動頁面,到五六月份投入手機APP的開發中,很多流量開始導向H5,那也是移動開發快速發展的黃金時期。

2016年底,原有的搭建模式已經難以繼續支撐業務場景,H5搭建退出歷史舞台。考拉前端團隊和客戶端團隊共同決定轉向Weex跨端解決方案開發。雖然Weex號稱在iOS、H5和安卓端都通用,只需要一次開發,但實際應用後團隊發現依然有一定的開發成本,因此在解決各個端的適配性問題上投入了不少額外的工作量。

2015年到2017對應的是考拉前端團隊從0到1的建設,2018年以後則是從1到全家桶的過程。 2018年左右,團隊開始做部分監測工作,包括用戶在站點上的購買體驗優化、性能監控和端上的離線緩存。 2019年則是進一步深化離線方案、BFF建設、跨端建設以及頁面性能監控等的落地,中間還完成了前端統一部署平台的開發。

俞棋軍認為,如果團隊的技術棧、工程化工具、部署平台確定了,開發人員在不同業務之間切換的時候成本應該是很低的,而降低切換成本的核心是要把前端團隊的基礎建設做好,包括標準化、統一化的工作,這是TeamLeader應該要關注的問題。

2019年9月,阿里宣布收購考拉,除了繼續維護日常的業務工作,考拉前端團隊投入了不少人和精力在技術遷移工作上,包括網易側的切除和阿里側的引入。

除了技術側重點的變化,團隊不斷壯大也會帶來管理上的挑戰。到2016年,考拉前端團隊成員已經從一開始的6-7人增長到了20多人,後面幾年也基本按照每年20人左右的速度擴增。據介紹,隨著技術的更迭以及業務需求的變化,考拉前端團隊的管理模式經歷了從單一職能團隊變為拆分到各事業部再到重新形成職能矩陣的演進。

從考拉前端團隊演進看前端技術的變化與取捨 1

一開始,由於考拉內部業務越來越多,而前端開發又是職能屬性非常重的角色,團隊根據業務線作了比較細的拆分,如果橫向有需求再在各個業務線上做人員調度。但完全拆分到事業部的管理模式也帶來了一些問題,單純以事業部的業務為目標,會導致在做一些橫向調度和基礎工作推進時,工作無法有效展開或推進速度較慢,尤其是工具的普及、升級和公共平台的建設等。因此後續團隊管理模式又回到了職能矩陣的形式,按照前台、中後台、運營工具、公共技術等分工。

俞棋軍認為,針對不同規模的團隊,TeamLeader在管理上相應地應該有不同的側重點。以他自己為例,考拉的發展過程基本上就是一個業務驅動的過程,因此剛開始TeamLeader更多還是以業務導向的方式來做管理。很多技術工作會被業務倒逼著走,業務在不停地增長,但技術人員沒有跟上,還是陷在原先的開發工作中,當時俞棋軍的工作只能是消化業務、招人、消化業務。但是僅僅是招人消化業務根本做不好團隊梯度建設工作,因此到後面他轉變了工作思路,更側重於解決團隊梯度建設問題,把團隊核心人員放在核心崗位上,如果有能向TL發展的就向TL培養,如果沒有就去外部招聘特定人才,重點要將團隊的腰部力量建設好。

性能監控是重中之重

過去一年,考拉前端團隊主要圍繞頁面性能監控、跨端、離線化方案這幾個大的技術方向展開工作。

以監控為例,由於很多頁面跑在線上,如果沒有監控,開發無法感知到這個頁面在端用戶這邊跑的情況到底怎麼樣,所以長久以來,其實前端對自己開發的頁麵線上的運行情況是無感知的。在18年以後,考拉前端團隊將監控放在了比較重要的位置,基本上線上錯誤、線上業務都能監控起來,對線上的性能也展開了從0到1的建設。借助性能監控,找到頁面性能短板,再引入相應的提升性能​​的解決方案,比如通過離線緩存來優化頁面打開時間、SSR相關工作等。

此外,考拉前端團隊也是Weex的深度用戶,在跨端建設方面積累了一些經驗。考拉前端團隊的Weex開發分為兩大塊,一塊是客戶端Weex自建,另一款是前端業務端的建設。俞棋軍錶示,Weex開源的第一個版本內部的坑非常深,由於考拉在Weex上進行一次活動搭建最多可能需要展現100多個屏,對客戶端性能要求非常高,所以客戶端和前端同學在使用過程中踩過了不少坑。比如他們曾在Weex方案上引入多團隊參與模塊開發的時候引發了上線部署的一個效能問題。由於負責社區、會員、內容等不同模塊的開發人員都要基於Weex共同開發自己的業務組件,當要上線的時候,開發會先上線核心開發模塊,再上線會員的搭建模塊,如果前面的搭建模塊出了問題,後面的業務就沒辦法上線了。這樣的相互依賴會導致團隊間的發布效率低下。

為了解決這個問題,考拉目前採用了阿里集團內部的一個解決方案,把每個模塊開發放在工程外,開發人員在開發完這個組件發佈到線上以後,在搭建平台裡把這個模塊配置進來,運營就可以使用這個模塊了。這樣的話,不再像原先ABC三個模塊都在搭建工程上開發,然後三個業務方開發,現在ABC分別在其他平台上開發,發布完然後在搭建平台上配一下,這個模塊就可以用了。這樣就不會再有上線相互依賴阻塞的問題了。

前端技術趨於統一和標準化

回顧前端領域的2019,俞棋軍認為這幾年前端技術更多還是在吃原先的老本。 Vue 3.0和React新版本在俞棋軍看來都還是“原有的味道”,他表示,在現在的發展趨勢下,技術棧越來越統一,所有團隊都在兩個技術棧上做選擇,技術棧的一些解決方案也是在原先的生態上延伸出來的,目前並沒有看到這個領域冒出很好的獨立的新技術。

“Flutter其實幾乎不太會在前端領域普及起來。”俞棋軍補充道,“Flutter是iOS端和安卓端的一個跨端方案,但是要把前端原先的標籤化開發模式轉換成對像開發模式,對H5的開發來說其實是一個歷史的倒退。因為開發模式完全不一樣,在H5上開髮用標籤化的開發模式就可以了,但是到了Flutter上沒辦法用標籤語言來寫,必須要羅列對象才能做出一個頁面,還需要考慮H5的兼容性、性能等問題。目前位置,Flutter的整套開發解決方案在H5上沒有競爭優勢,對於H5的開發來說,如果他們的開發模式遷移到Flutter,會變得非常彆扭。不過話說回來,用Flutter來做端上的應用開發是比較OK的。”

對於目前前端領域非常火爆的Serverless,俞棋軍認為需要根據企業自身的情況來判斷其價值。在他看來,Serverless首先是一個膠水層,它是把後端的某幾個服務糅合起來,形成一個API,輸入給網關,前端的工程通過網關把膠水層黏合起相應服務的數據拿給前端。這其中存在兩個問題,一個是,服務端的服務是否足夠完善,或者中台服務是否足夠完善。如果一個業務的中台服務足夠完善,那直接通過Serverless,把原先的服務編排一下輸出接口給前端應用,確實對於效率提升非常快。但是大部分的中小公司並沒有這麼完善的中台服務可以用,很多時候一個開發任務,前端、前台、中台、底層數據庫都要一起開發,如果在這樣的一個開發過程中,再加上一個Serverless的開發環節,對整體工作效率的影響不是提升,反而是降低了。

俞棋軍錶示:“Serverless在監控日誌足夠完善的情況下,在公司範圍內,對前端領域的擴展還是有比較大幫助的,前端人員會更多地滲透到業務當中去,而且在整個團隊的運作效能上也是有幫助的。但對於中小型公司或大公司的新業務線,服務沒有這麼完善的情況下,用serverless並不一定有幫助,我是這樣的一個觀點,因為我們團隊也是這樣的一種應用場景。”

據了解,目前考拉在客戶端有運用Servesless,但用的很少,目前只有兩個接口在用。不過俞棋軍也透露,等考拉遷入阿里以後,Serverless肯定是會考慮進去的,應該會大面積用起來,因為對於整個阿里集團來說,服務已經足夠完善,Serverless確實能夠提升團隊的運作效率。

從考拉前端團隊演進看前端技術的變化與取捨 2

展望未來大前端領域技術的發展趨勢,俞棋軍主要提到以下三點:

  1. 2020年隨著5G的普及,頁面加載會更快,手機端H5的呈現性能會更高。
  2. 未來前端肯定是越趨標準化的一個工作。無論是開源工具也好,開源組件庫也好,還是說開源的技術棧,都會逐步標準化。就算不是在2020年,到了2021年或者再往後,整個前端的工作都會標準化。現在可能有多個解決方案,但最後可能是某個解決方案的開發體驗好、業務產能價值大,這個解決方案最後會被大量採納,就會保留下來。
  3. BFF正在被淡化,更多的是用靜態工程部署,而不是通過BFF跑在Node上來做工程部署,隨著Serverless的發展,這個趨勢也比較明顯。靜態部署的開發體驗好很多,如果工程放在BFF上開發,前端開發不但要在靜態工程上開發核心業務,還要在BFF上做一些接口層的轉發或者接口層的糅合。最理想的情況是靜態工程做完了,Serverless API編排上來了,靜態工程一上線,服務全都打通,這樣開發就會更平滑,開發的體驗會更好。

採訪嘉賓介紹

俞棋軍,考拉海購前端負責人,2005年畢業於浙江大學軟件學院。 2009年入職網易杭研院,從事前端開發工作,參與的項目有網易博客、秀品、網易機票、易信 Web 版等。 2013年梳理前端技術體系的相關內容,給公司的前端團隊做技術培訓,參與製作早期的網易教育前端課程。 2015年參與到考拉的前端建設中,從考拉最初的6人團隊,一路建設到100人左右的前端團隊。現在他在考拉的業務建設主要分為兩部分,一是從0~1 的建設過程,二是從1~全家桶的過程,包括離線方案、BFF建設、跨端建設以及頁面性能監控等落地。