共计 3623 个字符,预计需要花费 10 分钟才能阅读完成。
一.Serverless 与 FaaS
Serverless 是一种云计算理念,即无服务器计算(Serverless Computing):
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 的要害:
Serverless 的外围是 FaaS(Function as a Service),但云平台通常还提供 Serverless 框架来满足 BaaS (Backend as a Service)等特定应用程序要求。因而,能够简略了解为:
Serverless computing = FaaS + BaaS
由云函数(Cloud functions)提供惯例计算,辅以特定的 BaaS 产品生态(比方对象存储、数据库、音讯机制等),用户专一实现其函数逻辑,极大地简化了云编程
听起来仿佛有些玄幻,不知哪年可能成为事实,事实上,时至今日(2020/7/5)市面上曾经有许多绝对成熟的 FaaS 产品了
二. 曾经面市的 FaaS 产品
AWS Lambda
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.
次要利用场景包含:
- 数据处理
- 实时文件解决:例如创立缩略图、转换视频代码、解决日志等
- 实时数据流解决:比方跟踪用户拜访指标
- 机器学习:在将数据输出到机器学习模型之前对其进行预处理
- 后端:解决 Web、挪动、物联网 (IoT) 和第 3 方 API 申请
还提供了小客户 收费试玩 套餐:
- AWS 中国(宁夏)区域收费套餐:25GB 的 NoSQL 数据库 + 每月 100 万申请量的云函数 永恒收费
- AWS 海内区域账户收费套餐:雷同配置,永恒收费
阿里云 FC
阿里云也提供了 FaaS 计划,叫做函数计算:
函数计算 – 阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需治理服务器等基础设施,只需编写代码并上传。函数计算会为您筹备好计算资源,以弹性、牢靠的形式运行您的代码,并提供日志查问、性能监控、报警等性能。借助于函数计算,您能够疾速构建任何类型的利用和服务,无需治理和运维。而且,您只须要为代码理论运行所耗费的资源付费,代码未运行则不产生费用。
利用场景如下:
- 低成本跨境文件传输:大规模的文件同步
- 文件解决:例如对上传至 OSS 的文件进行压缩 / 解压、转码、加水印等
- 前端 CI/CD 零碎:Webhook 告诉触发云函数,将前端代码库上传至 OSS,走 CDN 部署
- 日志 ETL 解决:加工、投递数据
- 智能家电:智能家居、App 获取天气、环境指数
- 中小网站:例如基于函数计算 + wordpress 构建 serverless 网站
同样提供了面向小客户(1-10 人团队)的收费套餐:
- 收费云开发
但 收费额度不太通明,并且不排除日后收取费用的可能
P.S. 另外,阿里云提供的 OSS 仿佛没有收费额度,试玩需注意
腾讯云 SCF
腾讯云提供的 FaaS 产品是 SCF(Serverless Cloud Function):
云函数 SCF – 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮忙您在无需购买和治理服务器的状况下运行代码。您只需应用平台反对的语言编写外围代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、平安地运行代码。SCF 是实时文件解决和数据处理等场景下现实的计算平台。
主推的 4 大利用场景:
- 实时文件解决:例如音频 / 视频转码
- 数据 ETL 解决:针对大数据集的并发剖析解决(ETL 即典型的 Extract-Transform-Load 数据处理过程)
- 挪动及 Web 利用后端:以云函数的模式实现后端服务
- AI 推理预测:AI 模型实现训练后,对外提供推理服务
说是每月有肯定的收费额度,但外网出流量不收费,试玩需谨慎
三.FaaS 给前端带来了什么?
有了 FaaS,意味着可能:
间接运行后端代码,而无需思考服务器等计算资源以及服务的扩展性、稳定性等问题,甚至连日志、监控、报警等配套设施也都开箱即用
也就是说,上线一个简略的后端服务(比方接口聚合、数据编排),不再须要经验丰富的业余后端工程师帮忙:
- 抉择技术栈
- 思考高并发下的扩大机制
- 估算峰值流量,预配资源(申请机器)
- 走 CI/CD 流程
- 接入监控、运维体系
咱们只须要提供一段代码,由云供应商精心研制的 FaaS 计划帮咱们抉择该编程语言对应的技术栈最佳实际,基于内置的扩大机制按理论须要动静扩大计算资源,轻松部署服务到公网,并提供牢靠的监控、报警保障
喂给 FaaS 一个函数,就能上线一个高可用的服务。(简略)服务接口开发的专业性要求升高了,前端有了更大的施展空间,包含但不限于:
- BFF(Backend For Frontend)
- SSR(Server-Side Rendering)
- 端云一体化开发
BFF
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
SSR(Server-Side Rendering)(服务端渲染)同样不是什么离奇的概念:
在服务端生成残缺的 HTML 页面
省去了客户端二次申请数据的网络开销,以及渲染视图模板的性能累赘,有助于减速首屏加载。但 SSR 也面临着与 BFF 相似的问题,起一个 Demo 级的 SSR 渲染服务不难,而要上线一个高可用的 SSR 渲染引擎绝非易事
FaaS 让服务的高可用要求变得触手可及,无状态的模板渲染工作尤其适宜用云函数来实现
P.S. 社区曾经呈现了一些 Serverless Side Rendering 计划,如 ykfe/ssr
端云一体化开发
即前后端一体化开发,在繁多我的项目中,既能实现前端展示需要,也能搞定数据服务
与之前 PHP、Java Web 整站开发有什么区别?兜兜转转又回到了终点么?
显然不是,次要区别在于:
- 前后端分层解耦:前后端一体,但并不过分耦合
- 以前端我的项目为主体:不像 PHP、Java Web 当前端局部为主体
- 不仅限于 Web,在挪动端同样实用
一体化 体现在:
- 一套基于云 IDE 的开发 / 调试环境,无缝的开发体验
- 专一前端局部,(简直)不必关怀后端服务的部署、运维
P.S. 目前也呈现了 FaaS+React/Vue 的一体化开发框架,如 midwayjs/midway
四. 将来的可能性
面向未来,FaaS 还可能会带来这些变动:
- 面向小客户的收费 / 便宜计划越来越多:例如小程序云、IoT 开发套餐等
- 基于 FaaS 的 Web 服务框架与传统 Web 服务框架趋于对立:基于传统 Web 服务框架的利用可能低成本迁徙过去
- SSR、CSR/NSR 等不同的前端渲染形式成为 Web 前端框架的配置选项:可能在不同渲染模式之间灵便切换、甚至混用
- 前端进入全云研发模式:FaaS 的遍及和 BaaS 生态的成熟,减速 SSR、BFF 的风行,将前端开发从本地环境拉上云端
你,筹备好了吗?
有所得、有所惑,真好
关注「前端向后」微信公众号,你将播种一系列「用 心原创」的高质量技术文章,主题包含但不限于前端、Node.js 以及服务端技术
本文首发于 ayqy.net,原文链接:http://www.ayqy.net/blog/faas…