DevOps
This is a pretty broad topic but I will mostly cover some basic deployments use in CI/CD pipelines. Software engineers are increasingly exposed, and to be responsible for, deployments and to a degree, environment management (and yes, we still get paid the same!).
Some of this may affect the application's architecture, code changes etc. I hardly see this as a positive but perhaps a necessary evil and it has already gained substantial mass - resisting would not be prudent.
Deployment strategies
Blue Green
leave
N
VMs withv1
(group1
)allocate
N
VMs withv2
(group2
)once
group1
becomes stable, route all traffic togroup2
release
group2
Notes:
both groups connect to the same DB
if there are DB migrations, they must be BG compatible
the app could have it's own load balancer and it's own version
Pros:
only one version of the service is available to clients
this means there will be consistent interaction of your service to end users
resource allocation/availability will be the same during the rollout
rollback is easy
no down time
Cons:
requires
2N
VMs
Rolling upgrade
allocate a new VM with
v2
release one VM with
v1
repeat
Pros:
simple
requires only
N+1
VMsor you can upgrade an existing VM for the cost of performance on VMs on
v1
Cons:
multiple versions of the service will be available
rollback can be tricky during a rollout
could have downtime
Canary release
allocate a new VM with
v2-test
route specific traffic to
v2-test
if stable, continue to full release
Notes:
this is similar to rolling upgrade but with the intention to expose only a subset of users to
v2-test
- usually this is done with internal employees/users. An alternative approach is by partition e.g. region.enables A/B testing
multiple versions of the service will co-exist, this can be difficult to manage
it may take a long time before enough data is collected for the A/B test to be satisfactory
intention is to monitor the
v2-test
closely in production to determine whether it negatively affects the service
A/B Testing
two versions of the service is deployed at the same time
percentage traffic is routed using a load balancer and feature flagging
Last updated