~Engineers solve problems, I solve engineer's problems 🤘
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.
Installation of software in a physical machine in a data center.
Upgrading the web application that is accessible on internet on a website.
Releasing new version of IOS app on app store.
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.
Continuous delivery helps ensure your code changes are ready for primetime by automatically preparing them to move from deployment to production through rigorous testing.
What will you do if things go wrong? Proactively plan ahead for contingencies with a good rollback strategy in place.
While deploying there should not be any downtime in the availability of the software.
Easy to setup
Application state entirely renewed
Easy to setup
No downtime required as version is slowly released across instances
Rollout/Rollback can be slow
Control over traffic is limited
Instant Rollout/Rollback
Avoid versioning confusion, the entire application state is changed in one go.
Expensive as it requires double resources.
Extra effort of proper testing is required before releasing V2
Convenient for error rate and performance monitoring
Fast rollback with low impact
Several versions live in parallel
Full control over traffic.
Good for analysis of end user impact.
Requires sophisticated load balancer
Hard to troubleshoot errors, distributed tracing becomes mandatory
Useful for Performance testing with production traffic
No rollout until stability and performance of application meet the requirements
Expensive as it requires double resources
Complex to setup
Requires mocking service for certain cases
Not a true user test and can be misleading
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: