IP Library Granted Patent US 12,118,341
Granted Patent B2
US 12,118,341 · App. 17/665,119 · Granted Oct 15, 2024

Conversion and restoration of computer environments to container-based implementations

Inventors: Clayton Myers (Oak Hill, VA); Brett E. Morris (Arlington, VA); Andrew Scott Mears (Leesburg, VA); Shreyas Shah (Vienna, VA); Martin Lucius Bonica (Leesburg, VA)
Assignee: MicroStrategy Incorporated
G06F8/63G06F8/60G06F8/61G06F8/65G06F8/71G06F11/1451G06F11/1469G06F2201/84
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,118,341
App. No.
17/665,119
Granted
Oct 15, 2024
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer-storage media, for conversion and restoration of computer environments to container-based implementations. In some implementations, an archive of configuration data for a server system is obtained, where the server system includes at least one application. A set of multiple software images is generated, where the multiple software images are generated such that they divide the functionality of at least one application among the respective containers. In generating the set of multiple software images, settings of the at least one application are identified based on the configuration data in the archive, a subset of the settings is selected for each of the software images, and the selected subsets of settings are converted into converted subsets of settings for the respective software images.

Claims (52)

1. A method comprising:

storing, by one or more computers, mapping data that maps settings and data elements from source server environments to containers of destination server environments, wherein the mapping data specifies different subsets of the settings and data elements from source server environments to be used in configuring different containers of destination server environments;

obtaining, by the one or more computers, settings and data elements of a particular server environment that provides functionality that is not implemented as containers;

selecting, by the one or more computers, multiple software images to use in providing a container-based implementation of the functionality of the particular server environment, the multiple software images being selected from a repository of container software images;

for each of the multiple software images selected, using, by the one or more computers, the mapping data to select a subset of the settings and data elements of the particular server environment for configuring the software image; and

applying, by the one or more computers, the selected subsets of the settings and data elements to the corresponding software images in the set of multiple software images, wherein the set of multiple software images is configured to operate together to provide the functionality of the particular server environment when the set of software images are run concurrently as containers.

2. The method of claim 1 , further comprising creating a second server environment with the container-based implementation of the functionality of the particular server environment by creating a container for each of the software images in the set of multiple software images.

3. The method of claim 1 , comprising transmitting the set of multiple software images to a server system, wherein the server system is configured to run the software images in the set concurrently as respective containers to provide the functionality of the particular server environment.

4. The method of claim 3 , wherein transmitting the set of multiple software images to the server system comprises transmitting the set of multiple software images to the server system before applying a subset of the settings and data elements to the software image.

5. The method of claim 1 , wherein applying the selected subsets of the settings and data elements to the corresponding software images comprises associating each of the software images in the set of multiple software images with a corresponding configuration file;

wherein, for at least one of the software images in the set of multiple software images, the configuration file for the software image is based on the subset of settings and data elements selected for the software image; and

wherein each of the software images is configured to access the associated configuration file when the software image is run as a container.

6. The method of claim 5 , wherein each of the configuration files specifies a set of parameters for operation of a container for the corresponding software image or for software running in the container for the corresponding software image.

7. The method of claim 6 , wherein the parameters specify at least one of the following:

a hardware resource allocation for a container that runs an instance of the software image that accesses a configuration file with the parameters;

a network port assignment for a container that runs an instance of the software image that accesses a configuration file with the parameters;

a cache size for a container that runs an instance of the software image that accesses a configuration file with the parameters; and

a capacity limit for a container that runs an instance of the software image that accesses a configuration file with the parameters.

8. The method of claim 5 , comprising generating or updating the configuration files based on the subsets of the settings and data elements selected using the mapping data such that content configuration files configure containers with the corresponding software images to replicate the functionality of the particular server environment.

9. The method of claim 1 , wherein applying the selected subsets of the settings and data elements to the corresponding software images comprises modifying one or more of the software images in the set of multiple software images using the corresponding subset of the settings and data elements.

10. The method of claim 9 , wherein modifying one or more of the software images in the set of multiple software images comprises:

for each of the one or more software images, using the subset of the settings and data elements selected for the software image to modify one or more of:

a dependency for the software image;

a software library for the software image;

a tool for the software image;

metadata for the software image; or

a setting for the software image.

11. The method of claim 9 , wherein each of the software images includes a set of read-only layers, and

