Partially Provisioned Virtual Machines for Faster User-Specific Deployment
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing virtual machine deployment systems take significant time to spin-up following customer requests due to the need for complete provisioning and configuration from scratch.
Innovation Solution
Maintaining a pool of partially provisioned virtual machines that are configured except for user-specific settings, allowing them to be quickly converted to fully configured VMs upon request without rebooting, using generic artifacts and placeholders for user-specific settings.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If virtual machines are provisioned from scratch following customer requests, then complete configuration and customization are achieved, but deployment time increases significantly
Solution Approach 1:
The system pre-provisions virtual machines with generic configurations, operating systems, and basic settings before customer requests are received. This preliminary preparation allows the VMs to be quickly converted to fully configured states upon request without needing to build everything from scratch, thereby reducing deployment time while maintaining configuration completeness.
Solution Approach 2:
The configuration process is divided into two segments: a generic base configuration that is prepared in advance, and user-specific settings that are applied later. This segmentation allows the bulk of the provisioning work to be done beforehand while leaving only the customization steps for when the customer actually needs the VM, resolving the contradiction between speed and completeness.
2Productivity
If partially provisioned VMs are used to reduce spin-up time, then deployment speed improves, but configuration accuracy may be compromised
Solution Approach 1:
The system performs preliminary provisioning of VMs with generic artifacts and placeholder configurations, then completes the configuration process by applying user-specific settings in a controlled manner. This two-stage approach ensures both speed (from pre-provisioning) and accuracy (from targeted configuration application).
Solution Approach 2:
The system introduces an intermediary configuration application layer that takes the partially provisioned VM and applies the correct user-specific settings to it. This intermediary mechanism ensures that configuration accuracy is maintained while benefiting from the speed of using pre-provisioned VMs, as the intermediary carefully applies only the necessary customizations.
3Speed
If generic artifacts and placeholders are used for VM configuration, then configuration speed increases, but user-specific customization is delayed
Solution Approach 1:
The system prepares generic artifacts and placeholder configurations in advance, allowing rapid initialization of VMs. When user-specific customization is needed, the system quickly applies the appropriate settings to the pre-provisioned VM, achieving both speed and adaptability through this staged approach.
Solution Approach 2:
The configuration system is designed to be dynamic, allowing the VM to transition from a static generic state to a customized user-specific state. The system can adaptively apply different user-specific settings based on the actual customer requirements while maintaining the benefit of starting from a pre-provisioned base, thus achieving both speed and versatility.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
The disclosed technology is generally directed to virtual machines. In one example of the technology, generic virtual machine artifacts are created. The generic virtual machine artifacts include at least one generic compute artifact and at least one generic network artifact. A first virtual machine is composed and booted with the generic virtual machine artifacts. The first virtual machine is caused to enter a state in which the first virtual machine is polling for a configuration with user-specific compute settings, user-specific networking settings, and user-specific storage settings.