Rolling Deployment is a gradual software release method where the new version of an application is deployed incrementally, server by server or node by node. The goal is to ensure continuous availability by updating only part of the infrastructure at a time while the rest continues running the old version.
How does it work?
- Incremental Update: The new version is deployed to a portion of the servers (e.g., one server in a cluster). The remaining servers continue serving user traffic with the old version.
- Monitoring: Each updated server is monitored to ensure that the new version is stable and functioning properly. If no issues arise, the next server is updated.
- Progressive Update: This process continues until all servers have been updated to the new version.
- Rollback Capability: If issues are detected on one of the updated servers, the deployment can be halted or rolled back to the previous version before more servers are updated.
Advantages:
- Continuous Availability: The application remains available to users because only part of the infrastructure is updated at a time.
- Risk Mitigation: Problems can be identified on a small portion of the infrastructure before affecting the entire application.
- Efficient for Large Systems: This approach is particularly effective for large, distributed systems where updating everything at once is impractical.
Disadvantages:
- Longer Deployment Time: Since the update is gradual, the overall deployment process takes longer than a complete rollout.
- Complex Monitoring: It can be more challenging to monitor multiple versions running simultaneously and ensure they interact correctly, especially with changes to data structures or APIs.
- Data Inconsistency: As with other deployment strategies involving multiple active versions, data consistency issues can arise.
A Rolling Deployment is ideal for large, scalable systems that require continuous availability and reduces risk through incremental updates.