保护私人版权,尊重他人版权。转载请注明出处并附带页面链接
一、Serverless
定义:
Serverless 架构是指大量依赖第三方服务(也叫做后端即服务,即“BaaS”)或暂存容器中运行的自定义代码(函数即服务,即“FaaS”)的应用程序,函数是无服务器架构中抽象语言运行时的最小单位。在这种架构中,我们并不看重运行一个函数需要多少 CPU 或 RAM 或任何其他资源,而是更看重运行函数所需的时间,我们也只为这些函数的运行时间付费。
特点:
Serverless意味无维护,Serverless不代表完全去除服务器,而是代表去除有关对服务器运行状态的关心和担心,它们是否在工作,应用是否跑起来正常运行等等。Serverless代表的是你不要关心运营维护问题。有了Serverless,可以几乎无需Devops了。
Serverless不代表某个具体技术,有些人会给他们的语言框架取名为Serverless,Serverless其实去除维护的担心,如果你了解某个具体服务器技术当然有帮助,但不是必须的。
优势:
- 降低启动成本
- 减少运营成本
- 降低开发成本
- 实现快速上线
- 更快的部署流水线
- 更快的开发速度
- 系统安全性更高
- 适应微服务架构
- 自动扩展能力
厂商产品
二、以阿里云的函数计算为例
这个实例也是官网文档的实例 使用案例。
有些时候,您不想通过直接调用的方式来执行函数,例如一个应用可能已经使用对象存储(Object Storage Service,简称 OSS)来存放用户上传的图片,可以实现一个函数去下载图片进行处理,并将结果存入 OSS 或者其他服务。如果 OSS 能够帮助我们关注新上传的图片,并且自动的去调用执行相应函数,您就不需要再去自己调用函数了,从而简化了开发和使用流程。
为函数设置 OSS 触发器,OSS 就可以关注这些事件并且调用函数执行。
在这个示例中,一个存入指定 OSS Bucket 的文件,如果它是以 source/
为前缀,那么就会自动触发 resize 函数执行,函数将图片缩放并将处理结果存放到同一 Bucket 的 processed/
目录下。例如 source/serverless.png
会被处理成 processed/serverless.png
。
1. 创建函数
注意:修改函数入口
2. 编辑服务角色权限
在新建函数后,如果没有服务,会自动新建用户自己定义的服务名。
在编辑服务中,配置权限
3. 编写函数代码
1 |
|
编写代码可以在线编辑,也可以以上传的方式。
4. 测试函数
这个过程是模拟 OSS bucket 中 source/ 目录下有对象被创建时,函数计算的执行过程。您可以通过这种方式进行调试和测试。
点击触发事件,选择OSS模板。
需要修改以下:
角色Id:上面配置好的角色
bucket Name:Oss中的bucket
文件路径:因为是测试,所以需要已经存在于oss上面的文件
1 | { |
测试通过后,会发现 processed 目录中会有新生成的文件 。
5. 设置OSS触发器
三、工作流程
其实各种产品的工作流程,大致的流程也是会如下:
四、总结
无服务器计算对于开发人员最大的好处,简单来说,就是使得开发人员可以更多的关注与应用程序功能本身,而无需关心例如虚拟机调配这样的配置方面的工作,将服务器的管理从开发者日常工作中解耦。此外,由于程序可以随时运行和终止,因此带来了操作简单性和成本节省。重要的是,它可以提高产品生命周期的效率并降低管理费用。