Concurrent Application Version Deployment with Automatic Rollback
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Deploying new versions of network-based applications often results in downtime for clients due to the need to terminate the old version and allocate resources for the new version, leading to temporary loss of accessibility.
Innovation Solution
Implementing a deployment management application that allows the new version to execute concurrently with the old version, redirecting network traffic to the new version once it is stable, and enabling rollback to the old version in case of errors, thus minimizing downtime and resource usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the old version is terminated and resources are allocated for the new version, then the new version can be deployed, but client accessibility experiences downtime
Solution Approach 1:
The system performs preliminary actions by allocating resources and starting the new version in advance before the old version is fully terminated. The load balancer is pre-configured with both old and new version endpoints, allowing the new version to be ready for traffic redirection before the old version completely shuts down, thereby minimizing client accessibility downtime.
Solution Approach 2:
The load balancer acts as an intermediary between clients and application versions. It manages traffic distribution by gradually shifting weight from the old version to the new version, allowing seamless transition without complete service interruption. This intermediary mechanism enables health-check-based routing that maintains client accessibility throughout the deployment process.
2Reliability
If the new version runs concurrent to the old version, then client accessibility is maintained, but system resource usage increases
Solution Approach 1:
The system applies partial action by running only a subset of the new version's instances concurrently with the old version during the transition period. The load balancer distributes traffic proportionally, sending only the necessary portion of requests to the new version while keeping the old version fully operational. This partial execution approach maintains client accessibility while avoiding the need to fully provision and run all new version resources simultaneously, thus optimizing system resource usage.
3Loss of time
If network traffic is redirected to the new version, then clients access the new version with no downtime, but errors in the new version can cause accessibility problems
Solution Approach 1:
The system implements feedback mechanisms through health checks that continuously monitor the new version's performance and availability. The load balancer receives feedback about the new version's health status and dynamically adjusts traffic distribution accordingly. When the new version experiences errors or degradation, the health check feedback triggers automatic rollback by redirecting traffic back to the old version, ensuring continuous client accessibility without manual intervention.
Solution Approach 2:
The system prepares cushioning measures in advance by maintaining the old version running alongside the new version during the transition period. This creates a safety buffer where the old version serves as a backup ready to immediately absorb traffic if the new version fails. The gradual traffic shift approach also provides cushioning by not fully committing to the new version until it proves stable, protecting against potential accessibility problems.
Data Source
AI summary
Disclosed are various embodiments for a deployment management system. A second version of a deployable application is executed concurrently with a first version. Network traffic sent to the first version of the application is redirected to the second version. In the event of an error, network traffic is directed back to the first version of the application. After a period of concurrent execution, the first version of the application is terminated.


