tencent cloud

文档反馈

开发项目

最后更新时间:2020-12-18 11:47:52

    前提条件

    开发流程

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

    1. 初始化项目:将项目进行初始化。例如选择一些开发框架和模板完成基本的搭建工作。
    2. 开发阶段:对产品功能进行研发。可能涉及到多个开发者协作,开发者拉取不同的 feature 分支,开发并测试自己负责的功能模块;最后合并到 dev 分支,联调各个功能模块。
    3. 测试阶段:测试人员对产品功能进行测试。
    4. 发布上线:对于已完成测试的产品功能发布上线。由于新上线的版本可能有不稳定的风险,所以一般会进行灰度发布,通过配置一些规则监控新版本的稳定性,等到版本稳定后,流量全部切换到新版本。

    环境隔离

    在开发项目的每个阶段,我们都需要一个独立运行的环境来对开发的操作进行隔离。

    在 serverless.yml 文件中定义 stage,并把 stage 作为参数写入到组件的资源名称中,部署时以实例名-{stage}-应用名的方式生成资源。这样我们在不同阶段只要定义不同的 stage 就可以生成不同的资源,达到环境隔离的目的。

    以 SCF 组件的 serverless.yml 为例:

    #应用信息
    app: myApp
    stage: dev #定义了环境为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 文件中定义,也可以通过 sls deploy --stage dev 直接传参。

    权限管理

    在开发项目中,需要对不同的人员进行权限分配和管理。例如对于开发人员,只允许其访问某个项目某个环境下的权限,可以参考 账号和权限配置,授予子账号 Serverless Framework 特定资源的操作权限。

    以 myApp 项目 dev 环境为例,配置如下:

    {
        "version": "2.0",
        "statement": [
            {
                "action": [
                    "sls:*"
                ],
                "resource": "qcs::sls:ap-guangzhou::appname/myApp/stagename/dev", #app为myApp,stage为dev
                "effect": "allow"
            }
        ]
    }

    灰度发布

    灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式 。为保证线上业务的稳定性,开发上线项目推荐使用灰度发布。

    Serverless应用的灰度发布支持两种方式:默认别名自定义别名。更多详情参考 Serverless 灰度发布

    对比项 配置 流量规则设置 适用组件
    默认别名 配置简单 只能在最后一次发布的函数版本和 $latest 版本间进行
  • 云函数组件
  • 涉及云函的相关组件
  • 自定义别名 配置灵活 可以在两个任意函数版本间进行 云函数组件

    Serverless 命令

    开发项目到上线过程中,需要用到一些Serverless 的相关命令。更多命令请查看 Serverless 支持命令列表

    #初始化项目
    sls
    
    #下载模板项目scf-demo,模板支持可通过sls registry查询
    sls init scf-demo
    
    #下载模板项目scf-demo,并初始化该项目为myapp
    sls init scf-demo --name my-app 
    
    #部署应用
    sls deploy
    
    #部署应用,指定stage为dev
    sls deploy --stage  dev
    
    #部署应用,并打印部署信息
    sls deploy --debug
    
    #部署并发布函数版本
    sls deploy --inputs publish=trues
    
    #部署并切换20%流量到 $latest 版本
    sls deploy --inputs traffic=0.2

    项目实践

    参考 开发上线 Serverless 应用

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持