当下,Serverless概念很火,很多同学被Serverless的优势吸引过来,比如它的弹性伸缩,免运维,高可用,资费少。但真正使用起来去落地的时候发现问题很多,大型项目如何组织函数,性能优化怎么做,怎么做Serverless调试,数据库,共享会话怎么加等等。上周,ServerlessDevs2.0正式版全新发布。ServerlessDevs2.0在平台能力、应用模板以及开发者套件方面能力提升。接下来,以ServerlessDevs的应用中心(web版)为案例,来看开箱实践方案。
Serverless函数代码组织
如果想充分利用Serverless的能力函数是最佳方案,可以最大程度减少冷启动时间,践行用完即走的理念,保障用户体验的同时,最大程度减少成本,不过对于中大型项目而言,以单函数的方式组织代码,在维护上无疑是一个巨大挑战,可能一个应用会有数百个函数,维护成本极高也极易出错。
最好的方式是用框架的方式组织代码,以函数的方式部署执行。框架组织代码需要做业务的划分,比如电商包含商品,订单,用户等服务,都放到一个框架里面并通过函数去部署执行的话明显太大了。最好就是像微服务一样,独立业务的接口可以在同一个函数中,每一个业务有自己的独立域名,再通过内部路由访问具体的业务服务。
这样做可以最大限度的利用函数能力,并且维护得来相对容易一些。
我们把ServerlessHub的应用市场作为一类场景,进行了统一划分,具体的函数调用如下实现(完整的代码目录git)
const{