前提条件
了解 快速部署了解 Serverless 应用了解 账号和权限配置
开发流程
一个项目的开发上线流程大致如下:

初始化项目:将项目进行初始化。例如选择一些开发框架和模板完成基本的搭建工作。开发阶段:对产品功能进行研发。可能涉及到多个开发者协作,开发者拉取不同的 feature 分支,开发并测试自己负责的功能模块;最后合并到 dev 分支,联调各个功能模块。测试阶段:测试人员对产品功能进行测试。发布上线:对于已完成测试的产品功能发布上线。由于新上线的版本可能有不稳定的风险,所以一般会进行灰度发布,通过配置一些规则监控新版本的稳定性,等到版本稳定后,流量全部切换到新版本。
环境隔离
在开发项目的每个阶段,我们都需要一个独立运行的环境来对开发的操作进行隔离。在 serverless.yml 文件中定义 stage,并把 stage 作为参数写入到组件的资源名称中,部署时以 实例名 -{stage}- 应用名
的方式生成资源。这样我们在不同阶段只要定义不同的 stage 就可以生成不同的资源,达到环境隔离的目的。以 SCF 组件的 serverless.yml 为例:
# 应用信息app: myAppstage: dev # app环境名称,默认为dev
# 组件信息component: scf name: scfdemo
# 组件参数inputs: name: ${name}-${stage}-${app} #函数名称,以变量 ${stage} 作为资源名称的一部分 src: ./ handler: index.main_handler runtime: Nodejs10.15 region: ap-guangzhou events: - apigw: parameters: endpoints: - path: / method: GET
云函数 name 定义为 ${name}-${stage}-${app}
。开发测试阶段定义 stage 为 dev
,部署后云函数为 scfdemo-dev-myApp。上线发布阶段定义 stage 为 pro
,部署后云函数为 scfdemo-pro-myApp。不同阶段操作不同的云函数资源,从而达到开发与发布隔离的目的。说明stage 可以直接在 serverless.yml 文件中定义,也可以通过 scf deploy --stage dev
直接传参。
权限管理
在开发项目中,需要对不同的人员进行权限分配和管理。例如对于开发人员,只允许其访问某个项目某个环境下的权限,可以参考 账号和权限配置,授予子账号 Serverless Cloud Framework 特定资源的操作权限。以 myApp 项目 dev 环境为例,配置如下:
{ "version": "2.0", "statement": [ { "action": [ "scf:*" ], "resource": "qcs::scf:ap-guangzhou::appname/myApp/stagename/dev", #app 为 myApp,stage 为 dev "effect": "allow" } ]}
灰度发布
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式 。为保证线上业务的稳定性,开发上线项目推荐使用灰度发布。Serverless 应用的灰度发布支持两种方式:默认别名与自定义别名。更多详情参考 Serverless 灰度发布。
对比项 | 配置 | 流量规则设置 | 适用组件 |
默认别名 | 配置简单 | 只能在最后一次发布的函数版本和 $latest 版本间进行。 | 云函数组件涉及云函数的相关组件 |
自定义别名 | 配置灵活 | 可以在两个任意函数版本间进行。 | 云函数组件 |
Serverless Cloud Framework 命令
开发项目到上线过程中,需要用到一些 serverless-cloud-framework 的相关命令。更多命令请查看 Serverless Cloud Framework 支持命令列表。说明:serverless-cloud-framework
命令的简写为 scf
。
初始化项目:
scf
下载模板项目 scf-starter,模板支持可通过 scf registry 查询:
scf init scf-starter
下载模板项目 scf-starter,并初始化该项目为 myapp:
scf init scf-starter --name my-app
部署应用:
scf deploy
部署应用,指定 stage 为 dev:
scf deploy --stage dev
部署应用,并打印部署信息:
scf deploy --debug
部署并发布函数版本:
scf deploy --inputs publish=trues
部署并切换20%流量到 $latest 版本:
scf deploy --inputs traffic=0.2
项目实践
参考 开发上线 Serverless 应用。
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠
转转请注明出处:https://www.yunxiaoer.com/148990.html