Serverless 应用中心 开发项目

在开发项目的每个阶段,我们都需要一个独立运行的环境来对开发的操作进行隔离。在 serverless.yml 文件中定义 stage,并把 stage 作为参数写入到组件的资源名称中,部署时以 实例名 -{stage}- 应用名 的方式生成资源。这样我们在不同阶段只要定义不同的 stage 就可以生成不同的资源,达到环境隔离的目的。

相关产品
Serverless 应用中心 产品页,含版本规格、价格与购买入口。

一、前提条件

在开始项目开发之前,请确保你已经了解以下内容:

·快速部署

·Serverless 应用

·账号和权限配置

二、开发流程

一个项目的开发上线流程大致如下:


·初始化项目:将项目进行初始化。例如选择一些开发框架和模板完成基本的搭建工作。

·开发阶段:对产品功能进行研发。可能涉及到多个开发者协作,开发者拉取不同的 feature 分支,开发并测试自己负责的功能模块;最后合并到 dev 分支,联调各个功能模块。

·测试阶段:测试人员对产品功能进行测试。

·发布上线:对于已完成测试的产品功能发布上线。由于新上线的版本可能有不稳定的风险,所以一般会进行灰度发布,通过配置一些规则监控新版本的稳定性,等到版本稳定后,流量全部切换到新版本。

三、环境隔离

以 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: – http: parameters: netConfig: enableIntranet: true enableExtranet: true qualifier: $DEFAULT authType: NONE

·云函数 name 定义为 ${name}-${stage}-${app}。

·开发测试阶段定义 stage 为 dev,部署后云函数为 scfdemo-dev-myApp。

·上线发布阶段定义 stage 为 pro,部署后云函数为 scfdemo-pro-myApp。

·不同阶段操作不同的云函数资源,从而达到开发与发布隔离的目的。

注意:说明:

注意:stage 可以直接在 serverless.yml 文件中定义,也可以通过 scf deploy –stage dev 直接传参。

如你仍在使用 API 网关,请将events修改为:

events: – apigw: parameters: endpoints: – path: / method: GET

四、权限管理

在开发项目中,需要对不同的人员进行权限分配和管理。例如对于开发人员,只允许其访问某个项目某个环境下的权限,可以参考 账号和权限配置,授予子账号 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 应用。

赞 (0)
上一篇 4天前
下一篇 4天前