0%

Architecture-前后端分离

1 为什么要进行前后端分离

一个典型的互联网分层架构为:web->webServer->service->db。随着业务的发展,原先可能只有PC端,后来需要增加Mobile、App、小程序等版本。他们的webServer层大部分业务是相同的,只有少数的逻辑/展现/交互不一样,在不进行前后端分离的情况,基本靠拷贝代码实现。

这样就可能会存在一些问题:

  • 一旦一个服务的RPC接口有稍许变化,所有的webServer系统都需要升级修改;
  • webServer之间存在大量代码拷贝;
  • 一旦拷贝代码,出现一个bug,多个系统都需要升级修改。

2 怎样进行前后端分离

通过对前后端分离分层抽象:

  • 站点展示层:负责数据的展现与交互,由FE维护;
  • 站点数据层:负责处理业务逻辑与json数据接口的提供,由后端工程师维护。

2.1 前后端分离的好处

  • 复杂的业务逻辑与数据生成,只有在站点数据层处写了一次,没有代码拷贝;
  • 底层service接口发生变化,只有站点数据层一处需要升级修改;
  • 底层service如果有bug,只有站点数据层一处需要升级修改;
  • 站点展现层可以根据产品的不同形态,传入不同的参数,调用不同的站点数据层接口;
  • 关于产品展示、设备兼容性要求高,由更专业的FE对接;
  • 产品展示的改动,不在需要后端重新编译、打包、上线等操作;
  • 在约定好json接口后,前后端可以同时进行开发,FE可以自行mock数据进行自测,不用等待一起联调。

2.2 前后端分离的缺点

  • 前后端分离会给系统架构带来更多的复杂性。
  • 前后端分离,将引入“联调”一说(即FE与后端开发对接联调),增加沟通成本,可能导致产品迭代的速度降低。

3 前后端分离的适用场景

产品追求炫酷的前端效果,并且对前端兼容性要求较高,前端产品改版频率较高的情况,进行前后端分离是有必要的。


参考资料

互联网分层架构,为啥要前后端分离?