All At Once deployment method is used to pull new software on all serves at the same time, and causes downtime.
To review some of load balancer concepts please visit this page.
How it works
Let’s say our initial state looks like this:
Step 1 is to remove all servers from load balancer. Before doing this, we have to wait for each current connection to finish (any outstanding transaction must be terminated). This is called connection draining.
For the connection draining to work, a timeout must be set. After this timeout, the server will be removed from load balancer automatically, despite outstanding transactions.
Step 2 is to pull the new version of software/configurations, then run all tasks required for update.
During this step, the server will be unavailable, and downtime will occur. All traffic will be redirected to a maintenance page until deployment is finished.
Step 3 is to reconnect all servers to the load balancer.When should you use this method
This type of deployment is suitable when the downtime has no side effects, for example if all servers are used internally in the company and they must be periodically updated.
- Downtime will occur during deployment
- The new software can be used only after all serves are updated
- The update of a server increases the risk of errors, as only the immutable deployment strategy pattern prevents this issue.
- Rollback means downtime again and waiting for all servers to be updated with old software
- All servers are updated at the same time
- Granular control with the help of an automated provisioning tool.
- Issues with shared resources may occur, in case of rollback the shared resources should be affected so that it maintains the backwards compatibility.