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

互聯(lián)網(wǎng)分層架構(gòu),為啥要前后端分離?

開發(fā) 開發(fā)工具 前端
有水友在評論中留言問我:我還是不理解,為什么要進(jìn)行前后端分離呀?今天,簡單說說,互聯(lián)網(wǎng)分層架構(gòu)里的前后端分離。

有水友在評論中留言問我:

沈老師,我在一家創(chuàng)業(yè)公司,大概有20人左右的研發(fā)團(tuán)隊(duì)。

團(tuán)隊(duì)正在推進(jìn)前后端分離,我覺得架構(gòu)變得復(fù)雜了,項(xiàng)目研發(fā)周期變長了,但組長說,互聯(lián)網(wǎng)公司都在搞前后端分離,所以我們也要搞。

我還是不理解,為什么要進(jìn)行前后端分離呀?

今天,簡單說說,互聯(lián)網(wǎng)分層架構(gòu)里的前后端分離。

畫外音:“別人在搞xxoo技術(shù)”一定不能成為,一家公司推動(dòng)“xxoo技術(shù)”的理由。

上圖,是一個(gè)典型的互聯(lián)網(wǎng)分層架構(gòu):

  • 業(yè)務(wù)站點(diǎn)層:web-server;
  • 業(yè)務(wù)服務(wù)層:biz-service;
  • 基礎(chǔ)數(shù)據(jù)服務(wù)層:data-service;
  • 數(shù)據(jù)存儲層:db+cache;

隨著時(shí)間的推移,業(yè)務(wù)越來越復(fù)雜,改版越來越多,此時(shí)業(yè)務(wù)站點(diǎn)層web-server層雖然使用了MVC架構(gòu),但以下諸多痛點(diǎn)是否似曾相識?

(1)產(chǎn)品追求絢麗的效果,并對設(shè)備兼容性要求高,這些需求不斷折磨著使用MVC的Java工程師們;

畫外音:本文以Java后端舉例。

(2)不管是PC,還是手機(jī)H5,還是APP,應(yīng)用前端展現(xiàn)的變化頻率遠(yuǎn)遠(yuǎn)大于后端邏輯的變化頻率,改velocity模版并不是Java工程師喜歡和擅長的工作;

畫外音:感謝那些喜歡做改版的產(chǎn)品經(jīng)理。

此時(shí),為了緩解這些問題,一般會(huì)成立單獨(dú)的前端FE部門,來負(fù)責(zé)交互與展現(xiàn)的研發(fā),其職責(zé)與后端Java工程師分離開,但痛點(diǎn)真的解決了嗎?

  • 一點(diǎn)點(diǎn)展現(xiàn)的改動(dòng),需要Java工程師們重新編譯,打包,上線,重啟tomcat,效率極低;
  • 原先Java工程師負(fù)責(zé)所有MVC的研發(fā)工作,現(xiàn)在分為Java和FE兩塊,需要等前端和后端都完成研發(fā),才能一起調(diào)試整體效果,不僅增加了溝通成本,任何一塊出問題,都可能導(dǎo)致項(xiàng)目延期;

畫外音:你有沒有被折磨過?

更具體的,看一個(gè)這樣的例子,最開始產(chǎn)品只有PC版本,此時(shí)其系統(tǒng)分層架構(gòu)如下:

客戶端,web-server,service,非常清晰。

隨著業(yè)務(wù)的發(fā)展,產(chǎn)品需要新增Mobile版本,Mobile版本和PC版本大部分業(yè)務(wù)邏輯都一樣,區(qū)別是什么呢?

  • 信息展現(xiàn)的條數(shù)會(huì)比較少,即調(diào)用service服務(wù)時(shí),傳入的參數(shù)會(huì)不一樣;
  • 產(chǎn)品功能會(huì)比較少,大部分service的調(diào)用一樣,少數(shù)service不需要調(diào)用;
  • 展現(xiàn),交互會(huì)有所區(qū)別;

由于工期較緊,Mobile版本的web-server一般怎么來呢?

沒錯(cuò),把PC版本的工程拷貝一份,然后再做小量的修改:

  • service調(diào)用的參數(shù)有些變化;
  • 大部分service的調(diào)用一樣,少數(shù)service的調(diào)用去掉;
  • 修改展現(xiàn),交互相關(guān)的代碼;

畫外音:你有沒有拷貝過代碼?

業(yè)務(wù)繼續(xù)發(fā)展,產(chǎn)品又需要新增APP版本,APP版本和Mobile版本業(yè)務(wù)邏輯完全相同,區(qū)別是什么呢?

