Runtime Program Code Modification for Multi-Tenant Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing execution environments, such as multi-tenant application containers, face challenges in managing applications for multiple tenants, including difficulty in ascertaining application behavior without process-level metrics and legacy applications failing due to assumptions of single-tenant environments, as well as scaling issues in distributed computing environments.

Innovation Solution

A computer-implemented mechanism modifies program code at compile time or run time to enable proper execution in multi-tenant or distributed environments by providing instrumentation data, per-tenant resources, translating process identifiers, and propagating context information, allowing for dynamic load balancing and resource optimization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If multiple tenants execute applications in the same application container, then resource utilization is reduced through sharing common frameworks, but process-level metrics become unavailable making application behavior difficult to ascertain

Engineering Contradiction:
Improveresource utilizationVSAvoidprocess-level metrics
Core Design Contradiction:
Loss of energyVSLoss of information

Solution Approach 1:

The patent segments the multi-tenant container environment into isolated virtual process spaces, each assigned to a specific tenant. This segmentation allows process-level metrics to be captured and maintained separately for each tenant while still sharing the underlying container infrastructure, thus resolving the contradiction between resource sharing and metrics availability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary layer (virtual process space with instrumentation) between the multi-tenant container and individual applications. This intermediary captures and translates process-level metrics, making them available for monitoring while allowing multiple tenants to share the container, thus resolving the information loss problem.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If legacy application programs are executed in a multi-tenant execution environment, then resource sharing is enabled, but the applications fail due to assumptions of single-tenant environments

Engineering Contradiction:
Improvemulti-tenant execution capabilityVSAvoidapplication execution success
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent applies preliminary action by modifying application code during compile time or load time before execution. This advance modification instruments the code to recognize and adapt to multi-tenant environments, preventing execution failures while maintaining resource sharing benefits.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent changes execution parameters by injecting context information and modifying process identifiers at runtime. This allows legacy applications to operate correctly in multi-tenant environments by dynamically adjusting parameters such as process IDs and context data without requiring fundamental code changes.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If program code is modified at run time to provide per-tenant resources, then proper execution in multi-tenant environments is enabled, but code complexity increases

Engineering Contradiction:
Improveproper execution in multi-tenant environmentVSAvoidcode complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent implements self-service by having the application code automatically instrument itself during modification. The code generates its own context information and per-tenant resource structures without requiring external complex processing, thus reducing overall system complexity while ensuring proper multi-tenant execution.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent creates universal instrumentation code that serves multiple functions: it provides per-tenant resource isolation, generates context information, and enables monitoring all within a single modification framework. This multi-functionality reduces the need for separate complex mechanisms for each requirement.

Inventive Principle:
Principle #6Universality (Multi-functionality)

4Productivity

If application programs are executed in a distributed computing environment, then scalability is improved, but it becomes difficult to manage and scale execution across multiple systems

Engineering Contradiction:
ImprovescalabilityVSAvoidexecution management
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent implements feedback mechanisms through instrumentation that collects execution data and context information from distributed systems. This feedback enables centralized monitoring and management of distributed application execution, making scalability manageable by providing visibility into system state across multiple nodes.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent applies preliminary action by pre-instrumenting application code with context propagation capabilities before deployment to distributed environments. This preparation enables automatic context transmission across system boundaries, simplifying the management of distributed execution without requiring complex runtime coordination.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9772835B1Modification of program code for execution in a multi-tenant or distributed computing environment
Publication Date: 2017.09.26 AMAZON TECH INC
  • US9772835B1 patent drawing
  • US9772835B1 patent drawing
  • US9772835B1 patent drawing

AI summary

Program code, such the program code of an application program, can be modified to permit the program code to execute in a multi-tenant execution environment. For example, program code might be modified at compile time, run time, or at another time, in order to enable the program code to properly operate in an execution environment in which applications might be simultaneously executed in process by multiple tenants. Program code might also be modified at run time to enable the program code to execute in a distributed fashion in a distributed computing environment. For example, portions of the program code might be configured at run time to execute in different instances of an execution environment. The program code might be modified at run time to enable the program code to properly execute in multiple instances of the execution environment.