一.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 请求

还提供了小客户免费试玩套餐:

阿里云 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 的流行,将前端开发从本地环境拉上云端

你,准备好了吗?

FaaS 给前端带来了什么?的更多相关文章

  1. 精读《Serverless 给前端带来了什么》

    1. 引言 Serverless 是一种 "无服务器架构",让用户无需关心程序运行环境.资源及数量,只要将精力 Focus 到业务逻辑上的技术. 现在公司已经实现 DevOps 化 ...

  2. 收益 or 挑战?Serverless 究竟给前端带来了什么

    作者 | 黄子毅(紫益) 阿里前端技术专家 导读:前端开发者是最早享受到 "Serverless" 好处的群体,因为浏览器就是一个开箱即用.甚至无需为计算付费的环境!Serverl ...

  3. Node.js 给前端带来了什么

    在软件开发领域,前端工程师曾经是一个比较纠结的职业.在Web技术真正发展起来之前的相当长一段时间里,由于技术门槛很低,前端工程师行业一直是鱼龙混杂的状态.其中很多号称是Web开发者的人实际上并没有什么 ...

  4. 《ServerLess 给前端带来了什么》笔记

    1. Serverless 是什么 Serverless “无服务器架构”,即大量依赖第三方服务(也叫做后端即服务,即“BaaS”)或暂存容器中运行的自定义代码(函数即服务,即“FaaS”)的应用程序 ...

  5. 大厂前端带来css3动画transition的使用和介绍全新认识动画

    CSS3中可以使用transition来做最简单动画效果,transition表示到一个元素的属性值发生变化时,我们可以看到页面元素从旧的属性慢慢变化为新的属性值的过程,这种效果不是立即变化的,而是体 ...

  6. ServerLess之云函数实践-天气API

    关注我的个人博客,发掘更多的内容 ServerLess之云函数实践-天气API 前言 云计算是大势所趋 Serverless 架构即"⽆服务器"架构,它是一种全新的架构方式,是云计 ...

  7. 通过微信小程序看前端

    前言 2016年9月22日凌晨,微信官方通过“微信公开课”公众号发布了关于微信小程序(微信应用号)的内测通知.整个朋友圈瞬间便像炸开了锅似的,各种揣测.介绍性文章在一夜里诞生.而真正收到内测邀请的公众 ...

  8. web前端工程师在移动互联网时代里的地位问题

    支付宝十周年推出了一个新产品:支付宝的十年账单,我也赶个时髦查看了一下我的支付宝十年账单,哎,感慨自己真是太屌丝了,不过这只是说明我使用淘宝少了,当我大规模网上购物时候,我很讨厌慢速的快递,所以我大部 ...

  9. HTML5给我们带来了什么?

    HTML5初探 传说中的HTML标准已经超过10年没有更新了,如今HTML5席卷全球,那么到底什么是HTML5呢?都在讲HTML5是web的新一代标准,它有着很多之前浏览器没有的新特性,可以说HTML ...

随机推荐

  1. Spring Boot 整合 Apollo

    简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景 ...

  2. jni 字符串的梳理

    1.实现的功能是java层传递一个字符串到c层2.c层首先将jstring类型转换成char*类型3.c层对字符串进行处理之后,将处理之后的char*类型转换成jstring类型返回给上层的 pack ...

  3. mysql 出现You can't specify target table for update in FROM clause错误的解决方法

    mysql出现You can’t specify target table for update in FROM clause 这个错误的意思是不能在同一个sql语句中,先select同一个表的某些值 ...

  4. kubernetes资源均衡器Descheduler

    背景 Kubernetes中的调度是将待处理的pod绑定到节点的过程,由Kubernetes的一个名为kube-scheduler的组件执行.调度程序的决定,无论是否可以或不能调度容器,都由其可配置策 ...

  5. Spring—容器外的Bean使用依赖注入

    认识AutowireCapableBeanFactory AutowireCapableBeanFactory是在BeanFactory的基础上实现对已存在实例的管理.可以使用这个接口集成其他框架,捆 ...

  6. 前端开发神器Charles从入门到卸载

    前言 本文将带大家学习使用前端开发神器-charles,从基本的下载安装到常见配置使用,为大家一一讲解. 一.花式夸奖Charles 截取 Http 和 Https 网络封包. 支持重发网络请求,方便 ...

  7. caffe的python接口学习(1)生成配置文件

    ---恢复内容开始--- 看了denny的博客,写下自己觉得简短有用的部分 想用caffe训练数据首先要学会编写配置文件: (即便是用别人训练好的模型也要进行微调的,所以此关不可跨越) 代码就不粘贴了 ...

  8. 谈谈如何绕过 TinyPNG 对上传图片数量的限制

    前端er, 又称为切图仔,平时经常需要用 PSD 导出 PNG 或 JPG,但是导出来的的图片一般比较大,往往需要用一些其他工具压缩后再发布到生产环境. 以前常用的做法是,使用 image-webpa ...

  9. 并发工具CyclicBarrier源码分析及应用

      本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天呢!灯塔君跟大家讲: 并发工具CyclicBarrier源码分析及应用 一.CyclicBarrier简介 1.简介 CyclicBarri ...

  10. css怎么样设置透明度?

    css怎么样设置透明度?下面本篇文章就来给大家介绍一下使用css设置透明度的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 在CSS中想要设置透明度,可以使用opacity属性 ...