简述Serverless原理及运用

万事须己运,他得非我贤。这篇文章主要讲述简述Serverless原理及运用相关的知识,希望能为你提供帮助。
概述
Serverless(Serverless Cloud Function)不是一个前端概念,也不是为了解决前端问题而出现的,它是云计算发展的必经过程。它是云原生技术的高级阶段,可以让开发者更专注于业务开发,数据处理和算法策略等,减少对基础架构,硬件状态等关注。Serverless的出现和完善,是让软件开发更加友好,不仅前端开发需要关注,它属于每个应用软件开发者。
发展历程

简述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原理及运用

文章图片

简述Serverless原理及运用

文章图片

简述Serverless原理及运用

文章图片

参考
【简述Serverless原理及运用】从零入门 Serverless | 一文搞懂函数计算及其工作原理
腾讯云云函数

    推荐阅读