背景
随着serverless越来越流行,越来越多的中小型企业,个人开发者开始接纳并使用这样一个简单,灵活的平台。由于不用自己运维服务器,不用自己考虑系统负载问题,可以为企业节省不少成本。另外对于一些轻量级的应用,甚至连后端开发人员也不需要了。
案例
最近我们接到一个咨询,上海某网路科技有一块业务是做定制H5活动(不是市面上H5模板配置一下这么简单的)。目前是前端Vue 后端java开发,前端放在云服务器站点目录,后端放在容器里面。那么这种情况不仅仅需要维护服务器,考虑扩缩容,还需要前后端程序员去配合开发,无论是人力还是物力消耗都比较大。所以我们建议用户把站点也挪到对象存储上(开启静态网站),后端改成Nodejs,这样让前端工程师做全栈开发。此外用户还有一个要求就是,每个活动是独立的(包括后台服务),因为活动需要敏捷开发,同时不能影响其他客户的活动,估计每年会有一百多个活动的规模。这种情况特别适合使用云函数,可以一个活动对应一个函数,公共代码使用层的形式解决,该公司一年当中有旺季也有淡季,云函数只有使用才需要付费,支持动态扩缩,人力物力成本大大降低。
方案设计
用户可以选用自己熟悉的nodejs框架,这里以Express.js为例,对于每个活动创建一个云函数,例如:
代码语言:javascript复制# serverless.yml
component: express # (必填) 引用 component 的名称,当前用到的是 express-tencentname: express-api # (必填) 该 express 组件创建的实例名称
org: test # (可选) 用于记录组织信息,默认值为您的腾讯云账户 appid
app: expressApp # (可选) 该 express 应用名称
stage: dev # (可选) 用于区分环境信息,默认值是 dev
inputs:
region: ap-guangzhou
functionName: express-api
serviceName: mytest
runtime: Nodejs8.9
serviceId: service-xxx
src: ./src
functionConf:
timeout: 10
memorySize: 128
environment:
variables:
TEST: vale
apigatewayConf:
customDomains:
- domain: abc.com
certificateId: abcdefg
isDefaultMapping: 'FALSE'
pathMappingSet:
- path: /
environment: release
protocols:
- http
- https
然后用户往函数里面填写自己的逻辑即可。
使用云函数后整体架构图如下: