Serverless 是一种云计算理念,即无服务器计算(Serverless Computing):html
Serverless suggests that the cloud user simply writes the code and leaves all the server provisioning and administration tasks to the cloud provider.
将服务器相关的配置管理工做通通交给云供应商去作,用户没必要花很大精力去管理 Server(或云资源),因此称之为 Serverless前端
而 FaaS(Function as a Service)则是 Serverless 的关键:git
Serverless 的核心是 FaaS(Function as a Service),但云平台一般还提供 Serverless 框架来知足 BaaS (Backend as a Service)等特定应用程序要求。所以,能够简单理解为:Serverless computing = FaaS + BaaSgithub
由云函数(Cloud functions)提供常规计算,辅以特定的 BaaS 产品生态(好比对象存储、数据库、消息机制等),用户专一实现其函数逻辑,极大地简化了云编程数据库
听起来彷佛有些玄幻,不知哪年可以成为现实,事实上,时至今日(2020/7/5)市面上已经有许多相对成熟的 FaaS 产品了编程
Amazon 早在 2015 年就推出了 AWS Lambda 服务:小程序
AWS Lambda - Run code without thinking about servers. Pay only for the compute time you consume.
直接运行代码,而无需考虑服务器(的管理和配置),按所使用的计算时间计费的云计算服务产品后端
也就是说,开发者只须要上传代码,Lambda 可以自动处理代码运行以及高可用性扩展所需的一切工做:安全
Just upload your code and Lambda takes care of everything required to run and scale your code with high availability.
主要应用场景包括:前端框架
还提供了小客户免费试玩套餐:
阿里云也提供了 FaaS 方案,叫作函数计算:
函数计算 - 阿里云函数计算是事件驱动的全托管计算服务。经过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。借助于函数计算,您能够快速构建任何类型的应用和服务,无需管理和运维。并且,您只须要为代码实际运行所消耗的资源付费,代码未运行则不产生费用。
应用场景以下:
一样提供了面向小客户(1-10 人团队)的免费套餐:
但免费额度不太透明,而且不排除往后收取费用的可能
P.S.另外,阿里云提供的OSS 彷佛没有免费额度,试玩需注意
腾讯云提供的 FaaS 产品是SCF(Serverless Cloud Function):
云函数 SCF - 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的状况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,便可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。
主推的 4 大应用场景:
有了 FaaS,意味着可以:
直接运行后端代码,而无需考虑服务器等计算资源以及服务的扩展性、稳定性等问题,甚至连日志、监控、报警等配套设施也都开箱即用
也就是说,上线一个简单的后端服务(好比接口聚合、数据编排),再也不须要经验丰富的专业后端工程师帮忙:
咱们只须要提供一段代码,由云供应商精心研制的 FaaS 方案帮咱们选择该编程语言对应的技术栈最佳实践,基于内置的扩展机制按实际须要动态扩展计算资源,轻松部署服务到公网,并提供可靠的监控、报警保障
喂给 FaaS 一个函数,就能上线一个高可用的服务。(简单)服务接口开发的专业性要求下降了,前端有了更大的发挥空间,包括但不限于:
Backend For Frontend (BFF)(用户体验适配层)的理念已经不新鲜了:
给每种用户体验对应一个后端(one backend per user experience)
也就是说:
BFF 是面向特定用户体验的,由实现这部分 UI 的前端团队负责实现及维护(即 UI 与对应的 BFF 由同一个团队负责)
在 2018 年(甚至更早)就有一些团队基于 Node.js 展开了 BFF 的探索和实践,由前端模块的开发者负责完成对应的 BFF 层上的一些接口开发工做
有了 BFF 层,后端工程师可以专一于业务领域,但对前端工程师提出了更高的要求:须要前端型全栈工程师,而且随着 BFF 层的发展,要求愈来愈高(扩展性、稳定性等)
FaaS 的出现很好地解决了这个问题,BFF 概念升级为 SFF(Serverless For Frontend),将专业性要求较高的后端服务框架部分封装到了 FaaS 解决方案中,将 BFF 中业务逻辑以外的可用性保障工做从前端工程师转交给了云供应商的后端领域专家,彼此更加专业高效
SSR(Server-Side Rendering)(服务端渲染)一样不是什么新奇的概念:
在服务端生成完整的 HTML 页面
省去了客户端二次请求数据的网络开销,以及渲染视图模板的性能负担,有助于加速首屏加载。但 SSR 也面临着与 BFF 相似的问题,起一个 Demo 级的 SSR 渲染服务不难,而要上线一个高可用的 SSR 渲染引擎绝非易事
FaaS 让服务的高可用要求变得触手可及,无状态的模板渲染工做尤为适合用云函数来完成
P.S.社区已经出现了一些 Serverless Side Rendering 方案,如ykfe/ssr
即先后端一体化开发,在单一项目中,既能完成前端展示需求,也能搞定数据服务
与以前 PHP、Java Web 整站开发有什么区别?兜兜转转又回到了起点么?
显然不是,主要区别在于:
一体化体如今:
P.S.目前也出现了 FaaS+React/Vue 的一体化开发框架,如midwayjs/midway
面向将来,FaaS 还可能会带来这些变化:
你,准备好了吗?
关注「前端向后」微信公众号,你将收获一系列「用心原创」的高质量技术文章,主题包括但不限于前端、Node.js以及服务端技术
本文首发于 ayqy.net ,原文连接:http://www.ayqy.net/blog/faas...