tencent cloud

文档反馈

开发项目

最后更新时间:2024-11-28 17:00:58

    前提条件

    开发流程

    一个项目的开发上线流程大致如下:
    
    
    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

    项目实践

    联系我们

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

    技术支持

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

    7x24 电话支持