当前位置:主页 > 查看内容

Serverless 应用中心 开发项目 - 进阶指南

发布时间:2021-10-15 00:00| 位朋友查看

简介:前提条件 了解 快速部署 了解 Serverless 应用 了解 账号和权限配置 开发流程 一个项目的开发上线流程大致如下: 初始化项目:将项目进行初始化。例如选择一些开发框架和模板完成基本的搭建工作。 开发阶段:对产品功能进行研发。可能涉及到多个开发者协作,……

前提条件

  • 了解 快速部署
  • 了解 Serverless 应用
  • 了解 账号和权限配置

开发流程

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

  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 应用。


    本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
    上一篇:Lambda函数 - 日志服务 下一篇:没有了

    推荐图文

    • 周排行
    • 月排行
    • 总排行

    随机推荐