IP Library Granted Patent US 11,288,053
Granted Patent B2
US 11,288,053 · App. 16/542,023 · Granted Mar 29, 2022

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 11,288,053
App. No.
16/542,023
Granted
Mar 29, 2022
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 (54)

1. A method comprising:

storing mapping data that maps settings and data elements of applications among different containers that are configured to provide different portions of the functionality of the applications;

obtaining an archive of configuration data for a server system, wherein the server system comprises an application that is configured to run on the server system and is not implemented as multiple containers on the server system;

identifying, based on contents of the archive, multiple software images of a container-based implementation of the application, wherein the multiple software images are configured to together provide functionality of the application when the multiple software images are run concurrently as respective containers; and

generating a set of the multiple software images to replicate the configuration of the application that is indicated in the archive, wherein the multiple software images in the set are generated such that they divide the functionality of the application among the respective containers, wherein generating the set of the multiple software images comprises:

identifying settings of the application from the configuration data in the archive;

selecting different subsets of the identified settings to apply to the multiple software images of the container-based implementation of the application, wherein the respective subsets are determined using the mapping data to select the settings applicable to the respective software images;

updating the selected subsets of settings by converting at least some of the settings selected for the software images into a form used by the software images; and

modifying the multiple software images of the container-based implementation of the application by applying, to each of the multiple software images, the updated subset of settings for the software image.

2. The method of claim 1 , wherein the server system comprises a cloud-based server system.

3. The method of claim 1 , wherein the server system comprises an on-premises server system.

4. The method of claim 1 , wherein the software images comprise a predetermined set of software images corresponding to the application, and

wherein generating the set of the multiple software images comprises updating the predetermined set of software images with the converted subsets of settings.

5. The method of claim 1 , comprising, before obtaining an archive of configuration data for a server system, creating the archive of configuration data for the server system,

wherein creating the archive comprises comparing settings of the server system to a set of reference settings and storing, in the archive, settings that are identified as different from corresponding settings in the set of reference settings based on the comparison, and

wherein obtaining the archive comprises accessing the stored archive.

6. The method of claim 5 , wherein creating the archive of configuration data comprises generating a ledger of elements of the application on the server system that are different from a reference configuration of the application.

7. The method of claim 1 , wherein the server system, and is a first server system, and

wherein the method further comprises executing the generated software images as containers using a second server system, such that the containers of the second server system provide the application in the same configuration that the application operated at the first server system.

8. The method of claim 1 , comprising storing the generated software images and making the generated software images available through a repository of software images.

9. The method of claim 1 , wherein the application is a first version of the application;

wherein the method comprises receiving an indication of a second version of the application to be used for a container-based implementation of the application, the second version being different from the first version, and the second version providing a different set of functionality compared to the first version; and

wherein converting the subsets of settings comprises translating settings for the first version to a set of settings for the second version.

10. The method of claim 1 , wherein the archive comprises data in a standard format for archiving data including at least one of OLAP data cubes, caches, database dumps, software images, plugins, or metadata configuration settings.

11. The method of claim 1 , comprising generating the archive of the application using an automated process performed by one or more computers.

12. The method of claim 1 , wherein the server system includes multiple applications and/or services, and the method comprises generating software images configured to replicate functionality of each of the multiple applications and/or services.

13. The method of claim 1 , wherein generating the software images comprises:

distributing data from the archive among the software images to locations that the software images are configured to retrieve the data when run as containers; and

modifying metadata from the archive to indicate file locations and hostnames that will be present when the software images are run as containers on a cluster.

14. The method of claim 1 , comprising generating initialization scripts for the software images, the initialization scripts being configured to receive configuration information from environment variables and start containers based on the software images.

15. The method of claim 1 , wherein generating the set of the multiple software images to replicate the configuration of the application comprises generating a set of the multiple software images to replicate the configuration of the application in a non-container-based environment to obtain functionality of the application in a container-based environment.

16. The method of claim 1 , wherein generating the set of the multiple software images to replicate the configuration of the application comprises generating a set of the multiple software images to replicate the configuration of a non-container-based application to create a container-based application.

17. 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 mapping data that maps settings and data elements of applications among different containers that are configured to provide different portions of the functionality of the applications;

obtaining an archive of configuration data for a server system, wherein the server system comprises an application that is configured to run on the server system and is not implemented as multiple containers on the server system;

identifying, based on contents of the archive, multiple software images of a container-based implementation of the application, wherein the multiple software images are configured to together provide functionality of the application when the multiple software images are run concurrently as respective containers; and

generating a set of the multiple software images to replicate the configuration of the application that is indicated in the archive, wherein the multiple software images in the set are generated such that they divide the functionality of the application among the respective containers, wherein generating the set of the multiple software images comprises:

identifying settings of the application based on the configuration data in the archive;

selecting different subsets of the identified settings to apply to the multiple software images of the container-based implementation of the application, wherein the respective subsets are determined using the mapping data to select the settings applicable to the respective software images;

updating the selected subsets of settings by converting at least some of the settings selected for the software images into a form used by the software images; and

modifying the multiple software images of the container-based implementation of the application by applying, to each of the multiple software images, the updated subset of settings for the software image.

18. The system of claim 17 , wherein the one or more computer-readable media storing instructions that, when executed, cause the one or more computers to perform further operations comprising creating the archive of configuration data for the server system, and

wherein creating the archive comprises comparing settings of the server system to a set of reference settings and storing, in the archive, settings identified as different from corresponding settings in the set of reference settings.

19. 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 mapping data that maps settings and data elements of applications among different containers that are configured to provide different portions of the functionality of the applications;

obtaining an archive of configuration data for a server system, wherein the server system comprises an application that is configured to run on the server system and is not implemented as multiple containers on the server system;

identifying, based on contents of the archive, multiple software images for a container-based implementation of the application, wherein the multiple software images are configured to together provide functionality of the application when the multiple software images are run concurrently as respective containers; and

generating a set of the multiple software images to replicate the configuration of the application that is indicated in the archive, wherein the multiple software images in the set are generated such that they divide the functionality of the application among the respective containers, wherein generating the set of the multiple software images comprises:

identifying settings of the application based on the configuration data in the archive;

selecting different subsets of the identified settings to apply to the different software images of the container-based implementation of the application, wherein the respective subsets are determined using the mapping data to select the settings applicable to the respective software images;

updating the selected subsets of settings by converting at least some of the settings selected for the software images into a form used by the software images; and

modifying the multiple software images of the container-based implementation of the application by applying, to each of the multiple software images, the updated subset of settings for the software image.

Assignments (5)
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 17, 2023
From: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
To: 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
Reel/Frame 062794/0255 →
SECURITY INTEREST Recorded Jun 22, 2021
From: MICROSTRATEGY INCORPORATED
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 056647/0687 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2019
From: MYERS, CLAYTON; MORRIS, BRETT E.; MEARS, ANDREW SCOTT; SHAH, SHREYAS; BONICA, MARTIN LUCIUS
To: MICROSTRATEGY INCORPORATED
Reel/Frame 050488/0329 →
Continuity (1)
Related Publication 20210048995A1 · Feb 18, 2021
Cited By (1)
US 12,260,205