AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

  • 2019-12-05
  • 本文字数:3412 字

    阅读完需:约 11 分钟

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

概述

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

开发模式

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


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

早期,一体


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


  • 高并发问题

  • 高可用问题


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

现在,分裂

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



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


解决的问题


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

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


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


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

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

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

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

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

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

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


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

未来,融合回到到一体

前端 + 后端 + Serverless + 平台服务 => 业务应用 + Serverless + 平台服务



说明:共享逻辑是前后端的共享逻辑,在过去,由于前后端分裂,是很难做到前后端层面的代码抽象的,前后端融合后,让这件事变得简单自然。


带来困惑


  • 前后端分工合作,不是很好吗? 在过去,将一个复杂的问题分解成多个简单的子问题,高并发和高可用没法做到不侵入业务应用,这种确实是一种很好的解法,也是没办法中的办法。前后端分工合作带来的成本问题,越发凸显。现在 Serverless 透明的解决了高并发和高可用问题,那么我们为什么还需要从技术维度来划分,我们不是更加推荐按业务维度来划分吗?

  • 后端依然很难,驾驭前后端的门槛依然很高? 后端代码逻辑虽然没有了高并发和高可用的裹挟,还是会很难,比如 AI。我相信类似这种很难的业务,现在可能有,未来一定会有相关的开发工具包或者平台服务为我们解决,让这些很难的技术平民化。难的技术交给专业的人解决。


找回初心


  • 回归业务,前后端一体化。随着 Serverless 技术的出现,解决了高可用、高并发和运维问题,作为工程师的我们是不是应该回头看看,找回初心:专注于业务代码。让原本在一起的后端业务代码与前端代码再次融合。因此,前后端一体化难道不是我们失去已久的应用开发终极解决方案吗?

现状

Serverless 已经做到了以下两点


  • 工程师只需要关心业务逻辑上的技术

  • 拥有接近于传统应用开发体验(解决历史遗留问题,可能还有些距离)


传统应用框架,食之无味,弃之可惜


  • 目前,很多用户已经感知到了 Serverless 带来的高可用、高并发和免运维的好处,用户能够很自然的想到如果能将现有的开发框架移植到 Serverless 上,那就太好不过了。Serverless 平台很自然会提供现有框架的移植方案。解决的问题是将传统的解决方案移植到 Serverless 上,让用户在 Serverless 上拥有传统的开发体验


应用框架找回初心


  • 前后端业务逻辑代码的融合,即前后端一体化


前后端一体化解决了什么问题


  • 解决了第二阶段开发模式中出现的问题,具体请参考:“解决一个问题,带来一堆问题”。


实现前后端一体化,欠缺如下


  • 基于 Serverless 的前后端一体化框架

  • 工具


其中,基于 Serverless 的前后端一体化框架解决前后端一体化问题;工具屏蔽掉 Serverless 平台细节,提供一致的部署运维体验。

未来

未来,开源社区会涌现大量的基于 Serverless 的前后端一体化的框架和工具,webassembly 让前后端一体化打破了开发语言的限制,可以用任意开发语言开发前后端,如 java、go 等等。由于 javascript 是为前端而生,typescript 是目前做活的前端开发语言,前后端统一用 typescript,其他语言可以通过 webassembly 技术让 typescript 语言来调用可能是最好的选择。


想要成为一个流行的基于 Serverless 的前后端一体化框架,需要具备这么几个特质:


  • 开源不绑定

  • 社区化运营

  • 形成标准

  • 模型简单

结语

Serverless 技术让我们向新世界大门迈出了左脚,请让基于 Serverless 的前后一体化框架帮我们迈出右脚。同时,请别再叫我前端开发工程师,我是业务应用开发工程师。

Q&A

Q:前后端一体化需要将前后端代码发布到同一个地方吗?


A:不需要,分开发布,通过统一的工具负责前后端发布任务,前端可以发到 CDN,后端可以发布到 Serverless 平台,如:阿里云函数计算


Q:未来是不是没有后端工程师?


A:有的。前端工程师只是把前端和后端的业务逻辑代码给做了,后端工程师去做真正的后端,那时候的后端工程师将会更加专业,前端工程师可能会变成应用开发工程师(暂且这么称呼)。对于中小型企业,可能大部分是应用开发工程,有少量甚至没有专业的后端工程师。


Q:为什么不做一个类似 expressjs 这样的 web 应用框架?


A:expressjs 框架是在没有 Serverless 背景下设计的,没有考虑 Serverless 给我们带来的技术架构变革,如果需要类似 expressjs 的这样的框架,我们完全可以将 expressjs 框架迁移到 Serverless 上运行,没有必要再造一套。


Q:为什么是 nodejs 框架?


