Bilal Ahmad

~Engineers solve problems, I solve engineer's problems 🤘

6 Most Common Deployment Strategies

Software Deployment

Software deployment is a combination of all the steps, processes, and activities that are required to make a software system or update available to its intended users.

e.g.

Best Practices to consider while designing the deployment process

Use continuous integration (CI):

Pull code, Build it and test it—continuously. This helps ensure apps will work in your environment, not just in the dev’s personal machine.

Adopt continuous delivery (CD):

Continuous delivery helps ensure your code changes are ready for primetime by automatically preparing them to move from deployment to production through rigorous testing.

Rollback plan:

What will you do if things go wrong? Proactively plan ahead for contingencies with a good rollback strategy in place.

Zero Downtime:

While deploying there should not be any downtime in the availability of the software.

Some Widely used Deployment Strategies and their pros and cons

1 - Recreate Deployment

V1 is terminated then V2 is rolled out
Pros:
Cons:

Recreate

2 - Rolling Deployment

V2 is slowly rolled out, replacing V1
Pros:
Cons:

Rolling

3 - Blue/Green Deployment

V2 is released alongside V1, then traffic is switched to V2 after testing new version meets all requirements.
Pros:
Cons:

Blue-Green

4 - Canary Deployment

V2 is released to a subset of users, then proceed to a full rollout.
Pros:
Cons:

Canary

5 - A/B testing

V2 is released to a subset of users under specific condition.
Pros:
Cons:

A/B

6 - Shadow Deployment

V2 is receives real-world traffic in parallel to V1 and doesn’t impact the response.
Pros:
Cons:

Shadow

Conclusion

One strategy does not fit all requirements. Most of the times companies rely on multiple strategies depending on the use case.

Some factors to consider when choosing strategy:

back