成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于 BFF 架構設計的胖瘦之爭

開發(fā) 架構
在實際應用中,可以根據不同的階段和需求,靈活地調整 BFF 的設計,以實現最佳的用戶體驗和系統性能,這也解釋了關于 BFF 為什么目前還沒有形成統一的技術方案和觀念。

一、什么是BFF

最開始,我們還是先明確下BFF是什么吧,由于前文已經做過介紹了,這里就簡單的提一下。

BFF:Backends For Frontends(服務于前端的后端)。

BFF是一種Web架構,微服務設計系列叢書的作者 Sam Newman曾在他的博客中寫了一篇相關文章《Pattern: Backends For Frontends》。

BFF 的概念最初就是來源于此。

圖片圖片

服務端設計API時會考慮到不同設備的需求,即為不同設備提供不同API接口,雖然它們可能實現相同功能,但因不同設備的特殊性,它們對服務端的API訪問也各有其特點,需區(qū)別處理。在計算機科學中,所有問題都可以通過加一層來解決,于是 BFF 架構設計應運而生。

2. BFF的胖瘦之爭

在現代軟件開發(fā)中,服務化可能是解決大型復雜應用的必然之路,BFF 架構已成為構建高效、靈活前端應用的重要手段之一。

在服務化的系統中規(guī)劃階段,有一些必然會被討論的話題:

要不要 BFF 層? 要不要編排層?

要不要網關?什么是網關?

應用網關和網關的區(qū)別是什么?

后端(領域服務)服務之間要不要互相調用?

要不要使用 BFF 來編排后端服務?

BFF 是不是編排層?

BFF 能不能宏觀上對應 DDD 的應用層?

......

在上面這些問題中,最讓人關心的問題倒不是響應用戶請求流量的服務叫是 ServiceA 還是 ServiceB,而是它應該直接轉發(fā)數據還是需要為每個 API 重新編寫一次實現,并調用后端 API。

然而,對于 BFF 架構的設計,存在著 “胖” 與 “瘦” 的不同考量,這會決定我們在 BFF 中是否需要編寫大量代碼,所以我把它們的區(qū)別稱之為"胖瘦 BFF"。

概括而言:不同 BFF 的考量會決定微服務架構的兩種形態(tài)。

3. 胖 BFF

在有一些架構形態(tài)中,BFF 會有以下職責:

  • 鑒權
  • 限流、熔斷、服務降級、灰度路由等
  • 接入多種協議和設備,比如 MQTT 服務、WebSocket 等
  • 編排領域服務,盡量避免后端服務之間互相依賴,統一由 BFF 處理
  • 不同類型的客戶端一套 BFF
  • 非常接近 DDD 四層架構中的應用層,處理面向場景的業(yè)務

因為它的職責比較多,我們暫且稱其為:胖 BFF。

胖 BFF 的特點是:

  • 強大的業(yè)務邏輯處理能力:胖 BFF 架構不僅可以進行數據轉換,還可以承擔更多的業(yè)務邏輯處理。它可以整合多個后端服務的數據,進行復雜的計算和業(yè)務規(guī)則校驗。
  • 高度定制化:能夠根據不同的前端需求進行深度定制,為不同的用戶界面提供個性化的數據和服務。
  • 更好的性能優(yōu)化:可以對數據進行緩存、預取等優(yōu)化操作,提高前端應用的性能。

胖 BFF 的好處是:

  • 可以對不同類型的客戶端定制一套 API,且各自之間不受干擾
  • 領域服務可以設計得比較原子化,比較少的侵入特定場景信息到領域服務中
  • 容易適配更多類型的客戶端
  • 比較容易實現個性化的鑒權、特定用戶群的交互邏輯
  • 方便實現準確、統一的 API 文檔

但是這類架構也有非常多的弊端,導致很多架構師非常抗拒:

  • 破壞了端到端交付能力,如果按照上下文劃分微服務,剛好這些微服務和前端業(yè)務和需求對應,那么跨功能團隊的交付效率會更高
  • 重復勞動,一些接口的模型不僅在領域服務實現一次,還需要在 BFF 做一次
  • 難以分工,維護后端服務的人員都會和這個服務集成

在海外的一些文章和書籍中,他們也會有類似的困惑。很多架構師把這種結構叫做編排(Orchestration)。

圖片圖片

4. 瘦 BFF

相對而言,瘦 BFF 架構,其職責可能更少:

  • 鑒權
  • 透明轉發(fā)流量到后端服務
  • 和胖 BFF 類似,也有限流、熔斷、服務降級、灰度路由等職責

瘦 BFF 的特點:

  • 簡潔高效:瘦 BFF 架構專注于將后端服務的數據進行輕量級的轉換和適配,以滿足前端的需求。它通常只進行必要的數據篩選、格式轉換和簡單的業(yè)務邏輯處理。
  • 快速響應:由于功能相對簡單,瘦 BFF 可以快速響應前端的請求,減少延遲,提高用戶體驗。
  • 易于維護:代碼量較少,結構清晰,使得維護成本相對較低。開發(fā)人員可以更容易地理解和修改代碼,快速定位和解決問題。

