Dynamic Test Tenant Provisioning for Multi-Tenant Microservice Testing
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
3Quantity of substance
If testing is deferred until production deployment, then resource requirements are reduced, but rework increases and production issues occur
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.
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.
4Quantity of substance
If a test tenant is automatically deprovisioned after predetermined time, then resource utilization is optimized, but testing flexibility may be reduced
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.
Data Source
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.


