Zero Downtime Software Versioning via Dynamic Invoking Logic
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing systems face challenges in seamlessly updating software components like stored procedures within applications without disrupting ongoing instances, leading to potential downtime and consistency issues.
Innovation Solution
The method involves receiving an updated version of a software component while an application instance is executing, storing it with new version information, and modifying the invoking logic to use the updated version at runtime, while allowing prior instances to continue using the current version, thus enabling simultaneous use of different versions without downtime.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If an updated version of a software component is deployed while an application instance is executing, then the application can use the updated version in future executions, but the current executing instance cannot access the updated version without downtime
Solution Approach 1:
The system segments the software component storage into version-specific containers within the database, allowing multiple versions to coexist independently. Each version is stored as a separate entity with version identifiers, enabling the application to access different versions based on the executing instance without conflict or downtime.
Solution Approach 2:
The patent introduces a version dimension to the software component storage model. Instead of a single sequential version replacement, the system adds a version identifier dimension that allows parallel access to multiple versions simultaneously. This dimensional expansion enables the application to select appropriate versions dynamically without disrupting executing instances.
2Productivity
If the invoking logic is updated to use a new software component version, then new application executions will use the updated version, but existing executing instances continue using the old version
Solution Approach 1:
The system performs preliminary version registration and database updates before the application needs to use the new version. By pre-storing the updated software component version in the database with proper version identifiers and updating the invoking logic in advance, the system ensures that when new application instances start, they can immediately access the updated version without any downtime or deployment delays.
3Adaptability or versatility
If multiple versions of a software component are stored concurrently, then different application instances can use different versions, but version management complexity increases
Solution Approach 1:
The patent introduces a version management intermediary layer that mediates between the application and multiple software component versions. This intermediary maintains a version registry in the database, tracks which versions are available, and directs application instances to appropriate versions based on their requirements. This intermediary simplifies version management by providing a unified interface while handling the complexity of multiple version coexistence.
Data Source
AI summary
The disclosure generally describes methods, software, and systems, including a method for application versioning. An updated version of a software component to be executed by an application is received while an instance of the application is executing using an instance of a current version. The updated version is stored with new version information, concurrently with the current version. A request is received for execution of the application that uses the software component. Invoking logic in the application is updated to invoke the software component. The updating includes modifying the invoking logic to invoke the updated version using the updated version information in the invoking logic. The updating causes the invoking logic to invoke, at runtime, the updated version. Instances of the application invoked prior to the receiving and storing continue to execute using the current version. The application is provided for execution, including the updated invoking logic.