瘦 BFF 的好處是:

  • 端到端交付,前端開發(fā)人員直接使用后端領域服務的 API 文檔
  • 開發(fā)效率高,避免多編寫一層 BFF
  • 減少一次集成

對應的,瘦 BFF 的弊端可想而知:

  • 沒有編排層,服務之間相互依賴
  • 編排行為落入前端或者領域服務,拓展性差
  • 領域服務之間調用關系復雜
  • 領域服務職責過多,侵入業(yè)務場景,難以被復用

這樣的話,BFF 僅僅扮演轉發(fā)的作用,也就成了我們口中的網關。

圖片圖片

5. 兩種形態(tài)的權衡

那么在什么場景下,更合理的選擇這兩種結構之一呢?

  • 1. 業(yè)務需求

如果業(yè)務邏輯簡單,數據交互相對較少,瘦 BFF 可能就足夠滿足需求。但如果業(yè)務復雜,需要進行大量的業(yè)務邏輯處理和數據整合,胖 BFF 則更為合適。

  • 2. 開發(fā)團隊規(guī)模和技能

瘦 BFF 相對容易開發(fā)和維護,適合小型開發(fā)團隊或技術能力有限的團隊。而胖 BFF 需要更高的技術水平和更多的開發(fā)資源,適合有經驗的大型開發(fā)團隊。

  • 3. 項目周期和迭代速度

對于短期項目或需要快速迭代的項目,瘦 BFF 可以更快地實現并投入使用。而胖 BFF 的開發(fā)周期可能較長,但在長期運行中可以提供更好的性能和可維護性。

  • 4. 可擴展性

考慮未來業(yè)務的發(fā)展和擴展需求。如果預計業(yè)務會不斷增長,功能會逐漸復雜,選擇胖 BFF 可以為未來的擴展提供更好的基礎。

圖片圖片

6. 總結

總之,BFF 架構的胖瘦之分并沒有絕對的標準,需要根據具體的項目需求、業(yè)務特點和開發(fā)團隊情況進行綜合考慮。

無論是胖瘦 BFF,其實都是基于場景對單體系統拆分的結果,非常依賴于所屬場景。

在實際應用中,可以根據不同的階段和需求,靈活地調整 BFF 的設計,以實現最佳的用戶體驗和系統性能,這也解釋了關于 BFF 為什么目前還沒有形成統一的技術方案和觀念。



責任編輯:武曉燕 來源: 架構精進之路
相關推薦

2025-04-15 04:00:00

2021-10-11 09:53:41

架構設計分層

2013-05-27 10:58:28

Tumblr架構設計雅虎收購

2022-11-02 08:31:53

BFF架構App

2023-05-12 08:06:46

Kubernetes多云架構

2023-07-05 08:00:52

MetrAuto系統架構

2009-01-15 09:43:51

Web架構設計緩存

2012-05-11 10:38:15

Cloud Found

2025-05-09 08:45:13

2015-06-02 04:17:44

架構設計審架構設計說明書

2009-07-06 10:36:41

敏捷開發(fā)

2021-11-08 06:57:35

Redis架構設計

2015-06-02 04:34:05

架構設計

2025-03-04 00:00:33

2024-02-20 09:25:28

架構設計系統

2015-10-29 10:50:46

Android架構設計原則

2024-10-17 08:26:53

ELKmongodb方案

2012-06-07 10:45:12

軟件架構設計原則

2021-10-28 06:17:46

架構設計組件

2019-11-25 10:58:19

Tomcat架構Web
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情国产精品 | 欧美日韩午夜精品 | 天天插天天操 | 中文字幕在线三区 | 国产精品久久久久久吹潮 | 放个毛片看看 | 亚洲国产成人精品女人久久久野战 | 久久久久久久久久影视 | 亚洲精品乱码久久久久久蜜桃91 | 精品久久久久久久久久久院品网 | 欧美日韩精品专区 | 久久一级 | 日韩综合色 | 欧美性网 | 91精品国产91久久久久久不卞 | 欧美精品国产一区二区 | 中文字幕一区二区三区四区 | 日韩欧美二区 | 日本不卡一区二区三区在线观看 | 毛片入口 | 亚洲精品国产成人 | 亚洲精品国产电影 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 新av在线| 国产视频观看 | 色综合天天天天做夜夜夜夜做 | 99精品欧美 | 欧美一级免费 | 国产精品一二区 | 每日在线更新av | 日韩精品一二三区 | 久久99国产精一区二区三区 | 欧美日韩国产中文 | 暖暖成人免费视频 | 亚洲精品视频在线播放 | 国产一区二区三区四区五区加勒比 | 日韩欧美在线免费 | 97精品超碰一区二区三区 | 久久久久久久久久久91 | 亚洲国产成人久久久 | 999国产视频 |