本文作者:CODING - 廖红坤
前言
随着微前端、微服务等技术理念和架构的蓬勃发展,我们已经没必要去讨论为什么要前后端分离这种话题,前后端分离已成为互联网项目开发的标准模式。前后端在各自的领域发展越来越纵深。
DevOps 视角的前后端分离
今天我们换个视角,从 DevOps 的角度来聊聊前后端分离。
项目协同
DevOps 体系中包含了敏捷开发方法论,而前后端分离前的开发模式无法做到敏捷。开发过程中前后端强依赖,需多次反复集成才能发布可用版本,违背了敏捷开发“适应性”的特点(适应性即欢迎变化)。此外,前后端串行工作的方式拉长了版本发布周期,违背了敏捷开发“快速发布小版本”的理念。
- 前后端分离前的协作模式:
-
产品经理根据需求出原型
-
UI 出设计图
-
前端做 html 页面
-
后端将 html 页面套成 jsp 页面(前后端强依赖,后端必须要等前端的 html 做好才能套 jsp。如果过程中 html 发生变更,后端也要被迫调整,开发效率低)
-
集成出现问题
-
前端返工
-
后端返工
-
二次集成
-
集成成功
-
交付
- 分离后的协作模式:
-
产品经理根据需求出原型
-
UI 出设计图
-
前后端约定接口、数据和参数
-
前后端并行开发(无强依赖,可前后端并行开发,如果需求变更,只要接口和参数不变,就不用两边都修改代码,开发效率高)
-
后端 API 自动化测试
-
前后端集成
-
前端页面调整
-
集成成功
-
交付
代码管理
前后端分离后,前后端代码分开管理,后端不需要合并前端代码,减少代码合并冲突问题。此外,前后端分离后,后端可以根据业务类型自由选用编程语言开发不同的组件,实现松耦合,与微服务架构不谋而合。
测试管理
前后端分离后,对应的测试也分离了。由于后端只输出 api 接口,于是可以很方便的进行自动化测试,提早暴露问题,并且测试成本很低。而前端可以不依赖后端,自己本地 mock 数据,待前后端接口对接后,测试可以开始功能测试。