wherein modifying one or more of the software images in the set of multiple software images comprises adding one or more layers to the set of read-only layers of the software image.

12. The method of claim 1 , wherein selecting the set of multiple software images comprises selecting a predetermined set of one or more software images that corresponds to software of the particular server environment.

13. The method of claim 12 , wherein the set of multiple software images includes one or more software images in addition to the one or more software images in the predetermined set.

14. The method of claim 1 , wherein applying the selected subsets of the settings and data elements to the corresponding software images comprises associating each of the software images in the set of multiple software images with a corresponding configuration file.

15. A system comprising:

one or more computers; and

one or more computer-readable media storing instructions that, when executed, cause the one or more computers to perform operations comprising:

storing, by the one or more computers, mapping data that maps settings and data elements from source server environments to containers of destination server environments, wherein the mapping data specifies different subsets of the settings and data elements from source server environments to be used in configuring different containers of destination server environments;

obtaining, by the one or more computers, settings and data elements of a particular server environment that provides functionality that is not implemented as containers;

selecting, by the one or more computers, multiple software images to use in providing a container-based implementation of the functionality of the particular server environment, the multiple software images being selected from a repository of container software images;

for each of the multiple software images selected, using, by the one or more computers, the mapping data to select a subset of the settings and data elements of the particular server environment for configuring the software image; and

applying, by the one or more computers, the selected subsets of the settings and data elements to the corresponding software images in the set of multiple software images, wherein the set of multiple software images is configured to operate together to provide the functionality of the particular server environment when the set of software images are run concurrently as containers.

16. The system of claim 15 , further comprising creating a second server environment with the container-based implementation of the functionality of the particular server environment by creating a container for each of the software images in the set of multiple software images.

17. The system of claim 15 , comprising transmitting the set of multiple software images to a server system, wherein the server system is configured to run the software images in the set concurrently as respective containers to provide the functionality of the particular server environment.

18. The system of claim 17 , wherein transmitting the set of multiple software images to the server system comprises transmitting the set of multiple software images to the server system before applying a subset of the settings and data elements to the software image.

19. The system of claim 15 , wherein applying the selected subsets of the settings and data elements to the corresponding software images comprises associating each of the software images in the set of multiple software images with a corresponding configuration file;

wherein, for at least one of the software images in the set of multiple software images, the configuration file for the software image is based on the subset of settings and data elements selected for the software image; and

wherein each of the software images is configured to access the associated configuration file when the software image is run as a container.

20. One or more non-transitory computer-readable media storing instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising:

storing, by the one or more computers, mapping data that maps settings and data elements from source server environments to containers of destination server environments, wherein the mapping data specifies different subsets of the settings and data elements from source server environments to be used in configuring different containers of destination server environments;

obtaining, by the one or more computers, settings and data elements of a particular server environment that provides functionality that is not implemented as containers;

selecting, by the one or more computers, multiple software images to use in providing a container-based implementation of the functionality of the particular server environment, the multiple software images being selected from a repository of container software images;

for each of the multiple software images selected, using, by the one or more computers, the mapping data to select a subset of the settings and data elements of the particular server environment for configuring the software image; and

applying, by the one or more computers, the selected subsets of the settings and data elements to the corresponding software images in the set of multiple software images, wherein the set of multiple software images is configured to operate together to provide the functionality of the particular server environment when the set of software images are run concurrently as containers.

Assignments (4)
CHANGE OF NAME Recorded Sep 19, 2025
From: MICROSTRATEGY INCORPORATED
To: STRATEGY INC
Reel/Frame 072974/0529 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT REEL/FRAME: 056647/0687, REEL/FRAME: 057435/0023, REEL/FRAME: 059256/0247, REEL/FRAME: 062794/0255 AND REEL/FRAME: 066663/0713 Recorded Sep 26, 2024
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
To: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
Reel/Frame 069065/0539 →
SUPPLEMENTARY PATENT SECURITY AGREEMENT Recorded Feb 18, 2022
From: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 059256/0247 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2022
From: MYERS, CLAYTON; MORRIS, BRETT E.; MEARS, ANDREW SCOTT; SHAH, SHREYAS; BONICA, MARTIN LUCIUS
To: MICROSTRATEGY INCORPORATED
Reel/Frame 058914/0629 →
Continuity (2)
Continuation 16542023 · Aug 15, 2019
Related Publication 20220229649A1 · Jul 21, 2022