serverless 是什么
按需使用,关注的是使用时间与内存,而不再关心服务器本身。
应用场景
- 异步事件
serverless是典型事件驱动语场景下的应用。 - 定时任务
对于定时任务,意味着服务器有相当的时间处于空转的状态。使用serverless进行定时任务执行,对于成本控制有一定的好处。当然这个还是需要做足够的衡量。
痛点
- 冷启动
冷启动带来的延时决定了本身不能支持加载与启动非常耗性能的函数,这也意味着serverless不会适合运行时长极短的瞬时任务,而最好是一个批量的任务,数据量非常大,耗内存耗cpu,执行完成需要相当的时间(几小时到几天不等)。对于对响应时间有强要求,需要快速返回结果的任务,则非常不适用。 - 环境配置
虽然serverless不需要环境配置,但是函数的执行环境肯定还是需要预先配置运行环境的。所以函数本身修改需要进行的单机环境配置调试的工作并不会减少。减少的时间是分布式联通性的调试,尤其是不需要自己去搭建一个集群并为其进行网络等配置。这是针对固定配置的服务。 - 状态记录
无服务并不是真的没有服务器,而是服务器不可见。这就导致一个函数只有输入和输出,过程状态的记录会显得非常的麻烦。最简单的即是运行日志的记录与查询。常规的解决方案是连接数据库,无论是rds还是kv数据库,将状态记录下来。无状态的服务的状态记录在http上已经有一定的应用实践,使用中间件进行状态存储可以解决此问题。这个在服务器部署事实上也多数是将状态信息存储到其他地方而不是存在本地服务器上。
另外环境配置中对于动态配置信息,作为环境的状态之一,在启动与配置过程也将会是一个麻烦事。