首页 > 其他分享 >Serverless元测试与它的冷启动

Serverless元测试与它的冷启动

时间:2022-12-06 20:02:17浏览次数:46  
标签:Serverless 函数 代码 单元测试 函数调用 冷启动 测试

Serverless元测试与它的冷启动

坚持原创,写好每一篇文章

Serverless的单元测试

问你个问题,你平时会写写单元测试吗?

你知道如果对一个Serverless应用进行单元测试需要注意什么情况吗?首先对Serverless进行单元测试的时候,我们要注意将业务逻辑与FaaS服务进行分割开,这样我们的业务代码才不受FaaS平台的约束,因为不同平台的FaaS入口函数的参数可能不同。对于函数测试的框架,市场中也有不少,这里推荐使用Jest,通过这个框架我们能看到测试的覆盖率有多少,这个框架也只是个参考,希望你能找到自己合适的框架。写的函数越是遵循单一职责的原则,越是方便进行单元测试。对于一些外部调用的功能我们尽量单独拉出来,像是对数据库的操作,对磁盘的操作,网络调用的情况等等。

Serverless的冷启动

熟悉Serverless的同学会知道,Serverless中函数的启动分为冷启动和热启动两部分,冷启动包括下载代码,初始化容器和执行初始化代码,到执行入口函数的部分为热启动阶段。冷启动一般占用的时间比较长,因为这个阶段需要做的事情还是比较多的。对于串行的请求,第一次函数调用的时候需要拉取代码,初始化容器,执行初始化代码等一系列的操作,属于冷启动,再后面的函数调用就是热启动了,因为不需要再拉取代码等等操作了。但这种串行请求的操作在生产中一般不会存在,我们通常会面临的并行请求的问题,也就是高并发问题,并发量越大,冷启动的函数调用也就越多,这样对用户体验是很不好的。

要解决Serverless的冷启动的问题可以从几个方面入手。一个是精剪我们的代码,减少不必要的依赖引入,这样在拉取代码的时候会缩短一定的时间。第二个是合理设置函数的单个实例支持的并发数,第三种方式是我们可以借鉴秒杀系统的设计,在真正的函数调用前进行预热,我们可以利用定时任务先对函数进行调用,让这些函数实例从冷启动变为热启动阶段,从而应对高并发。还有java相比其他语言在冷启动上会占用很多的时候,所以我们一般使用Java来开发Serverless,而是使用Nodejs,Python等。

总结

这篇文章讲了Serverless的单元测试和冷启动的问题。单元测试我们尽量做到业务与云平台进行分离,从而实现更好的迁移,在编写函数的时候尽量遵循单一职责原则。在冷启动方面进行简答介绍,并提供了几种缩短冷启动时间的手段,如果你有更好的方法,欢迎一起讨论。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞

    标签:Serverless,函数,代码,单元测试,函数调用,冷启动,测试
    From: https://blog.51cto.com/u_15460453/5916615

相关文章