Dynamic Test Tenant Provisioning for Multi-Tenant Microservice Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for testing microservices in distributed computing environments, such as simulating production environments on local machines or provisioning static cloud environments, are costly, inefficient, and unreliable, leading to potential production issues and decreased developer productivity.

Innovation Solution

A system and method for configuring and provisioning a test tenant in a multi-tenant environment, where a test microservice is deployed alongside dependent microservices within the same instance as the production environment, using a 'light' version of the production environment configuration, which is automatically deprovisioned after testing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a static cloud environment is provisioned for testing microservices, then testing can be performed in a cloud-based environment, but resource requirements increase and cost becomes prohibitive

Engineering Contradiction:
Improvetesting reliabilityVSAvoidresource requirements
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The system segments the testing environment into isolated tenant instances within the multi-tenant SaaS platform. Each test tenant is a self-contained environment that can be independently provisioned and deprovisioned, allowing multiple developers to have separate test environments without requiring a single large static cloud environment. This segmentation enables efficient resource utilization while maintaining reliable testing conditions.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The testing environment transitions from a static cloud provisioning model to a dynamic on-demand model. Test tenants are automatically created when needed for testing specific microservices and automatically deprovisioned after testing completes. This dynamic approach allows the system to scale resources up when testing is required and down when not needed, eliminating the need for permanent static cloud environment provisioning.

Inventive Principle:
Principle #15Dynamics

2Quantity of substance

If multiple developer teams share a static system, then resource utilization improves, but developer productivity decreases due to inability to effectively share time

Engineering Contradiction:
Improveresource sharingVSAvoiddeveloper productivity
Core Design Contradiction:
Quantity of substanceVSProductivity

Solution Approach 1:

The system divides the multi-tenant platform into isolated tenant instances, where each developer or team gets their own dedicated test tenant. This segmentation provides full access and control to each developer without interference from others, eliminating the productivity issues associated with shared environments while still utilizing the underlying shared infrastructure efficiently.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Test tenants are automatically provisioned in advance when a developer needs to test a microservice, before the actual testing begins. This preliminary action ensures that developers have immediate access to a ready-to-use test environment without waiting for resource allocation or configuration, thereby maintaining high productivity while sharing the overall system infrastructure.

Inventive Principle:
Principle #10Preliminary action

3Quantity of substance

If testing is deferred until production deployment, then resource requirements are reduced, but rework increases and production issues occur

Engineering Contradiction:
Improveresource requirementsVSAvoidproduction reliability
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The system performs testing in advance of production deployment by automatically provisioning test tenants and executing tests against the microservices before they are deployed to production. This preliminary testing action identifies and resolves issues before they reach production, improving production reliability while using minimal resources since test tenants are temporarily created only when needed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system creates a copy of the production environment as a test tenant within the multi-tenant platform. This test tenant replicates the production environment's configuration and dependencies, allowing realistic testing to occur before production deployment. The copy is automatically deprovisioned after testing, so no permanent additional resources are required.

Inventive Principle:
Principle #26Copying

4Quantity of substance

If a test tenant is automatically deprovisioned after predetermined time, then resource utilization is optimized, but testing flexibility may be reduced

Engineering Contradiction:
Improveresource utilizationVSAvoidtesting flexibility
Core Design Contradiction:
Quantity of substanceVSAdaptability or versatility

Solution Approach 1:

The system implements a dynamic tenant lifecycle management system where test tenants are automatically provisioned when needed and automatically deprovisioned after a predetermined period or upon completion of testing. This dynamic approach optimizes resource utilization by ensuring test environments exist only when actively needed, while still providing full testing flexibility during the active period through complete environmental control and configuration options.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11580008B2Method and system for synchronous development and testing of live, multi-tenant microservices based SaaS systems
Publication Date: 2023.02.14 OPENGOV
  • US11580008B2 patent drawing
  • US11580008B2 patent drawing
  • US11580008B2 patent drawing

AI summary

The present disclosure provides techniques for configuring and provisioning a tenant for testing microservices in a multi-tenant instance. Code is committed for a modified microservice, and a configuration is received for a production tenant of the multi-tenant instance. The configuration is updated to include a reference to the updated microservice, and then provided to a provisioner that provisions a test tenant based on the configuration. The microservices for the test tenant are compared with versions in a code version management system and updated, then a reference to the test tenant is provided to a developer to test the modified microservice. The test tenant may be deprovisioned after a predetermined amount of time, by a command of the developer, or other automated method.