Distributed Application Rolling Upgrades via Update Domain Segmentation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Maintaining and upgrading distributed applications is challenging due to the need for continuous availability and the risk of interruptions when rolling out new versions or fixing errors, as existing methods require taking the entire application offline, which can lead to unavailability and affect multiple users.
Innovation Solution
A piecemeal updating approach where different software portions of a distributed application are allocated to different servers, with instances of roles strategically assigned to update domains, allowing for sequential offline updates and minimal disruption, while preserving state information for specific roles as needed.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the entire distributed application is taken offline for upgrading, then all software components can be updated uniformly, but the application becomes completely unavailable to users
Solution Approach 1:
The distributed application is divided into multiple update domains, where each domain contains a subset of software components that can be upgraded independently. This segmentation allows partial availability during upgrades by maintaining other domains in service, thus resolving the contradiction between complete updates and continuous availability.
Solution Approach 2:
The system dynamically manages the state of different update domains, allowing transitions between online and offline states based on upgrade needs. This dynamic approach enables the application to maintain availability by keeping some domains operational while upgrading others, addressing both reliability and maintenance requirements.
2Reliability
If software components are updated sequentially to maintain availability, then user access is preserved, but the complexity of managing updates increases
Solution Approach 1:
By segmenting the application into update domains with clear boundaries and dependencies, the system reduces update management complexity. Each domain can be independently managed and upgraded, making the overall complex process more controllable and less error-prone compared to monolithic updates.
Solution Approach 2:
The system performs preliminary actions by pre-defining update domains and their dependencies before upgrades begin. This preparation includes identifying which components can be updated together and establishing upgrade sequences, thereby reducing the complexity of real-time update management while maintaining availability.
3Reliability
If state information is preserved during role upgrades, then user experience is maintained, but additional storage and processing overhead is required
Solution Approach 1:
The system extracts and preserves only the critical state information that is necessary for maintaining service continuity during role upgrades. By selectively extracting essential state data rather than preserving all possible information, the system maintains service continuity while minimizing storage and processing overhead.
Solution Approach 2:
The system discards temporary state information that is not essential for service continuity and recovers only the necessary state data after upgrades. This approach maintains service continuity by preserving critical information while reducing the overall quantity of state information that needs to be managed during the upgrade process.
Data Source
AI summary
Embodiments described herein are directed to updating the various software associated with a distributed application in a piecemeal fashion. All instances of the software are analyzed and separated into different portions, called “roles.” Each instance of a role is strategically assigned to an update domain based on the structural information included in the service model of the distributed application. The distributed application is upgraded one update at a time by selecting an update or host update domain, bringing the roles assigned thereto offline, updating the offline roles, bringing the roles back online, and repeating for other update or host update domains.


