-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Blue-green deployments process #219
Comments
In order to use the serverless approach, we must setup the following weighted traffic in Route53:
Limitations:
|
We have identified some use cases that we didn't cover before:
|
Here below is my understanding of improved functionality:
NOTE: Let's create separate parameter (e.g. --cleanup) that, if enabled, will clean up CF and Route53 resources. We should also mention somewhere and/or prompt an Y/N confirmation because using this parameter by default might create DNS lags or other unexpected behavior. It is HIGHLY recommended to use --cleanup only couple of hours/days after --ration 0:1 was executed. |
Testing actions is blocked by the following issue : |
I would like to bring back an older conversation about blue-green deployments and implement it as
deepify
command(s):stage
toprod
(use case A) or gradually allowing increase in traffic between 2 differentprod
environments (use case B). For example: "blue env" vs "green env" => 90% vs 10%, then 80% vs 20%, ... and finally 0% vs 100%stage
and "green env" isprod
, while traffic is 0% vs 100%deepify publish --blue X --green Y --data-replicate true|false
- manage traffic between blue-green deployments. Complete list of parameters (required marked with star):blue
(e. g. abcd1234, stage:abcd1234, etc)green
(e.g. wxyz0987, prod:wxyz0987, etc)ratio
(e.g. 9:1, 4:1, etc)data-replicate
(will enable automatically data replication)domain-name*
(e.g. www.deep.mg, todo.deep.mg, etc)hosted zone ofdomain-name
MUST BE IN ROUTE53 (if it's not, operation should fail)valuesabcd1234
andwxyz0987
MUST BE DIFFERENT (if they are the same, operation should fail, unless it's used in [env]:[hash] format and environments are different)blue-percent
(e.g. 0, ..., 50, ..., 100; default - 0)green-percent
(e.g. 0, ..., 50, ..., 100; default - 100)if eitherblue-percent
orgreen-percent
is not specified, the other one MUST BE COMPUTED as difference between 100 and specified parameter valuesum ofblue-percent
andgreen-percent
MUST BE EQUAL TO 100 (if it's not, operation should fail)deepify replicate
- manage data replication between blue-green deployments. Complete list of commands and parameters (required marked with star):deepify replicate [command] --blue-env X --green-env Y --resources A,B,C
- filter the list of DynamoDB tables in "blue env"blue
(e. g. abcd1234, stage:abcd1234, etc)green
(e.g. wxyz0987, prod:wxyz0987, etc)tables
(e.g. list of tables, comma separated values)private-ignore
(e.g. ignore files in private S3 bucket)public-ignore
(e.g. ignore files in public S3 bucket)deepify replicate prepare
- enable streaming for each DynamoDB table in "blue env" and replicate older data using "eventual consistency" approach into DynamoDB table in "green env"; as well as upload corresponding Lambda function(s) that will be used to replicate each streamdeepify replicate status
- report status of the replication (e.g. -100% ... -1% => catching up replication in "prepare" phase; 0% ... 100% => catching up replication in "stream" phase)deepify replicate start
- attach Lambda function that will parse each DynamoDB stream in "blue env", replicate data into DynamoDB table in "green env" using "strong consistency" approach and remove data from the streamdeepify replicate stop
- detach Lambda function from corresponding (or all) DynamoDB stream in "blue env"deepify replicate terminate
- remove Lambda functions (doesn't matter if it's attached or not) and DynamoDB streams from "blue env"The text was updated successfully, but these errors were encountered: