當前位置:
首頁 > 最新 > 由NODE想到的當今時代前後端的關係

由NODE想到的當今時代前後端的關係

導讀:文章主要分兩部分,前端部分SSR的復興和微服務BFF層的需求。適合有一定經驗的做過前端內容開發的工程師閱讀。文中名詞請自行百度。

寫這篇文章的契機是早上看的一個NODE的文章。NODE這裡不做介紹,他帶來的是非常多的可能性。

其實去年以來一直在思考前後端目前的聯繫和問題,尤其是微服務時代後的前後端關係。恰好前天一個工作不久的程序媛問到模板的問題,現在的新人可能起點太新了,不能說高,是太前面了,沒有經歷,踩過歷史的坑的結果就是可能以為新的就是好的,而問題是這個新,可能並不是真正的新,只是相對的而已。畢竟這個年代技術發展太快。

前後端不分離的時候,其實是最幸福的時候,但是面對的問題主要是:

1性能問題

2用戶體驗問題

3分工細化問題

性能問題依靠各種模板語言的優化依然沒法解決,只是加快了開發,因為你的產品經理才是最大的性能問題製造者。

性能問題解決不了,加上蘋果給業界帶來的對交互的重要性的極大提升,讓我們有了UX,UED,所以用戶體驗成為了一大理由。事實也是這樣。比如我就會因為流程,UI設計問題放棄很多網站和工具。

然後我們知道社會發展的一大體現就是分工的細化。所以後面有了前後端分離,如SPA等等。

從另一個層面來說當任何人開闢了新的戰場/市場時他肯定是要推動來保持自己的地位優勢的,所以前端的翻身做主人也是那幾年,如果按照漫畫來說,可以叫「大前端時代」。後果就是大家都分離了,不分離的好像是異類,但是結果呢?

如果這樣什麼問題都解決了就簡單了。這時候大家發現這樣也有很多問題,首當其衝的就是SEO,然後是首屏速度慢。

我們知道這個世界不是非黑即白的,就像微服務不是說完全使用DDD思想才叫微服務一樣。這時候大家發現其實還是需要模板的,但是這時候這個模板的實際控制人和使用方式都和前後端不分離的時代發生了變化。專人做專事,模板給前端設計使用,這是責任人的變化;從後端框架SSR到中間層渲染,這是位置和使用方式的變化。當然現在這個所謂的中間層渲染可以歸類到SSR里。我們知道國內淘寶的技術水平是十分領先的,前端非常多的理念都是他們提出的。包括這個中間層渲染,這一部分用什麼語言工具去做無所謂。關鍵是這個結果就是部分SSR部分前端渲染。至此這些問題算是暫時得到了解決。對SEO來說,相當於通過SSR生成的快照去做。JDK也一直有JS引擎。

歸根結底框架是死的,你用不用VUE和你做不做SPA之間沒有什麼聯繫。就像我一直強調微服務是一種思想一樣。

但是你以為到這就完了?不,這只是上半部分。我說過我最先是因為微服務去思考前後端的關係,舉個例子你給純APP開發後台,是不用你考慮要不要前後端分離,用什麼模板框架的。但是這時候我們發現了一個問題,在微服務時代,介面數量太多給前後端人員都帶來了非常大的困擾。困擾在哪?

對後端人員:

當需要業務的編排時,如果用DUBBO做底層微服務,OK,DUBBO暴露出HTTP介面很蠢,我們做一個編排層出來,但是這時候很煩因為編排層如果做的太緊密性能壓力甚至會超過網關,分的太細又帶來了維護的問題,最關鍵的是如果有很複雜的業務要在聚合層實現。要麼把2個聚合合為一個,要麼再在前面加一層。哪種方式都不人道。當然DUBBO做微服務的好處就是調用鏈深度可以控制。如果用SPRING CLOUD這種HTTP的做微服務,可以不需要編排層,但是問題來了,如果前端需要編排,後端不可能在服務里新建一堆各種調用、調用鏈長度不可控的介面。比如車的介面查了3個服務,深度2層,人的介面查了2個服務深度1層。這時候前端說我要車和人,然後你被迫加了一個介面,此時相當於加一層變成了深度3層。

這時候前端的需求就轉嫁到了後端身上,後端的工作量加大了。雙方肯定是會有碰撞的這是利益分配的問題。

這時候業內比較好的解決方案是什麼?是抽象出一個BFF層。我們知道前端經常會對後端提供的介面不滿意,因為不同端比如安卓,IOS,H5,WEB等等對介面返回數據的需求是不同的。這時候最好的做法就是前端去做BFF層,既然不滿,就把權力給他。

然而這時候最大的問題是啥?要不怎麼說這個世界就是這樣沒有完美的方案,就是語言問題,BFF層用什麼語言寫,如果是H5,WEB OK,可以用NODE做,這個就回到了上半部分說的中間層渲染,本質是一樣的為了滿足前端的各種需求。但是當你面對安卓,IOS怎麼辦?

而且NODE也不是所有前端都會,又能里維護,甚至你公司的運維人員都會罵娘你怎麼給人家找了這麼多麻煩,不用行不行?所以BFF層終究還是一個幻想。只有能力特彆強的團隊能做到。

還有就是微服務時代網關是我們必不可少的功能,你會發現BFF和網關是有功能重合的,實際上也是如此,業內認為BFF是網關的一種特殊實現。真正落地的時候雙方的職責分配也是需要仔細討論的。HTTP請求過來走的層次過深導致的性能損耗和維護問題也都要考慮。BFF在網關前還是網關後也要考慮。我個人是非常反感陰謀論的,沒人阻止NODE替代JAVA等後端語言。問題是前端從業者水平普遍差了點,沒有這個能力,試想連中間層又有多少團隊實現了,何況整個後端?曾經引以為傲的NODE I/O性能,在所有語言幾乎都性能提升了一個檔次的現在又有多大說服力?

同樣當初BFF的驅動者GraphQL目前也是境遇凄慘。

再比如微服務的核心思想DDD也是不溫不火,哪怕微服務概念火了,又有幾個項目用到了DDD的多少思想呢?

尷尬不尷尬。這就是技術的現狀,決定你火不火的,不是你的思想深度,而是你的實現形式。

不過天塌下來總有個子高的頂著,淘寶系的螞蟻金服又一次走在了業界前列推出了TWA理念並付諸實踐。這裡就不細說了,未來很美好,只不過一方面我們要等,另一方面我們要足夠強,不然新技術新思想再多,你的團隊沒有那個能力,跟你又有什麼關係么?

以上內容是個人的一些愚見,見笑見笑,大牛輕拍。

本人太懶,今天沒有模板。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

WELLTIME COLLECTION│爵士蓋茨比JAZZ
DMX球鞋究竟有什麼過人之處

TAG:全球大搜羅 |