國有,閒魚架構團隊負責人。在7月13號落幕的2019年Archsummit峯會上就近一年來閒魚在Flutter&FaaS一體化項目上的探索和實踐進行了分享。前端
隨着無線,IoT的發展,5G的到來,移動研發愈加向多端化發展。傳統的基於Native+Web+服務端的開發方式,研發效率低下,顯然已經沒法適應發展須要。架構
咱們但願探索閒魚這樣規模的獨立APP的高效研發架構。主要思路是圍繞Flutter解決多端問題,並使Flutter與FaaS等無服務容能力打通,造成雲端一體化的研發能力,支持一雲多端的發展須要。在某些場景已經取得效果,但願分享過程當中的思考,與你們交流。併發
閒魚選擇Flutter主要是出於高性能的考慮。Flutter高性能主要來源於2個緣由:框架
更多比較:異步
沒有銀彈的解決方案,Flutter與RN各有優勢。如何選擇因素不少,關鍵看如何取捨,舉個例子:工具
雲端技術棧的打通,是減小協同的不錯的解法。以往前端+Node.js的一體化方案你們應該不會陌生,然而若是端側使用了Flutter,那雲側Dart天然是第一選擇。組件化
FaaS的本質是運行在雲端,那Dart適合用在雲/Server上嗎?佈局
Dart語言早於Flutter,在最初的設計上,Dart就能夠用於Web、Server。Dart具有一些服務端語言的特色:性能
閒魚首先嚐試將Dart做爲普通的Server,替代傳統的Java Server,而後再將Dart容器嵌入到FaaS容器中。創建Dart Server能力是第一步,也是主要的工做量所在。spa
閒魚在Dart Server方面的建設思路:
開發期:
運行期:
上述內容實現了Flutter&Dart FaaS的技術棧的統一,但僅技術棧統一還遠遠不夠,端、雲的同窗仍然沒法真正互補和一體化打通,緣由在於還有更多深刻問題須要考慮:
面向這些問題,閒魚的解法思路:
案例一,一體化在資源均衡方面的體現。在近期的一個項目中,雲端一體化使本來2個月的項目時間,減小了20天。
案例二,一體化在業務閉環方面的體現。負責增加的一位開發同窗,專一在增加業務上,在合適的狀況下爲合適的人投放合適的內容,以此帶來用戶的增加和活躍效果。一體化的方式下,能夠統一雲、端的切面,業務研發再也不受雲、端的限制。
一體化是建設高效研發框架的方向,並非全部場景都須要一體化的開發,但一體化的Flutter、FaaS等技術組件,能夠獨立使用,也會帶來效率提高,而且與原有的開發模式兼容。從一體化的思路去建設,可使總體架構體系更加一致,也有機會作一體的架構沉澱。
將來閒魚但願在一體化上作更多嘗試和深刻探索,包括一體化工具、一體化業務平臺、數據化智能化等方向。
本文爲雲棲社區原創內容,未經容許不得轉載。