IP Library Granted Patent US 8,150,948
Granted Patent B2
US 8,150,948 · App. 11/767,105 · Granted Apr 3, 2012

Complex software deployment

Assignee: Microsoft Corporation
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 8,150,948
App. No.
11/767,105
Granted
Apr 3, 2012
Kind
B2
Abstract

Systems and methods of deploying one or more software components to a target computer infrastructure are disclosed. A descriptor file that declares a desired state of one or more target computing devices of a target computer infrastructure is parsed. A live state of the one or more target computing devices is obtained. A set of target computing devices having the live state different from the desired state is identified. A plan script that includes deployment commands configured to deploy one or more software components to each computing device is generated. The plan script can be optimized such that when executed the software components are deployed with higher efficiency, system stability, minimum downtime, etc.

Claims (39)

1. One or more computer-readable memory devices or storage devices having computer-executable instructions thereon that, when executed, perform acts comprising:

obtaining live states of one or more target computing devices of a target computer infrastructure, the live states indicating software components currently installed on the one or more target computing devices;

parsing a descriptor file to retrieve configuration data that declares a desired state of the one or more target computing devices of the target computer infrastructure, the desired state indicating a first software component for installation on the one or more target computing devices;

identifying a set of individual target computing devices having corresponding live states indicating that the first software component is not installed;

generating a plan script that includes executable deployment commands, wherein the executable deployment commands are configured to call functions to deploy the first software component to the individual target computing devices such that the corresponding live states of the individual target computing devices are changed to the desired state;

determining, based on an administrator-configurable setting, when individual deployment commands are to be executed; and

executing the plan script to deploy the first software component to the set of individual target computing devices, wherein execution of at least one of the individual deployment commands is delayed for a predetermined period based on the administrator-configurable setting.

2. The one or more computer-readable memory devices or storage devices of claim 1 , wherein the target computer infrastructure is a network computer infrastructure.

3. The one or more computer-readable memory devices or storage devices of claim 1 , wherein obtaining the live states of the one or more target computing devices comprises querying the one or more target computing devices.

4. The one or more computer-readable memory devices or storage devices of claim 1 , wherein obtaining the live states of the one or more target computing devices comprises querying a live state database.

5. The one or more computer-readable memory devices or storage devices of claim 1 , wherein the first software component includes at least one of: a computer program, a decryption key, an encryption key, or a compression table.

6. The one or more computer-readable memory devices or storage devices of claim 1 , wherein the deployment commands are executable sequentially.

7. The one or more computer-readable memory devices or storage devices of claim 1 , the acts further comprising optimizing the plan script such that the deployment commands are executable in a pre-specified order to minimize downtime of the one or more target computing devices, or in a pre-specified order that maximizes the speed at which the plan script is executed.

8. The one or more computer-readable memory devices or storage devices of claim 1 , the acts further comprising optimizing the plan such that at least two of the deployment commands are executable simultaneously.

9. A method of deploying one or more software components to a target computer infrastructure, the method comprising:

obtaining live states of one or more target computing devices of the target computer infrastructure, the live states indicating software components currently installed on the one or more target computing devices;

parsing a descriptor file that declares a desired state of the one or more of target computing devices of the target computer infrastructure, the desired state indicating a first software component for use by the one or more target computing devices;

identifying a set of the one or more of the target computing devices having live states indicating that the first software component is not currently installed;

generating a plan script, wherein the plan script is generated in a procedural language that includes deployment commands configured to deploy the first software component to the identified set of target computing devices, wherein the first software component is configured to set configuration data in the identified set of target computing devices such that the live states of the identified set of target computing devices are changed to the desired state;

optimizing the plan script based on a configurable setting of a predetermined period for delaying execution of at least a first one of the deployment commands; and

executing the plan script to deploy the first software component to the identified set of target computing devices, wherein execution of the first deployment command is delayed based on the predetermined period.

10. The method of claim 9 , wherein the target computer infrastructure is a network computer infrastructure.

11. The method of claim 9 , further comprising obtaining the live states of the one or more target computing devices by querying the one or more target computing devices.

12. The method of claim 9 , further comprising obtaining the live states of the one or more target computing devices by querying a live state database.

13. The method of claim 9 , wherein the first software component includes at least one of: a computer program, a decryption key, an encryption key, or a compression table.

14. The method of claim 9 , wherein the executing comprises executing the deployment commands sequentially.

15. The method of claim 9 , wherein optimizing the plan script further comprises changing when individual deployment commands are to be executed to cause the deployment commands to be executable in a pre-specified order that maximizes efficiency.

16. The method of claim 9 , wherein the executing comprises executing the deployment commands such that at least two of the deployment commands are executed simultaneously.

17. A system comprising:

a plan generator configured to:

read a descriptor file that declares a desired state of a plurality of target computing devices of a target computer infrastructure, the desired state identifying a first software component for use by the plurality of target computing devices;

identify a set of individual target computing devices from the plurality of target computing devices, the set of individual target computing devices having individual corresponding live states indicating that the first software component is not currently installed, wherein live states of the plurality of target computing devices are obtained that indicate software components currently installed on the plurality of target computing devices; and

generate a plan script that includes computer commands that deploy the first software component to the identified set of individual target computing devices such that the individual corresponding live states of the identified set of individual target computing devices are changed to the desired state;

an optimization module configured to optimize the plan script based on a configurable delay setting;

a plan execution engine configured to execute the plan script to deploy the first software component to the identified set of individual target computing devices, wherein the plan execution engine delays executing at least one of the computer commands of the plan script based on the configurable delay setting; and

at least one processing unit configured to execute one or more of the plan generator, the optimization module, or the plan execution engine.

18. The system of claim 17 , wherein the optimization module is further configured to determine when individual computer commands are to be executed such that the individual computer commands are executed sequentially.

19. The system of claim 17 , wherein the optimization module is further configured to optimize the plan script such that the computer commands are executed in a pre-specified order that maximizes efficiency.

20. The one or more computer-readable memory devices or storage devices of claim 1 , wherein the first software component is not installed on any of the one or more target computing devices when the live states are obtained.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2007
From: ANDREWS, DUSTIN B.; MELESHCHUK, SERGEI B.; BLAKE, JOHN SHRIVER
To: MICROSOFT CORPORATION
Reel/Frame 019469/0864 →
Continuity (1)
Related Publication 20080320109A1 · Dec 25, 2008