Dynamic Code Component Deployment in Cloud Platforms

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Legacy approaches for deploying code components in distributed computing environments are inadequate in addressing uncertainty in usage patterns and environmental constraints, leading to performance degradation as usage models and environments change over time.

Innovation Solution

The implementation of a federator that dynamically deploys code components as in-process or out-of-process components based on usage and performance metrics, using an API processor to access and route requests to the best-performing code instances, thereby optimizing system performance by reducing memory usage, processing demands, and communication overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If code components are deployed as in-process components to run in the same process as the application core logic, then response times are faster, but multiple instances must be maintained across multiple application servers increasing device complexity

Engineering Contradiction:
Improveresponse timeVSAvoidnumber of code component instances
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The system dynamically determines whether to deploy code components as in-process or out-of-process based on real-time performance metrics and usage patterns. The federator monitors system state and adjusts deployment configuration dynamically, allowing the system to optimize for response time when needed while reducing complexity under different conditions.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The deployment configuration parameters (in-process vs. out-of-process) are changed based on monitored performance data. The system collects metrics such as response time, resource utilization, and request patterns, then uses this information to adjust the deployment parameters of code components accordingly.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If code components are deployed as out-of-process components to run in separate processes, then operational complexity increases due to communication orchestration, but system stability improves under varying workloads

Engineering Contradiction:
Improvesystem stabilityVSAvoidcommunication orchestration complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The federator acts as an intermediary layer that manages communication between the application core logic and out-of-process code components. It handles the orchestration of requests and responses, abstracting the complexity of inter-process communication while maintaining system stability and reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system dynamically selects between in-process and out-of-process deployment modes based on workload characteristics and performance requirements. This dynamic approach allows the system to leverage the stability of out-of-process components when needed while managing communication complexity through intelligent routing and federation.

Inventive Principle:
Principle #15Dynamics

3Ease of manufacture

If code component deployment is predetermined to specific locations, then deployment simplicity is maintained, but performance degrades as usage patterns and environments change over time

Engineering Contradiction:
Improvedeployment simplicityVSAvoidsystem performance
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The system performs self-optimization by automatically monitoring its own performance metrics and usage patterns. The federator collects data on request patterns, response times, and resource utilization, then autonomously makes deployment decisions to optimize performance without requiring manual intervention or complex predetermined configurations.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system implements a feedback loop where performance metrics and usage patterns are continuously monitored and fed back into the deployment decision-making process. This feedback mechanism enables the system to adapt to changing conditions and optimize performance over time while maintaining relatively simple deployment procedures.

Inventive Principle:
Principle #23Feedback

4Speed

If multiple instances of in-process code components are maintained across application servers, then faster response times are achieved, but memory usage and processing demands increase

Engineering Contradiction:
Improveresponse timeVSAvoidprocessing power consumption
Core Design Contradiction:
SpeedVSUse of energy by moving object

Solution Approach 1:

Instead of maintaining multiple instances of in-process code components across all application servers, the system uses partial deployment strategies. The federator determines the optimal number and location of code component instances based on actual usage patterns, deploying only what is necessary to achieve acceptable response times while minimizing resource consumption.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10585710B2Dynamic code component deployment in cloud-based service platforms
Publication Date: 2020.03.10 BOX INC
  • US10585710B2 patent drawing
  • US10585710B2 patent drawing
  • US10585710B2 patent drawing

AI summary

Methods and systems for managing application performance in a distributed computing environment. Embodiments commence when an application seeks to perform a function over a content object. The application submits a request to perform the function on the content object, and the request is received by an application programming interface processor. The application programming interface processor accesses a data structure comprising entries that relate the requested function to one or more code instances that are accessible at one or more code locations. An evaluator predicts performance of the function using a first location of a first code instance and compares that predicted performance to a predicted or measured performance of the same function using a second location of a second code instance that implements the same function. The better performing code instance at the determined code location is invoked. Results are collated, formatted, and returned to the calling application.