Dynamic Server Component Interface for Zero Downtime Updates
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current methodologies for maintaining 'zero downtime' during updates or modifications of distributed Java EE server applications are inadequate, as they often result in system unavailability, data loss, or versioning issues, and lack standardization for component replacement and deployment.
Innovation Solution
A dynamic server framework with components like the Dynamic Component Description Repository (DCDR), Logic Replacement Utility (LRU), and Dynamic XML Object Handler (DXOH) enables on-the-fly creation, modification, and versioning of server components, allowing for zero server downtime by locally storing and managing code, and dynamically handling XML messages and object types.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If traditional methodologies are used for updating server applications, then system reliability is maintained, but server downtime occurs and service interruption is caused
Solution Approach 1:
The system performs preliminary actions by downloading and validating new application components before actually deploying them. The component is downloaded to a temporary location, validated for correctness and compatibility, and only then deployed to the running server. This preliminary preparation allows updates to be tested and verified without interrupting server operation.
Solution Approach 2:
The system introduces dynamic capabilities by allowing application components to be updated while the server is running. Instead of requiring a static stop-start deployment cycle, the system enables dynamic replacement of components during operation. The component manager can dynamically download, validate, and install new components without shutting down the server, making the system adaptable and flexible.
2Adaptability or versatility
If application components are updated frequently to improve functionality, then adaptability increases, but system stability deteriorates due to potential versioning issues
Solution Approach 1:
The system performs preliminary validation of updated components before deployment. The component manager validates the downloaded component to ensure it is correct and compatible with the current system state. This preliminary verification step prevents unstable or incompatible components from being deployed, maintaining system stability while allowing frequent updates.
Solution Approach 2:
The system implements feedback mechanisms where the component manager monitors and tracks component versions, dependencies, and validation results. This feedback loop ensures that only stable, validated components are deployed, and provides information about component relationships to prevent versioning conflicts. The feedback mechanism maintains stability by continuously verifying component integrity during frequent updates.
3Adaptability or versatility
If remote applications can access any object type dynamically, then interoperability improves, but security risks increase due to potential access to unauthorized objects
Solution Approach 1:
The system introduces a component manager as an intermediary between remote applications and the server's object space. The component manager acts as a mediator that receives requests from remote applications, validates them against security policies, and only permits access to authorized objects. This intermediary layer enables dynamic interoperability while filtering out security risks by controlling what remote applications can access.
Solution Approach 2:
The system implements security feedback mechanisms where the component manager continuously monitors access requests and enforces security policies. The system provides feedback about authorized and unauthorized access attempts, allowing dynamic control over object visibility. This feedback mechanism maintains security by actively managing and controlling the interface between remote applications and server objects.
4Adaptability or versatility
If the server stores all received object code locally to enable dynamic updates, then deployment flexibility improves, but device complexity increases
Solution Approach 1:
The system extracts the code storage and management functionality into a separate component manager module. Instead of embedding these complex operations throughout the server, the component manager is extracted as a dedicated component that handles downloading, validating, and tracking of application components. This extraction reduces complexity by centralizing and isolating the complex deployment logic from the main server architecture.
Solution Approach 2:
The system uses copying by downloading component code to temporary locations before deployment. The component manager creates copies of application components in a staging area, validates these copies, and only then deploys them to the running server. This copying approach enables flexible deployment by allowing preparation and validation of multiple versions without permanently consuming server resources, thus managing complexity through temporary duplication.
Data Source
AI summary
An interface is provided between a receiving component of a server application and a remote application, the receiving component being operable to receive serialized objects from the remote application via the interface. The interface comprises: a module for ascertaining if a piece of code associated with the received object is locally stored and directly available to the server application, and a store for locally storing the associated piece of code in the event that it is not already locally stored and directly available to the server application.


