如何浅析基于Serverless的前后端一体化框架

如何浅析基于Serverless的前后端一体化框架,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

概述

Serverless 是一种“无服务器架构”模式,它无需关心程序运行环境、资源及数量,只需要将精力聚焦到业务逻辑上的技术。基于  Serverless 开发  web 应用,架构师总是试图把传统的解决方案移植到 Serverless 上,虽然可以做到既拥有  Serverless  新技术带来的红利,又能维持住传统开发模式的开发体验。但是,Serverless  技术带来的改变可能不止这些,可能是颠覆整个传统 web  应用开发模式的革命性技术。

 

开发模式

业务应用的开发模式发展是从一体到分裂为前后端,再到前后端融合为一体过程。

注意:后面所说的后端特指后端业务逻辑。

早期,一体

如何浅析基于Serverless的前后端一体化框架

没有前后端的概念,那时候的应用都是单机版,所有的业务逻辑都写一起,开发人员不需要关心网络请求,这个时期的工程师完全专注于业务代码的开发。随着业务规模的增长,也暴露了很多问题:

  • 高并发问题

  • 高可用问题

说明:业务应用升级困难等一些问题,不是本篇文章所关心,所以就不一一列举出来。

现在,分裂

前端 + 高可用高并发运维裹挟着的后端业务逻辑:

如何浅析基于Serverless的前后端一体化框架

说明:现在 Serverless 技术已经出现有一段时间了,不但没有解决开发体验的问题,反而带来更多开发体验问题,所以,在这里我并没有突出  Serverless 技术。

解决的问题:

  • 高并发。通过分布式部署和多级负载均衡等技术解决了业务的高并发问题

  • 高可用。通过主从架构等技术解决了业务的高可用问题

解决一个问题,带来一堆问题:

  • 分裂业务应用。为了解决高可用和高并发,业务应用引入了分布式架构,通过负载均衡和主从模式来保证高可用和高并发问题,但是这种解决方案对业务应用是侵入式的,从而导致原本高内聚一体化的应用分裂成前端和后端

  • 污染业务代码。与高可用、高并发和运维相关的逻辑与后端业务逻辑交织在一起,让后端技术门槛变高,导致需要多个后端工程师才能掌握所有后端技术

  • 增加联调成本。前后端的联调工作做日益繁重,成了工程开发效率提升的瓶颈。新功能和 BUG  需要前后端工程师配合才能完成,你如果是全栈开发工程师,你肯定深有体会,很多 BUG 一看就知道是前端问题,还是后端问题

  • 不匹配的前后端技术发展速度,前端技术发展迅猛,后端技术相对稳定,前端只能被动的去适配后端,让前端最新的技术在使用体验上大打折扣。最理想的方式是前后端通盘考量,整体发展,不要出现本来后端只需要优化一行代码的事,让前端写一百行代码来实现

  • 限制了代码抽象。因为实现的是同一个业务需求,所以前后端代码有高度的相关性,如果我们能在前后端代码之上抽象代码逻辑,肯定能有很大的作为。同时,代码的开发和维护也有质的提升,前后端分裂导致我们不得不局限在前端或者后端进行代码的抽象,抽象出来的代码可能是片面而重复的

  • 增加技术复杂度。前后端分裂,前后端工程师各自为营,形成各自的技术栈,包括语言、工具和理念,导致单个工程师维护整个业务应用变得极度困难,也让前后端工程师排斥彼此的技术栈,随着时间的推移,技术栈差异越来越大,一个项目,不管多小,至少两位工程师以上,全栈开发工程师另当别论

  • 增加运维成本。需要专门的运维工程师来运维,虽然,现在通过技术手段降低了运维的成本,但是目前运维成本依然很高,难度依然很大

这也是为什么创业小公司喜欢全栈开发工程师,因为在创业早期,高可用和高并发的需求不是那么迫切,因而运维也相对简单,使用全栈开发工程师,不仅缩短了项目交付周期,而且也降低了公司的运营成本,这对创业小公司是至关重要的。

如何浅析基于Serverless的前后端一体化框架