降低新人成本
提升匹配效率
閒魚與手淘的賣家差異:非專業的個人賣家,利益驅動弱。
發佈產品差異:爲保證市場供給,只能堅持輕發佈。
商品差異:結構化信息少,沒有歷史累計行爲。
閒魚與手淘在業務、團隊結構的差異性導致架構上不同的關注點,導致不同的演進路線。
試錯期業務核心問題:業務不斷探索適合的商業模式
架構核心關注點:提升響應速度,快速支持業務上線
架構核心原則:以質量換取速度,可以犧牲一點線上質量(業務可接受範圍)來換取更快的響應速度
URL Router:所有請求路由到一個H5的鏈接,通過URI Schema重定向到真正頁面,如果對應的native沒有開發出來,就用H5版本來實現,解決安卓與IOS不同步的問題。
開關中心:通過開關控制頁面路由,頁面入口是否開啓,分版本控制,參數變更等改動。
Poplayer:無需發版的情況下在已有的Native界面上彈出H5的部署容器,來滿足運營隨時創建活動並需要一個活動入口的需求。
業務核心問題:隱約看到商業模式,需要加速驗證,擴大規模
架構關注點:提升效率(爲了有機會去做更多事情,非降低整體成本),建設更多能力驗證業務方向
架構演進方向:前後端的協議、工具的自動化
對外整體連接協議的梳理,在容器這端演化成Service Bus(類似服務端的ESB),對具體的實現進行封裝, 以方便後續基礎能力的可替換。
組件庫的建立,新做一個頁面的時候,能通過現有的UI組件進行簡單組裝,不需要從0開始搭建。組件與服務端打通,組件組裝邏輯與數據直接由服務端完成,客戶端負責解析與渲染。
業務核心問題:需要讓更多的二方、三方參與到共享經濟平臺的建設中,但是平臺生態建設又超出了閒魚自身的能力
架構核心關注點:擴展性(具備接入業務的能力)、業務隔離(已接入業務平穩運行)、平臺基礎能力建設(業務更好的發展)
架構原則:做一些更基礎的規劃,然後把更多的可能性、動態性留給二方或者三方完成
將業務中不變的部分放入主幹,定義出做什麼;變化的部分以擴展點形式開放出來,讓具體的業務放自己來實現,完成怎麼做,誰去做。Swak的擴展點實現支持遠程調用,可以讓業務實現應用級別的隔離 ,相比傳統的分包、分模塊隔離方式更加徹底。
當前,閒魚商品主鏈路完成基於Swak的升級。下面是一個閒魚幣個性化業務的代碼案例:
實時選品投放能力--馬赫:解決因閒魚商品特性(結構化信息少,新品成交佔比高)導致傳統離線選品轉換率差的問題。
實時線上故障定位能力--神探:解決類閒魚規模系統因依賴多、場景多,導致線上問題頻發、問題定位投入成本高的問題。核心思路是對系統每一次錯誤的請求鏈路進行實時採集、分析、聚合再可視化展現,將整體故障定位過程變成自動化。
端上同學離業務越來越遠,服務端同學沒時間做底層領域沉澱。
各端研發之間存在大量的協同, 整體研發效率低下。
招人也難了,需要同時招多個技術棧的同學適合“ 閒魚這樣規模的具有獨立APP” 的高效研發架構, 形成雲端一體化的研發能力,支持一雲多端的發展。
閒魚也是一樣,所謂沒有銀彈的解決方案,在跨平臺方案的選型中, 充分對比了Flutter與RN的差異性,優缺點。閒魚認爲"跨平臺與高性能是我們當前的核心訴求”, 再結合團隊內native技術棧的同學較多這個因素,我們最終選擇了Flutter作爲跨端解決方案。
因此,我們開始思考是否能有一體的架構 ,能讓一個同學可以Cover一個雲到端的完整業務,形成業務閉環。
這不僅僅是效率的提升,更能爲業務開發同學帶來更大的成長空間,可以完整的和專注的思考業務。
如何消除雲端技術壁壘?首先要統一技術棧,其次端同學對雲的思維模式、知識儲備上的差異,需要有辦法消除。
如何使工作總量減少 ( 1+1<2 )?一體化下需要使總工作量降低,不是簡單的進行工作量轉移。
如何促進生產關係重塑?生產力發生變化,需要建立新的生產關係。
統一技術棧: Dart具備服務端語言特點,強類型,支持異步與併發,甚至更快的啓動速度,因此作爲服務端的server完全沒有問題。Dart落地過程中更多的解決的是生態的問題(阿里的大部分生態都是基於java來建設的,例如中間件、消息、遠程調用)。我們主要通過通過C++擴展、SideCar方式做橋接,Service Mesh來解決。
雲端差異抹平: 通過Faas , Baas等無服務器能力的建設, 抹平除寫代碼外的其他差異性(運維、故障定位等),使得客戶端同學能寫服務端;通過UI2Code(根據圖片生成UI代碼),頁面代碼模板化(頁面容器,數據管理)使得服務端寫客戶端
一體化總體效率提升:以往的架構是雲、端分開架構的,一體化後下沉跨雲端的研發框架Nexus,通過框架、工程體系的支持, 消除協議層, 重新定義UI與邏輯分層, 帶來了總工作量1+1<2
關係重塑:領域下沉能讓原來服務端同學更加專注領域建設, 使領域層更加穩定, 讓業務層與領域層的變化比例,從當前的2:1,提高到5:1 甚至更高。讓大家的關注點都集中在自己的範圍內。
改造前:
下單頁有着複雜的渲染、交互邏輯,之前大部分邏輯都是在端上,需要兩個客戶端+一個服務端的同學來維護。
資源均衡:將客戶端界面從 IOS、Android兩端統一成了Flutter, 後續只需要一個同學維護即可(原來需要兩個開發人員),也不會出現邏輯不一致的情況。
協同效率提升:端上由兩端協同提升到無需協同,雲端由接口協議約定演化成現階段的一體化協議,未來可將協議下沉到框架實現雲端無接口約定
業務閉環&人員成長:原來雲端分離的業務邏輯全部下沉到了Faas(Dart),將原來分散在端與服務端的邏輯進行歸一,有機會做更多的規劃建設,同時也是端的同一個同學來維護,給這個端的同學帶來更大的成長空間。
領域專注:Faas層調用底層領域服務來完成自己的業務,原來服務端的同學更多投入到交易能力的建設上。
框架下沉:跨雲端業務研發框架Nexus:寓意着能將客戶端與服務端連接在一起。核心思想就是將UI與邏輯分離,框架限定了端上只負責UI與狀態的存儲, 所有的邏輯都在Faas中完成。非常適合類似下單頁的領域穩定的的場景。
閒魚團隊是Flutter+Dart FaaS前後端一體化新技術的行業領軍者,就是現在!客戶端/服務端java/架構/前端/質量工程師面向社會招聘,base杭州阿里巴巴西溪園區,一起做有創想空間的社區產品、做深度頂級的開源項目,一起拓展技術邊界成就極致!
*投喂簡歷給小閒魚→[email protected]