- 高防服务器 HOT
-
产品中心
- 服务保障
- 代理加盟
昨天,栈长应腾讯云小伙伴邀请参加了Techo Day 技术开放日的线上活动,这一期的主题是”轻量级云开发与云应用“,包括轻量级应用服务器、容器和中间件、云开发、微服务、大数据、安全等领域的应用和原理等。
这其中有一项技术讲解——Serverless让我感触比较深。这门课打破了我对软件开发领域的定义。
在现代越来越强大的云计算加持下,我们大量运用了一些云组件,比如:
没错,即使云服务应用再多,我们也仅限在 "SaaS(软件即服务)" 层面的应用。
但这门课程提到的,是传统的 "SaaS(软件即服务)" 不再是颗粒度最小的云服务器了,取而代之的是,你可以理解为 "方法级别" 的云服务,即可以以方法作为独立载体被部署在云上,颗粒度更小、灵活性更强,可以获得尽可能大的弹性。
大部分人看到 Serverless 仍是一知半解,所以我想有必要给大家做个专题分享,包括 Serverless 的正确理解及实现方案,以及腾讯云的 Serverless 是如何应用的。
现在 Serverless 很火啊,到处都是人,包括 Spring 都已经支持 Serverless 适配了,栈长当初看到这个名词的时候以为是指 "无服务器",相信很多人也会这样以为,不过不要理解错了,栈长在这里扫个盲。
Serverless 是指 "无服务器架构",这里的 "无服务器" 并不是指程序不需要服务器运行,而是指我们的开发工作不需要关注服务器底层的资源,比如我们部署应用时,经常遇到以下一些服务器及基础设施的相关工作:
这些工作在传统的业务中需要运维人员和开发人员一起协调完成,而 Serverless 的到来,我们通通都不用管了,Serverless 帮我们去完成这些,程序员只需要关注业务逻辑本身即可。
来看 Spring Serverless 第一张图就明白了:
实操教学|用Serverless 分分钟部署一个 Spring Boot 应用,真香!
Serverless 只需要关注一件事:函数!!
这里的 FaaS 就是 Serverless 最基本的一种表现形式。
Serverless 具有资源编排、自动伸缩、事件驱动等能力,覆盖编码-调试-测试-部署等全生命周期,减少维护基础设施的成本和风险,利用云的能力可以更迅速的扩展。
我们来看下面这张图:
实操教学|用Serverless 分分钟部署一个 Spring Boot 应用,真香!
我们可以看到,Serverless 始终能满足日益增长的需求,并能对资源做到灵活动态调整,一方面能在闲时减少资源以避免浪费,另一方面,即使流量溢出也能应对。
这里总结下 Serverless 的优势:
高可用: 如多活、容灾、扩容、备份等能力,这些都不在话下;
高弹性: 以方法为部署载体,比微服务更微,获得极致弹性;
轻运维: 免去大量的运维工作,专注核心开发业务,大大节省工作量;
等等……
Serverless 经常不会单独出现,还有以下两个衍生概念,也是目前最常见的 Serverless 实现方案:
FaaS(函数即服务) + BaaS(后端即服务)
Function as a Service(FaaS)函数即服务,这也是 Serverless 的基石,它是比 SaaS(软件即服务)/ BaaS(后端即服务) 更小的载体,每一个函数就是一个服务,函数之间相互独立。
我们来看一张基于 FaaS 的架构图:
实操教学|用Serverless 分分钟部署一个 Spring Boot 应用,真香!
基于 FaaS 服务器底层的关系从下到上依次是这样的:
物理服务器(IaaS) > 虚拟机(PaaS) > 容器(PaaS) > 函数(FaaS)
函数(也可以说方法)颗粒度更小,可以帮助应用获得极致弹性。
Backend as a Service(Baas)后端即服务,即为应用提供后端云服务,可以理解为 PaaS 和 SaaS 之间的一种服务,它也是 Serverless 架构中的一种表现形式,大量开箱即用的后端云上功能提升研发效能。
后端服务 BaaS 并不是必须的,FaaS 和 BaaS 都属于 Serverless 架构不同的表现形式,也可以说是 FaaS 和 BaaS 是 Serverless 架构,它们是相辅相成的。
腾讯云中的 Serverless 是指 Serverless Cloud Function,简称:SCF,也可以叫 "云函数",是腾讯云提供的 Serverless 服务,腾讯云用户无需购买云服务器和虚拟机,代码即可在腾讯云基础设施上弹性、安全地运行,支持所有主流的编程语言。