Hi~各位读者朋友们,感谢您阅读本文,我是笠泱,本期简单分享下Serverless。Serverless是一种云计算服务模式,为业务代码提供运行环境及调度服务。开发者只需专注于编写业务逻辑代码,无需管理底层基础设施(如服务器、存储和网络)。
什么是Serverless
“Serverless无服务器”术语最早出现在 2012 年,这一词的出现意味着开发人员不再需要考虑那么多的物理容量或其他基础设施资源管理责任,通过消除后端基础设施的复杂性,让开发人员可将注意力从服务器级别转移到任务级别。
Serverless无服务器被广泛关注,要追溯到亚马逊云科技2014 年推出的 Amazon Lambda 服务,随后各大厂商纷纷进入无服务器市场,Serverless逐渐被更多开发者所熟知,并逐渐成为一个发展“热词”。
Serverful架构
在传统Serverful架构下,产品架构复杂度较高,并伴随着固定成本的投入,运维成本高,开发效率低。
Serverless架构
相对于Serverful,Serverless可以让业务人员无需关注服务器,仅聚焦于业务逻辑代码,平台为您准备好计算资源,可靠地运行任务,并通过弹性伸缩应对流量峰谷,只需为任务实际消耗的资源付费。
Serverless优势
Serverless分类
各大云平台的Serverless产品类型大同小异,以阿里云为例,主要分为函数计算(Function Compute,简称FC)和应用引擎 (Serverless App Engine,简称SAE)。
函数计算FC 是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码或镜像。函数计算为您准备好计算资源,可靠地运行任务,通过弹性伸缩应对流量峰谷,并提供日志查询、性能监控和报警等功能。
应用引擎SAE 是一款零代码改造、极简易用、自适应弹性的应用全托管平台。SAE能够让您免运维IaaS和K8s,秒级完成从源代码、代码包、Docker镜像部署任意语言的在线应用(例如微服务、Job任务)到SAE,并自动伸缩实例按使用量计费,开箱即用日志、监控、负载均衡等配套能力。
计费方式
CU :全称Cost Unit,单位为CU,是阿里云推出的一种计费单位,其他计费项的资源使用量可以转换成CU使用量。
vCPU、内存等资源使用量与CU使用量的转换逻辑为:CU使用量=资源使用量×CU转换系数。
具体计费规则详见:SAE计费规则与计费项_Serverless 应用引擎(SAE)-阿里云帮助中心
从上图我们可以看到Serverless采用了阶梯单价、按量付费模式,并且还支持根据活跃或闲置、昼夜分时灵活计价,将云的弹性几乎做到了极致。
工作流程
SAE 常用架构
SAE使用流程如下:
1、在首次部署SAE应用前,需要完成规划VPC、vSwitch、命名空间(区分测试、预发、生产等环境)的准备工作。除通过控制台部署应用外,SAE还支持通过Jenkins、IDE插件、Maven插件、Terraform、OpenAPI和云效等多种方式来部署应用。
2、通过以下方式访问SAE应用。
方式一:绑定CLB访问,一个端口支持绑定一个应用。具体操作,请参见为应用绑定CLB。
方式二:配置网关路由访问,一个端口支持绑定多个应用。具体操作,请参见为应用配置网关路由(CLB)。
方式三:绑定EIP访问,一个实例支持绑定一个EIP。具体操作,请参见基于EIP配置SAE实例公网访问和访问公网的能力。
3、为SAE应用配置更多进阶功能。例如,企业级权限控制、弹性(降本增效)、Java微服务增强、高可用、存储等功能。
FC 工作流程
函数计算(Function Compute,简称FC)是事件驱动的全托管计算服务。
FC使用流程如下:
1、开发者使用编程语言编写应用和函数。函数计算支持的开发语言,请参见代码开发概述。
2、开发者上传应用到函数计算。
上传途径包括以下方式:
- 通过函数计算控制台上传。
- 通过Serverless Devs工具上传。更多信息,请参见什么是Serverless Devs。
- 通过API或SDK上传。更多信息,请参见SDK参考。
3、触发函数执行。可以通过控制台或调用API触发,开发者也可以给函数计算配置事件源,终端用户执行事件发生时,自动触发函数执行。
4、函数计算支持根据用户请求量自动扩缩容。
5、根据实际执行时长和资源使用量进行计费。函数执行结束后,可以通过账单来查看函数执行产生的费用。
如何迁移
Serverless实践
开通
以阿里云的函数计算为例函数计算FC_无服务器计算_Serverless_容器与中间件-阿里云
创建
基于基础环境
基于自定义镜像
Demo演示
以Web函数为例创建一个示例代码的函数
测试通过后,点击部署代码
可以根据提供的URL在公网访问
实现灰度发布
需注意的是JAVA 为编译型语言,直接修改代码不能直接生效!需要在FC的控制台右上角“导出代码”,然后根据 HELP.md 中的说明编译代码并重新上传。修改源代码让请求返回"Hello World - v2.0版本",然后mvn clean package重新编译。
上传v2.0版本的代码
创建别名,启用灰度发布
curl测试发现v1.0和v2.0版本各有50%概率被访问到
另外值得注意的是实例是阿里云函数计算 FC 用来运行函数的最小单元。您的请求就是通过函数实例来进行处理的。请求开始执行前,函数计算会为每个请求分配一个最合适的实例。注意:当前列表中仅展示了当前版本或别名的实例,您可以通过页面上方的版本或别名下拉框进行切换。提示:按量实例在处理完请求后会被冻结,如果一段时间内(一般为3~5分钟)不再处理请求,会自动销毁。点击这里了解如何手动停止实例。
通过函数计算平台可以快速创建各式各样的应用,并相互组合调用构成完整的业务链。
本期总结
本期内容简要介绍了Serverless技术,传统的Serverful模式下企业需要参照流量峰值长期保留固定IaaS资源,导致日常业务中的资源浪费,Serverless可以做到最小化闲置资源为原则,根据应用实际使用的资源按量计费,避免业务在不活跃时段的费用开销,大大降低资源成本,做到灵活策略,其底层技术就是容器、容器编排、K8S、HPA/VPA等技术,减少服务器租赁和运维成本以及基础环境的搭建成本,同时能获取业务极致弹性。。
最后,感谢您的阅读!系列文章会同步更新在微信公众号@云上的喵酱、阿里云开发者社区@云上的喵酱、CSDN@笠泱,您的点赞+关注+转发是我后续更新的动力!