Virtual Machine Differencing Disks for Software Build Management
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Software installation and update processes in hosted computing environments are resource-intensive and time-consuming due to large installation packages, and errors during updates can impact overall software performance, requiring costly rollback operations.
Innovation Solution
A deployment controller manages software builds using virtual machines, compiling code into installation packages, testing on a virtual hard drive, and deploying differencing disks to update software, monitoring performance, and rolling back if errors occur.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If traditional installation packages are used for software updates, then software can be installed or updated, but the process consumes large amounts of network resources and time due to the large size of installation packages
Solution Approach 1:
The installation package is segmented into a base image and incremental update packages. The base image contains the complete software installation, while update packages contain only the differences (incremental changes) from the base image. This segmentation allows the initial full installation and subsequent small incremental updates, reducing network resource consumption for updates while maintaining complete software functionality.
Solution Approach 2:
Instead of distributing complete installation packages for every update, the system creates virtual copies of the base image with incremental changes applied. These virtual copies are generated and applied locally or distributed as small differential packages, eliminating the need to transfer large complete installation packages for each update while ensuring software consistency.
2Reliability
If traditional installation packages are used for software updates, then software can be updated across multiple servers, but the process is time-consuming and resource-intensive
Solution Approach 1:
The base image is prepared and validated in advance before deployment. The complete software installation is built, tested, and approved as a baseline image beforehand. When updates are needed, only incremental changes are generated and applied to this pre-prepared base image across multiple servers, significantly reducing the time required for update deployment compared to distributing and installing complete packages on each server.
Solution Approach 2:
The update process is segmented into base image preparation (done once in advance) and incremental update application (done quickly across servers). This segmentation allows the time-consuming base image creation to be performed once, while subsequent updates across multiple servers use small incremental packages that apply rapidly, reducing overall update deployment time.
3Productivity
If software updates are deployed to multiple devices, then new versions can be made available across the system, but errors during installation can impact overall software performance and require costly rollback operations
Solution Approach 1:
The system implements a rollback mechanism that is prepared in advance. Each server maintains the ability to revert to the previous stable version if the new update proves problematic. This beforehand cushioning allows aggressive deployment of new versions across multiple devices while protecting system reliability, as failures can be quickly mitigated by rolling back to the pre-approved base image or previous version.
Solution Approach 2:
The system monitors software performance and detects errors after deployment. When errors are detected, the system provides feedback by identifying the problematic update and triggering automatic or manual rollback procedures. This feedback loop ensures that while new versions can be deployed broadly for productivity gains, system reliability is maintained through continuous monitoring and corrective action when issues arise.
Data Source
AI summary
Concepts and technologies are described herein for using virtual machines to manage software builds. A deployment controller manages deployment of a new software build. The deployment controller installs the new software build on test device and tests the new software build. If the new software build functions without errors, the new software build is deployed to hosts of a data center and monitored for errors. If errors are detected, the errors are reported to a developer associated with the new software build. In some embodiments, the deployment controller creates a differencing disk storing differences between the updated software build and an existing software build and uses the differencing disk for installing the new software build for testing and/or for deploying the new software build.


