文章目录[隐藏]
Serverless 是什么意思?无服务器计算又称为函数即服务(FaaS),是云计算的一种模式。无服务器计算基于平台即服务(PaaS),提供一种微架构,终端客户无需部署、配置或管理服务器服务,代码运行所需的服务器服务全部由云平台提供,国内外知名产品有腾讯 Serverless、AWS Lambda、Microsoft Azure Functions 等。无服务器计算就是将开发者的注意力集中在为用户提供价值上,通过 Serverless,开发者无需管理服务器等基础设施,简化了开发和运维流程。简单来说,Serverless 平台按需自动化建立、部署、启动服务的全过程,让开发者专注于核心代码和应用的开发。
什么是无服务器?
Serverless,翻译成中文就叫无服务器。
这是什么样的形态或者产品?Serverless 真的就意味着没有服务器吗?
Serverless 并不是没有服务器,而是将服务器完全委托给云厂商,根据业务流量自动弹性伸缩,即开即用,无需维护成本,用户只需要关注业务代码,按照实际请求处理业务,无需关心和管理底层 IT 资源。
其实在业界,目前对 Serverless 有如下几种解读方式:
在一些场景下可以理解为一种软件系统架构方式,通常称之为Serverless架构;
在某些情况下它也可以表示一种叫做Serverless产品的产品形态。
在谈到无服务器架构时,Serverless 指的是通过无服务器产品实现的应用架构。这种架构完全依赖云厂商或云平台提供产品来完成系统的组织和构建。在这种架构下,用户不需要关注支撑应用服务运行的宿主机,而只需关注系统架构、业务开发和业务支撑运行。
我们说的无服务器产品,是指不需要了解和管理服务器,按需使用、按次付费的产品。无服务器产品其实可以包括存储、计算等多种产品,而计算产品中典型的一种就是云函数。
云函数,即 Function as a Service,和 Backend as a Service 一起可以称为 Serverless 产品,通过组合这些产品,开发者可以构建自己业务的 Serverless 架构。
Serverless架构的特点:
(1)降低运营成本
目前主流的公有云计费模式都是采用按月计费的模式,比如你在亚马逊公有云上申请了虚拟机之后,不管有没有用户访问你的应用,不管你是否已经部署了应用,你都得支付同样的价格。而基于亚马逊 Lambda 开发的 Serverless 应用,你只需要按照实际使用的资源量付费(FaaS 执行次数 × FaaS 函数运行时间 × 计算资源模板费用),即用多少付多少,不用则不收费。
(2)自动伸缩
用户无需关注 FaaS 函数的水平扩展,Serverless 平台会根据调用量自动扩展运行代码所需的容器,轻松实现高并发调用。函数即应用,每个 FaaS 函数均可独立扩缩容,粒度小,扩展快速。
(3)事件驱动
FaaS 函数生命周期短,临时,使用后销毁。FaaS 函数在接收请求时会消耗资源,如果不使用则不消耗,使用后立即释放。
(4)无0ps
计算资源是服务化的,用户通过API来使用计算资源,核心是用户算法代码,基础设施的部署并不重要。Serverless将Ops外包给第三方平台,让Dev专注于业务逻辑的实现,而不用关心Ops相关的工作。
Serverless 的价值是什么?
为什么Serverless技术越来越受到人们的关注呢?我们可以从几个角度来看。
首先从开发者的角度来看,不需要考虑更多关于服务器相关的内容,不需要考虑服务器的规格、存储类型、网络带宽、自动扩缩容的问题;同时不需要对服务器进行运维,不需要不断地打系统补丁、应用程序补丁,不需要进行数据备份、软件配置等。
其次,Serverless产品是全自动的,可以弹性伸缩,在业务高峰时,产品的计算能力和容量会自动扩展,以处理更多的用户请求,在业务下滑时,使用的资源也会减少,避免资源浪费。
第三,全自动弹性伴随而来的是全新的计量计费模式,开发者只需要按使用量付费,当深夜没有业务量的时候,就不会占用任何闲置资源,也就不需要支付费用了。
通过以上特性,Serverless 可以为开发者或者用户带来具体的业务价值:
1.减少运营和维护要求
Serverless 将应用与服务器解耦,业务开展前无需预估资源、购买或配置服务器。
Serverless 也进一步减少了底层运维的工作量,业务上线之后,不需要再操心服务器运维,而是全部交给云平台或者云厂商去做。
2.降低运营成本
Serverless 应用按需执行,只有有请求需要处理或者有事件触发时,才会加载运行,空闲状态下,Serverless 应用本身不占用计算资源。
在使用Serverless产品时,用户只需要为处理请求所使用的计算资源付费,不需要为应用程序空闲期间所使用的资源付费。
3.缩短迭代周期和上线时间
Serverless 架构带来业务进一步解耦,应用功能被分解为若干个细粒度的无状态功能,开发可以专注于单一功能的快速开发和上线。
同时,拆解后的云功能也可独立进行迭代升级,更加快速地实现业务迭代,缩短功能上市时间。
4. 快速试错
利用Serverless架构简单运维、低成本、快速上线的优势,可以快速尝试新的业务形态、新的功能。
借助Serverless产品强大的弹性扩展能力,当您的业务成功时,您无需担心资源的扩张。
应用场景
Serverless 虽然应用广泛,但也有局限性,Serverless 更适合以下场景: - 异步并发,组件可独立部署和扩展 - 应对突发事件或不可预测的服务使用情况(主要是为了节省成本,因为 Serverless 应用在不运行时是免费的) - 短生命周期、无状态、对冷启动时间不敏感的应用 - 需要快速开发和迭代的业务
基于此我们发现 Serverless 非常适合用于实时文件处理、周期性数据处理以及移动和 Web 应用后端。下面我们以一个游戏应用为例,讲解一下什么是 Serverless 应用。
通常,一款手机游戏至少具备以下特点: - 适合移动设备的用户体验 - 用户管理和权限认证 - 游戏逻辑,如等级和升级、游戏排名、玩家等级、任务等。
无服务器的缺点
Serverless 作为一种新的技术架构,具有降低运营成本、降低运维要求、降低人力成本、降低资源开销等诸多优势,但 Serverless 也并非没有缺点,我们先来看看 Serverless 架构的缺点。
状态管理
为了实现自由伸缩,无状态是必须的。对于有状态的服务,使用 Serverless 会失去灵活性。有状态的服务需要和存储交互,这必然会增加延迟和复杂度。
延迟
应用中不同组件的访问延迟是一个大问题,可以通过使用专有网络协议、RPC 调用、数据格式,或者将实例放在同一个机架或同一个主机实例上来降低延迟。Serverless 应用是高度分布和松耦合的,延迟永远是个问题,单纯使用 Serverless 应用并不现实。
本地测试
Serverless 应用本地测试难度是一个非常棘手的问题。虽然在测试环境中可以使用各种数据库、消息队列等来模拟生产环境,但 Serverless 应用的集成或端到端测试却特别困难。很难在本地模拟应用的各种连接,再结合性能和扩展特性进行测试。另外 Serverless 应用本身也是分布式的,将无数的 FaaS、BaaS 组件简单粘合在一起也很有挑战性。
最后:Serverless 计算产品——云函数,作为继云虚拟机、容器技术之后的下一代计算,将迎来云计算的新一轮浪潮。围绕云函数构建的产品能力、工具、生态、应用开发也将迎来新一轮的发展。随着 Serverless 产品和生态的成熟,将逐步承载企业的核心业务。在这个持续快速发展的过程中,腾讯云云函数将作为腾讯云云原生的重点,紧跟客户需求、行业发展、技术发展,为用户提供一整套 Serverless 解决方案。
还没有评论,来说两句吧...