Serverless的基础概念
云原生开发模型的一种,可使开发人员专注于构建和运行应用,而无需管理服务器。
Serverless方案中仍然需要服务器,但它们已从应用开发人员的关注中抽离了出来。
云提供商负责置备、维护和扩展服务器基础架构等例行工作
开发人员可以简单地将代码打包到容器中进行部署
部署之后,无服务器应用即可响应需求,并根据需要自动扩容
用户为实际占用的资源付费,而不再是固定的带宽或者服务器数量。
Serverless与其它云计算模型的核心区别
由云服务商负责管理基础架构和应用扩展
应用部署于容器中,这些容器在被调用时将会自动按需启动
出现能够触发应用代码运行的事件时,云架构才会为这一代码分配资源
代码执行结束后,占用的大部分资源便即释放
帮助公司避免服务器等资源的过渡采购,提高资源效益
操作系统、文件系统、安全补丁、负载均衡、容量管理、扩展、日志和监控等例行任务都由底层的云服务完成,从而将开发人员从应用扩展和服务器置备相关的琐碎日常任务中解放出来
Serverless产品
BaaS(Backend as a Service)
云服务端将后端需要的各种服务,例如认证服务、数据库、消息队列、文件存储、代码构建等各种后端功能封装为API提供给用户。
用户只需要根据BaaS的API编写并提交代码即可自动完成应用构建、部署、运行、扩缩容等功能。
FaaS(Function as a Service)
由事件驱动计算执行的应用架构模型
开发人员编写逻辑代码,并将其部署到完全由平台(云服务商)管理的容器中,然后按需执行
开发人员通过API调用Serverless应用
FaaS服务商通过API网关来处理API调用请求
运行Serverless代码的容器的特点
无状态 - 让数据集成变得更加简单
寿命短 - 可以只运行非常短的时间
由事件触发 - 可在需要时自动运行
完全由云提供商管理
BaaS与FaaS的区别与联系
BaaS与FaaS的区别
BaaS处理整个后端功能,而FaaS仅处理应用程序中支持响应的事件。
BaaS与FaaS的联系
IaaS=数据中心+服务器+存储+网络
PaaS=IaaS+部署+管理+扩展
BaaS=PaaS+自动化构建
Serverless的优缺点
优点
1. 较低的运维成本
2. 较低的开发成本
3. 自动化弹性扩展
4. 较高的计算资源利用率
缺点
1. 仅支持无状态服务
2. 延迟问题
1. 高度分布式导致延迟增大
2. 冷启动存在延迟
3. 尚未形成统一标准
4. 存在厂商锁定的可能性
Serverless的主流产品
云厂商的FaaS产品
1. AWS Lambda
2. Google Cloud Functions
3. Microsoft Azure Functions (open source)
4. Aliyun Function Compute
5. Huawei Cloud FunctionGraph(函数工作流)
开源解决方案
1. Apache OpenWhisk
2. OpenFaaS
3. Fission
4. Kubeless
5. Knatvie