简介
概念
- serverless 是对弱/无服务(削弱开发者对服务部署和维护的感知)应用架构的抽象和总结,是基于云平台的一种高自动化的开发方式,包含Faas和Baas
解决什么(钱)问题
-
成本
-
运营成本
- 不关心部署
- 自动扩容
-
服务资源成本
- 按调用次数收费
-
-
效率
- 提高应用部署效率
- 提高业务开发的效率
适合什么场景
-
轻量
- IOT,多媒体处理,机器人,个人博客
-
低实时要求
- 发邮件,消息推送,验证码
-
流量集中
- 定时任务,自动化hook,爬虫
-
快速迭代
- 创业,业务idea 试错
云平台
- AWS
- Azure
- Aliyun
- Tencent
计费
-
预付
- 单价低,按峰值
-
后付
- 单价高,按实际
开源框架
-
fn
- 来自 Oracle 的开源 Serverless 框架 https://fnproject.io/
-
openfaas
- 以容器技术为核心的开源 Serverless 框架。 https://github.com/openfaas/faas
-
fission
- Platform9 推出的开源 Serverless 框架 https://github.com/fission/fission
-
Kubeless
- 基于 Kubernetes 架构实现的开源 Serverless 框架 https://github.com/kubeless/kubeless
-
OpenWhisk
- Apache 社区的开源 Serverless 框架 https://github.com/apache/incubator-openwhisk
谁在用
- 上线了
- thoughtwork
- 字节跳动
- 腾讯
- 阿里
- aws 80%的容器用户
实战
平台
- Aliyun Serverless Faas
node框架
-
midway faas
- https://www.yuque.com/midwayjs/faas
模拟机器人处理函数
-
创建
- f create
-
配置
- f.yml
service: midway-faas-vue-demo provider: name: aliyun # tencent runtime: nodejs10 functions: render: handler: api.render events: - http: path: /* index: handler: api.index events: - http: path: /api/index detail: handler: api.detail events: - http: path: /api/detail list: handler: api.list events: - http: path: /api/list answer: handler: api.answer events: - http: path: /api/answer ## aggregation deplpy aggregation: agg-demo-all: deployOrigin: false functionsPattern: - '*' package: include: - build artifact: code.zip
-
函数
- https://www.yuque.com/midwayjs/faas/glossary
-
部署
- f deploy
-
访问
-
函数指标
-
项目
- https://github.com/AviorAlong/midway-faas-test
阿里云 faas 总结
- 快速部署
- 收费规则太多
- 自动扩容无法验证
- 自定义域名不方便
总结
优势
- 运营成本低
- 开发效率高
- 自动扩容
劣势
-
安全性
- 恶意调用
- 数据安全
-
新的学习成本
- 新框架
- 新环境
-
调用时长限制
- 函数运行时长10分钟
-
冷启动延迟
- 冷启动时间长
-
平台依赖严重
- 依赖平台的稳定性,迁移成本高
未来?
-
baas
- 后端服务上云
-
faas
- 轻量服务拆分
-
榨干程序员
-
美好的愿望
- 解放程序员,提高效率,专注于业务开发
-
残忍的挖坑
- 底层,源码,算法,架构
-