Prerequisites
Development Process
The development and launch process of a project is as shown below:
1. Project initialization: initialize the project; for example, select some development frameworks and templates to complete the basic construction.
2. Development: develop product features. This stage may involve collaboration among multiple developers, who will pull different feature branches for separated development and testing and finally merge them into the dev
branch for joint testing.
3. Testing: test the product features by testing personnel.
4. Release and launch: publish and launch the tested product features. As a newly published version may be unstable, grayscale release will be used generally, and some rules will be configured to monitor the stability of the new version. After the new version becomes stable, all traffic will be switched to it.
Environment Isolation
During each stage of project development, an environment running independently is required to isolate the development operations.
Define stage
in the serverless.yml
file and write stage
into the component's resource names as a parameter, so that resources named instance name-{stage}-application name
will be generated during the deployment. In this way, you can generate different resources in different stages by defining different stage
values so as to isolate the environments.
Take serverless.yml
of the SCF component as an example:
app: myApp
stage: dev
component: scf
name: scfdemo
inputs:
name: ${name}-${stage}-${app}
src: ./
handler: index.main_handler
runtime: Nodejs10.15
region: ap-guangzhou
events:
- apigw:
parameters:
endpoints:
- path: /
method: GET
Define the function name
as ${name}-${stage}-${app}
.
Define stage
as dev
for the development and testing stages. After the deployment, the function will be named scfdemo-dev-myApp
.
Define stage
as pro
for the release stage. After the deployment, the function will be named scfdemo-pro-myApp
.
Manipulate different function resources in different stages so as to isolate the development from release.
Note:
You can directly define stage
in the serverless.yml
file or pass in the parameter through sls deploy --stage dev
.
Permission Management
During project development, you need to assign permissions to different persons and manage their permissions; for example, you want a developer to access only a certain environment in a project. To this end, you can grant sub-accounts permissions to manipulate specified resources in Serverless Framework as instructed in Account and Permission Configuration. Taking the dev
environment of the myApp
project as an example, the configuration is as follows:
{
"version": "2.0",
"statement": [
{
"action": [
"sls:*"
],
"resource": "qcs::sls:ap-guangzhou::appname/myApp/stagename/dev", # `app` is `myApp`, and `stage` is `dev`
"effect": "allow"
}
]
}
Grayscale Release
Grayscale release (aka canary release) is a release method that can smoothly transition between black and white. To guarantee the stability of your business in the production environment, we recommend you use grayscale release to launch projects in the production environment.
Grayscale release for serverless applications is applicable only to the SCF component and relevant components involving SCF.
You can configure the traffic rule of the SCF function whose alias is $default
(default traffic) to configure the traffic of two function versions, where one is the $latest
version of the function, while the other is the last published version. For more information, please see Grayscale Release. Serverless Framework Commands
From project development to release, you need to use relevant Serverless Framework commands. For more commands, please see List of Supported Commands.
sls
sls init scf-demo
sls init scf-demo --name my-app
sls deploy
sls deploy --stage dev
sls deploy --debug
sls deploy --inputs publish=trues
sls deploy --inputs traffic=0.2
Project Practice
Was this page helpful?