(1)Mobile版本返回html格式的數(shù)據(jù),APP版本返回json格式的數(shù)據(jù),然后進(jìn)行本地渲染;

由于工期較緊,APP版本的web-server一般怎么來呢?

沒錯(cuò),把Mobile版本的工程拷貝一份,然后再做小量的修改:

(2) 把拼裝html數(shù)據(jù)的代碼,修改為拼裝json數(shù)據(jù);

這么迭代演化,架構(gòu)會(huì)進(jìn)化成什么樣子?

  • 端:是PC,Mobile,APP;
  • 站點(diǎn)應(yīng)用層:是PC站,M站,APP站;
  • 服務(wù)層:通用的業(yè)務(wù)服務(wù),以及基礎(chǔ)數(shù)據(jù)服務(wù);

這個(gè)架構(gòu)圖中的依賴關(guān)系是不是看上去很別扭?

  • 端到web-server之間連接關(guān)系很清晰;
  • web-server與service之間的連接關(guān)系變成了蜘蛛網(wǎng);

上述分層架構(gòu),可能存在什么問題呢?

PC/H5/APP的web-server層大部分業(yè)務(wù)是相同的,只有少數(shù)的邏輯/展現(xiàn)/交互不一樣:

  • 一旦一個(gè)服務(wù)RPC接口有稍許變化,所有web-server系統(tǒng)都需要升級修改;
  • web-server之間存在大量代碼拷貝;
  • 一旦拷貝代碼,出現(xiàn)一個(gè)bug,多個(gè)子系統(tǒng)都需要升級修改;

如何讓數(shù)據(jù)的獲取更加高效快捷,如何讓數(shù)據(jù)生產(chǎn)與數(shù)據(jù)展現(xiàn)解耦分離呢?

前后端分離的分層抽象勢在必行。

通過前后端分離分層抽象:

  • 站點(diǎn)展示層:node.js,負(fù)責(zé)數(shù)據(jù)的展現(xiàn)與交互,由FE維護(hù);
  • 站點(diǎn)數(shù)據(jù)層:web-server,負(fù)責(zé)業(yè)務(wù)邏輯與json數(shù)據(jù)接口的提供,由Java工程師維護(hù);

這樣做有什么好處呢?

  • 復(fù)雜的業(yè)務(wù)邏輯與數(shù)據(jù)生成,只有在站點(diǎn)數(shù)據(jù)層處寫了一次,沒有代碼拷貝;
  • 底層service接口發(fā)生變化,只有站點(diǎn)數(shù)據(jù)層一處需要升級修改;
  • 底層service如果有bug,只有站點(diǎn)數(shù)據(jù)層一處需要升級修改;
  • 站點(diǎn)展現(xiàn)層可以根據(jù)產(chǎn)品的不同形態(tài),傳入不同的參數(shù),調(diào)用不同的站點(diǎn)數(shù)據(jù)層接口;

除此之外,還有其他諸多優(yōu)點(diǎn):

  • 產(chǎn)品追求絢麗的效果,并對設(shè)備兼容性要求高,不再困擾Java工程師,由更專業(yè)的FE對接;
  • 一點(diǎn)點(diǎn)展現(xiàn)的改動(dòng),不再需要Java工程師們重新編譯,打包,上線,重啟tomcat;
  • 約定好json接口后,Java和FE分開開發(fā),F(xiàn)E可以用mock的接口自測,不再等待一起聯(lián)調(diào);

于是乎,如上圖所示,架構(gòu)進(jìn)化了,前后端分離了。

當(dāng)業(yè)務(wù)越來越復(fù)雜,端上的產(chǎn)品越來越多,展現(xiàn)層的變化越來越快越來越多,站點(diǎn)層存在大量代碼拷貝,數(shù)據(jù)獲取復(fù)雜性成為通用痛點(diǎn)的時(shí)候,就應(yīng)該進(jìn)行前后端分離分層抽象,簡化數(shù)據(jù)獲取過程,提高數(shù)據(jù)獲取效率,向上游屏蔽底層的復(fù)雜性。

另外要強(qiáng)調(diào)的是,是否需要前后端分離,和業(yè)務(wù)復(fù)雜性,業(yè)務(wù)發(fā)展階段,人員素質(zhì)模型有關(guān),千萬不可一概而論。

要實(shí)施前后端分離,以下四點(diǎn)是必須要考慮的。

(1) 第一點(diǎn),SEO的考慮。

如果是 PC 端的站點(diǎn),需要考慮是否需要強(qiáng)支持 SEO ,前后端分離的架構(gòu),很可能對搜索引擎的 spider 不友好,可能影響站點(diǎn)的收錄。

