日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flutter+Serverless端到端研发架构实践

發布時間:2024/8/23 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flutter+Serverless端到端研发架构实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Serverless(無服務架構)被譽為下一代云計算,自概念推出以來,因為能帶來研發交付速度提升與成本的降低在業內異常火爆。閑魚客戶端基于Flutter進行架構演進與創新,通過Flutter統一Android和iOS雙端提升研發效能之后,希望通過Flutter+Serverless解決以下問題,從而進一步提升整體研發效率。

  • 各角色間存在大量的協同,導致整體研發效率低。
  • 移動端離業務越來越遠,服務端沒有時間做底層領域沉淀。
  • 研發架構的演進

    接下來我們帶著這里兩個問題回顧前后端研發架構演進的歷史。

    PC互聯網早期沒有還沒有前后端的概念,此階段單個業務需求通常一個開發人員可以完成研發,前端網頁與后端邏輯都寫在一個工程中。隨著業務越來越復雜,原本開發者負責前后端研發已經變得效率低下,此階段隨著移動互聯網的爆發,服務端需要服務與PC、Android、iOS等多種前端。

    服務端總是有一個疑問:服務端設計接口時,是應該面向UI,還是應該面向通用服務?一個方案是抽取一部分服務端做BFF(Backend For Frontend服務于前端的后端),作為前后端之間的適配層,核心是解決數據的聚合與編排,重新探索更合理的分層協作模式。

    服務端寫BFF帶來新的問題,總是包接口無法提升個人能力。如果BFF由端側同學開發可以解決這個問題,具體技術方案也是接下來我們要思考的問題。

    云端一體技術方案

    Serverless由BaaS(Backend as a Sevice)與Faas(Function as a Service)兩部分組成。BaaS主要包括數據庫存儲、消息隊列等能力,針對復雜的需求建議由服務端在BaaS層封裝領域服務供FaaS層使用。作為端側開發,核心關注客戶端與FaaS層的代碼開發。

    目前公司FaaS環境已經支持Java、Kotlin、Swift、Dart、Node.js等多種語言與框架,閑魚通過Android(Flutter)、iOS(Flutter)、FaaS(Dart Runtime)都使用Dart達到語言一體,并且實現協議一體與工程一體。

    語言一體:?Android、iOS、FaaS層使用Dart語言開發,實現三端語言統一,有效屏蔽FaaS層語言學習成本。
    協議一體:?通過一體化框架屏蔽通信細節,前后端同一份State,減少協議轉換,前端同學調用FaaS服務時,如同調用本地函數一樣簡潔。
    工程一體:?前后端可以在同一個工程中進行開發,利用Dart特性可以通過Hot Reload機制進行快速開發聯調。

    閑魚基于FaaS搭建Dart Runtime環境可參考《Dart編譯技術在服務端的探索和應用》。

    下單頁一體化實踐

    下面以閑魚下單頁一體化為例,通過頁面渲染與交互兩部分展開一體化實踐過程。

    • 下單渲染一體化
      從上圖左側可以看出,客戶端渲染此頁面需要在端側請求5個接口,處理渲染接口之間的邏輯,把接口返回的Data轉為為ViewModel。經過一體化改造之后,原有在端側的邏輯都移到FaaS層,包括聚合5個領域服務,處理業務邏輯,進行字段映射與頁面編排,端側無任何渲染與業務邏輯,直接獲取返回的ViewModel刷新頁面。以下是云端一體之后的流程圖。

    • 下單頁交互操作一體化
      從上圖右側可以看出,有4種操作都會改變實付款,原本這些操作處理邏輯都在端側處理,一體化改造之后,端側不存在任何計算邏輯,客戶端每次操作都會請求服務端,有FaaS進行紅包是否過期等數據校驗,再返回頁面數據進行刷新。

    Nexus Framework:基于Flutter的一體化移動端UI框架。
    Logic Engine:基于Flutter的一體化通信與調度框架。
    Nexus Server: 基于Dart Runtime的一體化服務端框架。

    代碼示例

    以下客戶端下單頁初始化的代碼示例

    以下是FaaS層對客戶端發起的初始化請求的處理

    以上是Flutter+FaaS雙端協議一體的開發示例,雙端都是通過BinderAction進行交互,Action中的State是同一個類型,從而有效屏蔽通信細節,提高研發效率。

    Flutter+Serverless一體化收益

    下單頁已經上線,回顧整個研發過程,云端一體研發架構不僅僅只是新的技術方案,價值在于擴展端側工作邊界,帶來生產關系的重塑。

    協同效率提升:相比Flutter帶來的雙端一體來說,該三端一體的架構進一步提升了30%整體研發效率。

    業務閉環:端側還可以更快速地反饋與響應業務,不斷嘗試,從而搭建起更完善的產品模型,為業務創造更多的價值。

    人員成長:端側從只關注用戶體驗的開發資源,轉變為整個業務研發的技術負責人,從只關注端側的局部視角到更專注業務閉環的全局視角。Faas層調用底層領域服務來完成自己的業務,原來服務端可以更加地去專注領域服務的沉淀。

    總結與展望

    Flutter+Serverless三端一體研發架構,能夠解決本篇提出的原有研發架構的兩個問題,通過改變端側職能邊界有效減少協同,客戶端可以負責整個業務,服務端有更多的時間進行領域沉淀,但是閑魚實踐Flutter+Serverless三端一體研發架構時也遇到以下挑戰:

  • FaaS層研發體驗需要繼續提升
    調試只能通過GAIA日志查看,目前規劃是把平臺日志抓取到本地,并且提供FaaS代碼遠程調試功能。
  • 運維成本增加
    問題定位、請求鏈路、壓測、安全生產的工作轉移,如何摸平與服務的差異。
  • 以上是實踐過程中發現的新的挑戰都已經列入下一階段工作中,后續會持續分享這些挑戰的思考與解決方案。


    原文鏈接
    本文為阿里云原創內容,未經允許不得轉載。

    總結

    以上是生活随笔為你收集整理的Flutter+Serverless端到端研发架构实践的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。