# serverless
Serverless架构让人们不再操心运行所需的资源,只需关注自己的业务逻辑,并且为实际消耗的资源付费。可以说,随着Serverless架构的兴起,真正的云计算时代才算到来了。
# 是个啥?
服务演变过程
- 主机 => VM虚拟机 => docker容器技术 => Functions
简单说可以叫做无服务架构,不需要运维,不需要打系统补丁,不需要打应用补丁,无需数据本分,软件配环境配置的一种新兴开发模式。
Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署。它与传统架构的不同之处在于,完全由第三方管理,由事件触发,存在于无状态(Stateless)、暂存(可能只存在于一次调用的过程中)计算容器内。构建无服务器应用程序意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时。Serverless真正做到了部署应用无需涉及基础设施的建设,自动构建、部署和启动服务。
了解两个概念 (FaaS, BaaS)
- FaaS Function As A Server 函数即服务
- 以函数为单位的计算能力提供方式。
- 仅需编写和上传核心业务代码,交由平台完成部署、调度、流量分发、弹性伸缩等能力。
- 降低与计算使用门槛
- BaaS Backend As A Server 后端即服务
- 各种云产品和云服务,例如对象存储COS,消息队列CMQ,云数据库CDB、TDSQL,云缓存CRedis、CMemcached,甚至到各种以 API 形式提供的服务如万象优图 CI,视频处理 VC。这些产品或服务,用户直接开通即可使用,无需考虑部署、扩容、备份、优化、安全等各种运维工作,做到了开箱即用,无需自己去进行服务器或应用的维护和管理,因此同样也是Serverless的一部分。
- FaaS Function As A Server 函数即服务
# 应用场景
适合于任何事件驱动的各种不同的用例,
- Web及移动端服务
- IoT场景下可高效的处理实时流数据
- 物联网,移动应用,基于网络的应用程序和聊天机器人等。
应用负载有显著的波峰波谷
- 因为业务的不同可能会有明显的波峰波谷的应用,削峰填谷由Serverless提供商自动完成,用户按量计费(一般比传统服务器部署便宜)
- 业界普遍共识是,当自有机器的利用率小于 30%,使用 Serverless 后会有显著的效率提升。
- 对于提供ServerLess的厂商,多业务等峰值和谷值可以相对均匀分布在各个时间段上,实现节约服务器计算资源的目的。
基于事件驱动的应用案例
- 对于那些比较通用的功能,可以封装成函数的应用,比如视频转码,人脸识别。
- 开发这将任务流按照流程链接即可,天然高可用、实时弹性伸缩,用户不需要关心机器层面问题。
# 优点
- 公司节约运维成本
- 相对来说服务器比正常购买还便宜了
- 开发变得简单
- 由腾讯阿里云等厂商提供可靠保障
- 天然具备高可用,实时弹性伸缩,节约程序员心智
- 按次计费,例如腾讯云提供一定量的免费调用次数,小公司基本免费使用了。
# 存在问题
- 存在冷启动问题
- 接受到请求等事件才会运行,不运行就会进入休眠
- 一般优化会将长时间多调用的函数,可以让其一直服务,知道指定事件没有事件才会睡眠或回收。
- 接受到请求等事件才会运行,不运行就会进入休眠
- 容易对提供serverless的服务商产生依赖
- 服务和供应商绑定了,以后再将服务移到其他服务上就不容易了。
- 如果不想产生依赖,就要简历隔离层。隔离 API 网关、隔离数据库层等等,就是需要很多需要手动开发的地方。
- 使用起来,有一定的复杂性,加上并不成熟现在。