當(dāng)然,如果是原生 APP ,后端 node.js 只返回 json 數(shù)據(jù),或者單頁應(yīng)用 SPA (對百度來說就是一個(gè)頁面),則不太需要考慮這方面的問題。

(2) 第二點(diǎn),產(chǎn)品特性的考慮。

很多產(chǎn)品追求酷炫的前端效果,并且對前端兼容性要求很高,前端產(chǎn)品改版頻率很高,那么前后端分離是有必要的。

否則,前后端分離只會(huì)帶來更多系統(tǒng)架構(gòu)的復(fù)雜性。

第三點(diǎn),公司發(fā)展階段考慮。

公司發(fā)展的初級階段,人比較少,對產(chǎn)品迭代速度的要求較高,此時(shí)更多的需要一些全棧的工程師,一個(gè)人開發(fā)從前到后全搞定。如果此時(shí)實(shí)施前后端分離,將引入“聯(lián)調(diào)”一說,并且增加了溝通成本比,可能導(dǎo)致產(chǎn)品迭代的速度降低。

第四點(diǎn)、人員技能考慮。傳統(tǒng) FE 與后端 Java/PHP 工程師的合作方式, FE 工程師不需要有很深的后端功底,一旦引入前后端分離, node.js 層的前端同學(xué)需要了解更多的后端知識體系,不排除有 FE 同學(xué)對后端技能的排斥,引發(fā)人員的不穩(wěn)定。

總之,前后端分離不只是一個(gè)分層架構(gòu)的技術(shù)決策,和SEO、產(chǎn)品特性、公司發(fā)展階段、人員知識體系相關(guān),千萬不可一概而論。

任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì),都是耍流氓。

希望大家有收獲。

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2017-11-06 08:41:53

互聯(lián)網(wǎng)分層架構(gòu)前后端

2021-01-09 23:08:45

架構(gòu)前端后端

2017-11-15 07:01:33

互聯(lián)網(wǎng)分層架構(gòu)前后端

2017-10-15 14:36:10

互聯(lián)網(wǎng)分層架構(gòu)服務(wù)化

2020-08-11 09:43:28

分層架構(gòu)互聯(lián)網(wǎng)架構(gòu)

2017-10-18 14:31:34

互聯(lián)網(wǎng)分層架構(gòu)服務(wù)化

2018-11-07 06:35:50

互聯(lián)網(wǎng)服務(wù)化高可用架構(gòu)

2016-08-22 13:31:05

前端架構(gòu)前后端分離

2019-06-12 19:00:14

前后端分離AppJava

2017-02-15 10:18:32

架構(gòu)前后端分離

2020-08-13 09:22:11

MapReduce分層架構(gòu)架構(gòu)

2015-06-24 15:35:54

2018-07-20 15:25:02

2018-01-14 23:19:25

靜態(tài)動(dòng)態(tài)互聯(lián)網(wǎng)

2020-01-15 07:43:45

架構(gòu)redis開發(fā)

2023-02-08 16:29:58

前后端開發(fā)

2019-09-02 16:12:16

工業(yè)互聯(lián)網(wǎng)智能制造體系架構(gòu)

2015-05-28 16:11:07

互聯(lián)網(wǎng)+

2014-01-15 14:35:35

云計(jì)算

2012-09-18 13:58:58

互聯(lián)網(wǎng)創(chuàng)業(yè)架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩欧美在线一区 | 91免费观看 | 国产在线1区 | 九九精品影院 | 久久一二区 | 久久亚洲精品久久国产一区二区 | 成人毛片网 | 精品一二三 | 欧美日韩一区二区在线观看 | 中文字幕精品一区 | 色爱区综合 | 国产十日韩十欧美 | 伊人网伊人网 | 黑人巨大精品欧美一区二区一视频 | 性一交一乱一透一a级 | 欧美视频一区二区三区 | 久久久久久免费免费 | 国产精品久久久久久中文字 | 日韩成人免费视频 | 久久久.com| 一区二区免费在线 | 不卡一区二区三区四区 | 久久91精品国产一区二区三区 | 亚洲自拍一区在线观看 | 国产精品久久久久久婷婷天堂 | www.日本在线播放 | 久久99精品久久久久久国产越南 | 午夜一区二区三区 | aa级毛片毛片免费观看久 | 成人乱人乱一区二区三区软件 | 青青艹在线视频 | 久久看片| av三级| 亚洲天堂影院 | 麻豆一区二区三区精品视频 | 国产精品久久久久久久免费大片 | 亚洲成人一区二区三区 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 亚洲精品美女视频 | 国产精品美女久久久av超清 | 国产三区在线观看视频 |