Dynamic Module Versioning for Seamless Application Updates
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Updating a running application composed of multiple program modules poses technical challenges, as existing methods often require suspending the application or reloading all program modules.
Innovation Solution
A technique that allows two program modules with inconsistent data definitions to interact by using a mechanism that enables a calling program module to invoke functions implemented by a called program module, even if they use different schema versions.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the application is updated by suspending execution and reloading all program modules, then data consistency between modules is ensured, but application availability and user experience deteriorate
Solution Approach 1:
The patent segments the program modules into different versions (old version and new version) that can coexist in memory. The runtime management functionality dynamically links specific modules to their respective versions, allowing incremental updates without reloading the entire application. This segmentation enables the application to maintain availability while updating individual modules.
Solution Approach 2:
The patent implements dynamic version management where the runtime management functionality can switch between old and new versions of program modules based on execution context. Modules can be dynamically linked to different versions during runtime, enabling flexible updates without suspending the application. This dynamic approach maintains both data consistency and application availability.
2Stability of the object's composition
If all program modules are reloaded during updating, then schema consistency across modules is achieved, but resource consumption and update time increase
Solution Approach 1:
The patent divides the program modules into groups that can be updated independently based on their schema version requirements. Instead of reloading all modules, only the specific modules requiring updates are reloaded or re-linked to new versions. This selective approach reduces update time while maintaining schema consistency within each version group.
Solution Approach 2:
The patent performs preliminary schema validation and version matching before linking modules to their target versions. The runtime management functionality checks schema compatibility in advance and prepares the appropriate version mappings, ensuring schema consistency is maintained without requiring a complete application reload. This preliminary action prevents inconsistent states and reduces unnecessary update operations.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A technique is described herein for updating a running application that includes a plurality of program modules (e.g., services). The technique performs its updating operation without having to suspend the execution of the running application, and without reloading all of the program modules in the running application. The technique leverages a mapping component to map a calling program module's call to a function to a called program module that implements the function. A current application manifest provides mapping logic for use by the mapping component. In some examples, the technique also transforms data passed by the calling program module to conform to a data format expected by the called program module. This is appropriate when the calling program module and the called program module use different schemas to define the data.