写点什么

简述 Serverless 原理及运用

作者:南城FE
  • 2022 年 7 月 14 日
  • 本文字数:1876 字

    阅读完需:约 6 分钟

概述

Serverless(Serverless Cloud Function)不是一个前端概念,也不是为了解决前端问题而出现的,它是云计算发展的必经过程。它是云原生技术的高级阶段,可以让开发者更专注于业务开发,数据处理和算法策略等,减少对基础架构,硬件状态等关注。Serverless 的出现和完善,是让软件开发更加友好,不仅前端开发需要关注,它属于每个应用软件开发者。

发展历程



2012 Iron.io 提出概念

2014 AWS 发布 Lamdba 开启商业化时代

2017 各大厂商推出 serverless 服务框架

2018 loT, 边缘计算, 混合云, 5G... serverless 无限可能


中文直译,简称「无服务器」。但并不是真的没有服务器,而是开发者不需要关注服务器,行业内有一下解读:

  • 一种软件系统架构方法,通常称为 Serverless 架构,完全依赖于第三方云厂商或云平台完成整个系统的组织和构建。重点关注系统架构,业务开发。

  • 代表一种产品的形态,称为 Serverless 产品,无需理解和管理服务器,按需使用,按需付费,常见的有云存储,云函数等。


云函数即函数即服务(Function as a Service),和后端即服务(Backend as a Service)组合在一起,即可构建自己的 Serverless 架构。


整体流程



函数第一次调用的时候,会有一个冷启动的过程,这个过程需要动态调度实例,下载代码,解压代码,启动实例,得到一个真正可执行函数的代码环境。然后才开始执行初始化函数,执行函数的业务逻辑。函数逻辑执行完毕后,并不会立即释放实例,如果在这段时间有新的调用,则复用实例,这个新的请求不会有冷启动的过程,直到一定时间段内没有新的请求分配到这个实例上,则会回收实例,释放环境。为了减少冷启动带来的影响,要尽量避免冷启动带来的延时,保持请求的稳定。



前后对比

传统应用架构下,需要购买服务器,安装操作系统,搭建环境,构建部署应用,配置负载均衡,搭建日志及监控系统。Serverless 构架下,开发者只需专注业务代码开发及部署,无需关系服务器及运维,可以将精力投入到更有意义的业务开发中。



优势

降低运维需求

解耦了应用和服务器,业务上线无需关注云服务资源,无需购买服务器及配置等。后期运维工作量也大大降低,全部交给了第三方云服务商。


降低运营成本

正常云服务器都是按月租或年租,不管是否有使用,服务都是一直在运行。Serverless 是按需执行的,只有在应有有请求及有事件触发时才会被运行,空闲状态不占用计算资源。Serverless 产品只需要为处理请求的计算资源付费,空闲状态无需付费。


降低创业公司启动成本

当一家新公司创立的时候,研发部门需要大量的基础服务,如持续集成,测试环境,版本管理,数据库服务,面向用户还需要邮件,短信,登录注册等服务。使用 Serverless 就可以降低这些成本。


快速迭代上线,专注业务

Serverless 架构应用功能被解构成若干个细颗粒度的无状态函数。开发者可以更加聚焦在单功能的开发上线,解构后的云函数可独立部署上线,可更加快速的实现业务迭代。


系统安全性

保持服务持续运行且可能会遇到黑客不同类型的攻击并不容易,使用 Serverless 后不必再担心这些问题,都交给云服务商处理。


劣势

不适用高并发应用

为每个请求启动一个进程开销太高,瞬间流量过大容易超时,如秒杀类的活动短时间对系统的开销很大。


过于依赖于第三方

如果将所有的服务都放在第三方平台,可能会有安全性的问题,因此可以将不是很重要的服务放 Serverless。还有当业务发展过大后,需要进行云服务商迁移的成本也会很大。


不适合长时间运行

Serverless 本质是按需使用,为的就是解决空闲时期的服务费用,应用需长时间使用相对应的成本就不划算了。就像长时间租车用何不买一台车呢。


状态管理

要想实现自由的缩放,无状态是必须的,而对于有状态的服务,使用 serverless 这就丧失了灵活性,有状态服务需要与存储交互就不可避免的增加了延迟和复杂性。


冷启动

因 Serverless 本质是按需使用,当没有请求处理的时候实例会被释放出来,下次请求再进入的时候,会重新分配资源,下载代码,解压代码,启动实例,这个过程称为冷启动,会有一定的延时,目前不同的云服务商有不同的策略,可以开启预留实例及预置并发等。


本地测试和调试,排查问题难

因是在第三方云平台使用,且不同云服务商的工具及标准有一定的差距,遇到问题排查会增加一定的成本。

对于无服务应用的集成或者端到端测试尤其困难,很难在本地模拟应用程序的各种连接,并与性能和缩放的特性结合起来测试,并且 serverless 应用本身也是分布式的,简单的将无数的 FaaS 和 BaaS 组件粘合起来也是有挑战性的。


适用场景

个人站点

定时任务

webhook

物联网 Lot

短信,邮件 push

微信公众号机器人

对象存储

消息处理





参考

从零入门 Serverless | 一文搞懂函数计算及其工作原理

腾讯云云函数

用户头像

南城FE

关注

还未添加个人签名 2019.02.12 加入

专注前端开发,分享前端知识

评论

发布
暂无评论
简述Serverless原理及运用_Serverless_南城FE_InfoQ写作社区