A:nodejs 和 前端 js 使用的同一种语言,可以将前后端一体化做到更加极致,webassembly 也可以让任何语言在前端运行,也能做到前后端语言一致,但是 js 是为前端而生的,更有亲和力。但是其他语言可以通过 webassembly 编译成中间语言,nodejs 通过 vm 来调用其他语言提供的功能。也不排除未来会有一种新的运行环境来取代 nodejs,更加适配多语言和 Serverless 这种场景。


Q:前后端一体化的极致是一种什么感觉?


A:前后端代码都在一个项目中用同一种语言来写,在本地定义一个后端接口方法,前端就像调用本地方法一样调用后端方法(不是在本地定义的后端接口也是一样,比如跨组件、外部服务),前后端可以抽象更多的公共逻辑,比如工具类等等,一个开发人员就能维护好整个项目,没有了多项目多语言的切换痛苦。


作者介绍


杨苏博,阿里云高级开发工程师, 多年沉浸基础软件研发,目前在函数计算团队从事工具链相关的工作,致力于提升 Serverless 研发效能的全栈工程师。


本文转载自云栖社区。


原文链接


https://yq.aliyun.com/articles/706958


2019-12-05 08:002924

评论 1 条评论

发布
用户头像
前后端一体化框架 Malagu:https://github.com/cellbang/malagu
2020-11-09 16:13
回复
没有更多了
发现更多内容

大数据培训:SQL如何去重的方法

@零度

大数据开发

毕业总结

施正威

「前端CI/CD系列」第三篇:如何用建木CI构建前端项目并部署到CDN

Jianmu

开源 前端 CDN 七牛云 建木CI

在华外企高管谈政府工作报告:共享发展成就 未来机遇可期

科技新消息

技术平台&应用开发专题月 | 一文搞懂全链路监控系统(下)

用友BIP

用友 用友iuap

3个案例,详解如何选择合适的研发模式 | 研发效能提升36计

阿里云云效

阿里云 云原生 研发团队 研发 研发提效

技术分享会回顾|Rust在量化领域如何应用?

非凸科技

两天两夜,1M图片优化到100kb!

沉默王二

Java

【愚公系列】2022年03月 Docker容器 Windows11安装Docker Desktop

愚公搬代码

3月月更

项目启动丨木林森携手用友iuap共谱数字化转型新篇章

用友BIP

用友 用友iuap

可观测性能力升级,Apache APISIX 集成 OpenTelemetry

API7.ai 技术团队

开源 api 网关 OpenTelemetry Apache APISIX

毕业设计

施正威

Flink 流处理在中信建投证券的实践与应用

Apache Flink

大数据 flink 开源 编程 实时计算

java培训:内存泄漏问题排查与分析

@零度

JAVA开发

电商秒杀系统

tony

「架构实战营」

WebGPU小白入门(一): 零基础创建第一个WebGPU项目

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

对容器在野安全问题的观测和分析

腾讯安全云鼎实验室

网络安全 容器安全 在野攻击

「国产替代」,真的是中国SaaS的发展路径吗?

ToB行业头条

2022年中国婴童零辅食行业市场洞察

易观分析

零辅食

Apache APISIX 携手 CoreDNS 打开服务发现新大门

API7.ai 技术团队

服务发现 API网关 Apache APISIX

开源云 IDE 产品新宠儿,如何使用 Gitpod 开发 APISIX?

API7.ai 技术团队

ide 开发工具 Apache APISIX

【51单片机】keil5如何创建工程

謓泽

单片机 3月月更 keil5

眼影、口红、香水…特别的日子献给所有的她 | InfoQ 会员周女神节特别限定活动

InfoQ写作社区官方

热门活动 InfoQ会员周 38妇女节

API 网关 Apache APISIX 集成 Eureka 作为服务发现

API7.ai 技术团队

Eureka 服务注册与发现 API Gateway APISIX 网关

摄影师教你开发小程序,「龟斯的风光摄影助手」的设计与开发思路详解

知晓云

微信 前端开发 小程序开发

有Python基础后,3天就拿Flask开发项目系列博客之一

梦想橡皮擦

3月月更

一日为期,极行千里 ——「企业级零代码黑客马拉松」正式启动报名

明道云

低代码 零代码 企业 黑客马拉松

4364Mb/s,助力SM4性能提升40倍的商密 SIG 还有哪些新进展?

OpenAnolis小助手

Linux 开源 互联网社区 sig

以开发之名|致敬女性开发者 用“代码”创造无限可能

最新动态

金融数据查询增速三倍,服务器成本减半,海尔云链的 OLAP 引擎选型之路

StarRocks

数据库 数据分析 OLAP StarRocks

适用于企业的销售自动化CRM系统

低代码小观

销售管理 CRM CRM系统 客户关系管理系统 企业管理软件

浅析基于 Serverless 的前后端一体化框架_架构_杨苏博_InfoQ精选文章