FaaS 给前端带来了什么?
一.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 获取天气、环境指数
同样提供了面向小客户(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 的流行,将前端开发从本地环境拉上云端
你,准备好了吗?
FaaS 给前端带来了什么?的更多相关文章
- 精读《Serverless 给前端带来了什么》
1. 引言 Serverless 是一种 "无服务器架构",让用户无需关心程序运行环境.资源及数量,只要将精力 Focus 到业务逻辑上的技术. 现在公司已经实现 DevOps 化 ...
- 收益 or 挑战?Serverless 究竟给前端带来了什么
作者 | 黄子毅(紫益) 阿里前端技术专家 导读:前端开发者是最早享受到 "Serverless" 好处的群体,因为浏览器就是一个开箱即用.甚至无需为计算付费的环境!Serverl ...
- Node.js 给前端带来了什么
在软件开发领域,前端工程师曾经是一个比较纠结的职业.在Web技术真正发展起来之前的相当长一段时间里,由于技术门槛很低,前端工程师行业一直是鱼龙混杂的状态.其中很多号称是Web开发者的人实际上并没有什么 ...
- 《ServerLess 给前端带来了什么》笔记
1. Serverless 是什么 Serverless “无服务器架构”,即大量依赖第三方服务(也叫做后端即服务,即“BaaS”)或暂存容器中运行的自定义代码(函数即服务,即“FaaS”)的应用程序 ...
- 大厂前端带来css3动画transition的使用和介绍全新认识动画
CSS3中可以使用transition来做最简单动画效果,transition表示到一个元素的属性值发生变化时,我们可以看到页面元素从旧的属性慢慢变化为新的属性值的过程,这种效果不是立即变化的,而是体 ...
- ServerLess之云函数实践-天气API
关注我的个人博客,发掘更多的内容 ServerLess之云函数实践-天气API 前言 云计算是大势所趋 Serverless 架构即"⽆服务器"架构,它是一种全新的架构方式,是云计 ...
- 通过微信小程序看前端
前言 2016年9月22日凌晨,微信官方通过“微信公开课”公众号发布了关于微信小程序(微信应用号)的内测通知.整个朋友圈瞬间便像炸开了锅似的,各种揣测.介绍性文章在一夜里诞生.而真正收到内测邀请的公众 ...
- web前端工程师在移动互联网时代里的地位问题
支付宝十周年推出了一个新产品:支付宝的十年账单,我也赶个时髦查看了一下我的支付宝十年账单,哎,感慨自己真是太屌丝了,不过这只是说明我使用淘宝少了,当我大规模网上购物时候,我很讨厌慢速的快递,所以我大部 ...
- HTML5给我们带来了什么?
HTML5初探 传说中的HTML标准已经超过10年没有更新了,如今HTML5席卷全球,那么到底什么是HTML5呢?都在讲HTML5是web的新一代标准,它有着很多之前浏览器没有的新特性,可以说HTML ...
随机推荐
- 想学好Python,你必须了解Python中的35个关键词
每种编程语言都会有一些特殊的单词,称为关键词.对待关键词的基本要求是,你在命名的时候要避免与之重复.本文将介绍一下Python中的关键词.关键词不是内置函数或者内置对象类型,虽然在命名的时候同样也最好 ...
- 从外包公司运作方式看EJB工作原理
从来没用过EJB,然后进了家公司需要用,没办法,硬着头皮学吧.以下是个人学习体会,觉不好的话也不要吐槽了. 关于EJB的工作原理,你可以想象为一家公司(EJB容器),外包型的(服务接口), 公司内部有 ...
- Python3-内置类型-集合类型
Python3中的集合类型主要有两种 set 可变集合 可添加和删除元素,它是不可哈希的,因此set对象不能用作字典的键或另一个元素的集合 forzenset 不可变集合 正好与set相反,其内容创建 ...
- Nginx使用upstream实现负载均衡
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...
- 深度学习论文翻译解析(八):Rich feature hierarchies for accurate object detection and semantic segmentation
论文标题:Rich feature hierarchies for accurate object detection and semantic segmentation 标题翻译:丰富的特征层次结构 ...
- MySQL 字符串索引优化方案
字符串建立索引的优化 1. 建立前缀索引 假设建立一个支持邮箱登录的用户表,对于邮件字段来说,可以有以下几种建立索引的方式: 直接对整个字符串建立索引 alter table SUser add in ...
- tomcat配置项目虚拟路径
tomcat版本:apache-tomcat-7.0.42 参考:http://blog.csdn.net/pangdingshan/article/details/7214786 一.虚拟根目录 1 ...
- 【秒懂Java】【02_搭建开发环境】01_Java开发必备
这篇文章主要讲解:要想使用Java来开发软件,需要做哪些准备工作? 配置电脑 作为一名开发人员,对文件的类型.大小等信息是比较敏感的,所以建议你的电脑做2个配置: 显示文件扩展名 文件扩展名(File ...
- CSS3 nth-child的使用,详解css中nth的作用,以及nth-child的兼容写法
:nth-child是css3的一个比较常用的选择器.它用于匹配属于其父元素中的子元素,不论元素的类型. 它的参数可以是数字.关键词或公式.下面讲介绍它的使用方法, nth-child的使用 html ...
- Jmeter(十五) - 从入门到精通 - JMeter导入自定义的Jar包(详解教程)
1.简介 原计划这一篇是介绍前置处理器的基础知识的,结果由于许多小伙伴或者童鞋们在微信和博客园的短消息中留言问如何引入自己定义的Jar包呢???我一一回复告诉他们和引入插件的Jar包一样的道理,一通百 ...