Multi-tenant Infrastructure Using Tenant Containers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional multi-tenant applications require separate processes, threads, and class loaders for each tenant, leading to inefficient use of computing resources and increased complexity for developers.

Innovation Solution

Implementing a multi-tenant infrastructure that uses tenant containers, each associated with an executing virtual machine, allowing a single instance of the application to serve multiple tenants with logical separation of data and functionality, and utilizing an injection dependency framework to manage tenant-specific information.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If separate processes or threads are used for each tenant in conventional multi-tenant applications, then tenant isolation and security are improved, but computing resource usage increases and system complexity increases

Engineering Contradiction:
Improvetenant isolationVSAvoidcomputing resource usage
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The system segments the multi-tenant application into isolated tenant containers, where each container represents a distinct tenant's execution environment. This segmentation enables logical isolation of tenant data and functionality while allowing physical sharing of underlying computing resources, thus maintaining security and isolation without requiring separate processes or threads for each tenant.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent merges multiple tenant execution contexts into a single shared application instance. By combining the execution of multiple tenants within one process and using a shared class loader, the system reduces computing resource usage compared to conventional approaches that spawn separate processes or threads for each tenant, while still maintaining tenant isolation through container boundaries.

Inventive Principle:
Principle #5Merging (Combining)

2Reliability

If separate application instances are used for each tenant, then tenant isolation is improved, but device complexity and deployment complexity increase

Engineering Contradiction:
Improvetenant isolationVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system segments the application into isolated tenant containers within a single application instance, avoiding the need for multiple separate application instances. This segmentation provides tenant isolation through logical boundaries while simplifying the overall system architecture by maintaining a single deployment unit.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The shared class loader and single application instance serve multiple tenants simultaneously, demonstrating universality. The same application codebase and class loading mechanism are universally applied across all tenant containers, reducing complexity compared to having separate application instances for each tenant while maintaining isolation through container boundaries.

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

3Reliability

If separate class loaders are used for each tenant, then class isolation and security are improved, but memory usage and computing resources increase

Engineering Contradiction:
Improveclass isolationVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent merges the class loading functionality into a single shared class loader that serves all tenant containers. This shared class loader uses bytecode manipulation techniques to provide class-level isolation between tenants while physically sharing the same memory space and class loading infrastructure, thereby reducing memory usage compared to having separate class loaders for each tenant.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The shared class loader acts as an intermediary between the Java Virtual Machine and the multi-tenant application. It mediates class loading requests from different tenant containers, applying bytecode transformations to ensure class isolation while efficiently managing memory resources through a single instance rather than multiple redundant class loaders.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Use of energy by moving object

If a single application instance serves multiple tenants without logical separation, then computing resource usage is reduced, but tenant isolation and security are compromised

Engineering Contradiction:
Improvecomputing resource usageVSAvoidtenant isolation
Core Design Contradiction:
Use of energy by moving objectVSReliability

Solution Approach 1:

The system segments the single application instance into isolated tenant containers, each representing a distinct tenant's execution context. This segmentation provides logical separation of tenant data and functionality through container boundaries while maintaining a single shared application instance, thus achieving both resource efficiency and tenant isolation.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The tenant container mechanism acts as an intermediary layer between the shared application instance and individual tenants. It mediates access to application resources and data, providing logical isolation and security controls while allowing the underlying single application instance to efficiently share computing resources across all tenants.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8819210B2Multi-tenant infrastructure
Publication Date: 2014.08.26 SAP PORTALS ISRAEL
  • US8819210B2 patent drawing
  • US8819210B2 patent drawing

AI summary

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for providing a multi-tenant infrastructure. In one aspect, a method includes establishing a plurality of tenant containers for a plurality of tenants, each tenant container being a logical separation of data and functionality for a multi-tenant application, each tenant container being isolated from the other tenant containers. A request is received from a client device. The request is determined to be associated with one of the tenant containers. The request is directed to the tenant container associated with the request.