IP Library Granted Patent US 12,411,677
Granted Patent B2
US 12,411,677 · App. 17/974,118 · Granted Sep 9, 2025

Deployment sequencing for dependent updates

Inventors: Dmitry Valentinovich Kholodkov (Seattle, WA); Rahul Nigam (Bothell, WA); Nidhi Verma (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/65G06F8/36G06F8/658G06F16/27H04L67/1001H04L67/34H04L67/60
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,411,677
App. No.
17/974,118
Granted
Sep 9, 2025
Kind
B2
Abstract

Systems and methods for deploying dependent updates include mechanisms for requiring that dependency information be provided for each update so that dependent updates may be identified. Update dependencies are tracked so that dependent updates are not deployed until parent updates have been completed. Deployment sequencing is implemented on top of existing asynchronous deployment policies so that asynchronous workflow remains intact and unaltered. The asynchronous workflow is upgraded to a synchronous (i.e., sequential) workflow for updates having dependencies to ensure that updates having dependencies are applied in the correct order.

Claims (75)

1. A data processing system for deployment of updates in a cloud-based service, comprising:

a processor; and

a memory in communication with the processor, the memory comprising executable instructions that, when executed by the processor, cause the data processing system to perform functions of:

receiving, at an input component of the update deployment system, a payload definition defining an update to be deployed to a group of computing resources of the cloud-based service, the payload definition including attribute information including dependency information for the update, wherein the update includes programmed instructions, scripts, configuration data, or content that defines one or more code updates, configuration changes, or customizations for the group of computing resources;

determining whether the update is a dependent update for a current deployment stage based on the dependency information; and

in response to the dependency information indicating that the update is a dependent update for the current deployment stage, performing a synchronous deployment process comprising:

creating an update stage with a sequence of work items in a waiting state, the work items for applying the update to the computing resources; and

performing a work item deployment process for a current work item in the sequence of work items, the work item deployment process including:

maintaining the current work item in the waiting state until all parent updates of the current work item have been completed;

after all of the parent updates of the current work item have been completed, changing the current work item from the waiting state to a created state and deploying the current work item to the update stage so that the current work item is applied to the computing resources;

after the current work item has been deployed, determining whether the dependency information indicates that the update is still a dependent update;

in response to the dependency information indicating that the update is still a dependent update, repeating the work item deployment process with a next work item in the sequence of work items as the current work item; and

in response to the dependency information indicating that the update is a non-dependent update, performing an asynchronous deployment process to deploy any remaining work items in the sequence of work items, the asynchronous deployment process including:

changing the remaining work items in the sequence of work items to the created state; and

deploying the remaining work items in the sequence of work items to the update stage asynchronously such that the remaining work items in the sequence of work items are applied to the computing resources without checking to see if parent updates associated with the remaining work items in the sequence of work items have already been applied to the computing resources,

wherein sequencing of the deployment is implemented concurrently with asynchronous deployment policies so that the asynchronous deployment process is unaltered.

2. The data processing system of claim 1 , wherein the work items are deployed based on a deployment policy determined for the update.

3. The data processing system of claim 1 , wherein the functions further comprise:

identifying a parent update based on the dependency information in the payload definition, the parent update being defined and deployed according to a previously submitted payload definition and including at least a parent work item that is to be performed to update a computing resource before a work item in the dependent update is performed to update the computing resource.

4. The data processing system of claim 3 , wherein the functions further comprise:

determining whether the current work item in the dependent update requires a parent work item in a parent update to be performed before the current work item is performed;

in response to determining that the current work item does not require a parent work item to be performed, changing the current work item from the waiting state to the created state and deploying the current work item to the update stage;

in response to determining that the current work item requires a parent work item in a parent update, determining whether the parent work item exists in the parent update;

in response to the parent work item not existing, creating the parent work item in the parent update for the current work item, maintaining the current work item in the waiting state until the parent work item has been completed, and then changing the current work item from the waiting state to the created state and deploying the current work item to the update stage; and

in response to determining that the parent work item exists in the parent update, changing the current work item from the waiting state to the created state and deploying the current work item to the update stage.

5. The data processing system of claim 1 , wherein the functions further comprise:

preventing suspension of a parent update while the update is still dependent upon the parent update.

6. The data processing system of claim 5 , wherein the functions further comprise:

preventing the suspension of the parent update until an indication is received that a dependency of the update on the parent update has been severed.

7. The data processing system of claim 5 , wherein the functions further comprise:

preventing the suspension of the parent update until an indication is received that a dependency of the update has been changed from the parent update to a new parent update.

8. A method of deploying dependent updates to a group of computing resources of a cloud-based service, the method comprising:

receiving, at an input component of a update deployment system, a payload definition defining an update to be deployed to a group of computing resources of the cloud-based service, the payload definition including attribute information including dependency information for the update, wherein the update includes programmed instructions, scripts, configuration data, or content that defines one or more code updates, configuration changes, or customizations for the group of computing resources;

determining whether the update is a dependent update for a current deployment stage based on the dependency information; and

in response to the dependency information indicating that the update is a dependent update for the current deployment stage, performing a synchronous deployment process comprising:

creating an update stage with a sequence of work items in a waiting state, the work items for applying the update to the computing resources; and

performing a work item deployment process for a current work item in the sequence, the work item deployment process including:

maintaining the current work item in the waiting state until all parent updates of the current work item have been completed;

after all of the parent updates of the current work item have been completed, changing the current work item from the waiting state to a created state and deploying the current work item to the update stage so that the current work item is applied to the computing resources;

after the current work item has been deployed, determining whether the dependency information indicates that the update is still a dependent update;

in response to the dependency information indicating that the update is still a dependent update, repeating the work item deployment process with a next work item in the sequence of work items as the current work item; and

in response to the dependency information indicating that the update is a non-dependent update, performing an asynchronous deployment process to deploy any remaining work items in the sequence of work items, the asynchronous deployment process including:

changing the remaining work items in the sequence of work items to the created state; and

deploying the remaining work items in the sequence of work items to the update stage asynchronously such that the remaining work items in the sequence of work items are applied to the computing resources without checking to see if parent updates associated with the remaining work items in the sequence of work items have already been applied to the computing resources,

wherein sequencing of the deployment is implemented concurrently with asynchronous deployment policies so that the asynchronous deployment process is unaltered.

9. The method of claim 8 , wherein the work items are deployed based on a deployment policy determined for the update.

10. The method of claim 8 , further comprising:

identifying a parent update based on the dependency information in the payload definition.

11. The method of claim 10 , further comprising:

determining whether the current work item in the dependent update requires a parent work item in a parent update to be performed before the current work item is performed;

in response to determining that the current work item does not require a parent work item to be performed, changing the current work item from the waiting state to the created state and deploying the current work item to the update stage;

in response to determining that the current work item requires a parent work item in a parent update, determining whether the parent work item exists in the parent update;

in response to the parent work item not existing, creating the parent work item in the parent update for the current work item, maintaining the current work item in the waiting state until the parent work item has been completed, and then changing the current work item from the waiting state to the created state and deploying the current work item to the update stage; and

in response to determining that the parent work item exists in the parent update, changing the current work item from the waiting state to the created state and deploying the current work item to the update stage.

12. A data processing system for an update deployment system of a cloud-based service, comprising:

a processor; and

a memory in communication with the processor, the memory comprising executable instructions that, when executed by the processor, cause the data processing system to perform functions of:

receiving, at an input component of the update deployment system, a payload definition defining an update to be deployed to a group of computing resources of the cloud-based service, the payload definition including dependency information;

determining based on the dependency information whether the current update is dependent upon a parent update, the parent update being previously deployed and including at least one parent work item that is to be performed to update a computing resource before a work item in the current update is performed to update the computing resource; and

in response to the dependency information indicating that the current update is a dependent update for a current deployment stage, performing a synchronous deployment process comprising:

creating an update stage with a sequence of work items in a waiting state, the work items for applying the update to the computing resources; and

performing a work item deployment process for a current work item in the sequence of work items, the work item deployment process including:

maintaining the current work item in the waiting state until all parent updates of the current work item have been completed;

after all of the parent updates of the current work item have been completed, changing the current work item from the waiting state to a created state and deploying the current work item to the current deployment stage so that the current work item is applied to the computing resources;

after the current work item has been deployed, determining whether the dependency information indicates that the current update is still a dependent update;

in response to the dependency information indicating that the current update is still a dependent update, repeating the work item deployment process with a next work item in the sequence of work items as the current work item; and

in response to the dependency information indicating that the update is a non-dependent update, performing an asynchronous deployment process to deploy any remaining work items in the sequence of work items, the asynchronous deployment process including:

changing the remaining work items in the sequence of work items to the created state; and

deploying the remaining work items in the sequence of work items to the update stage asynchronously such that the remaining work items in the sequence of work items are applied to the computing resources without checking to see if parent updates associated with the remaining work items in the sequence of work items have already been applied to the computing resources,

wherein sequencing of the deployment is implemented concurrently with asynchronous deployment policies so that the asynchronous deployment process is unaltered.

13. The data processing system of claim 12 , wherein:

the parent update is deployed to the current deployment stage concurrently with the current update.

14. The data processing system of claim 13 , wherein:

work items of the parent update are deployed to the current deployment stage using the synchronous deployment process while the work items of the parent update are dependent upon a previous update, and

the work items of the parent update are deployed to the current deployment stage using the asynchronous deployment process while the work items of the parent update are not dependent upon a previous update.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2022
From: KHOLODKOV, DMITRY VALENTINOVICH; NIGAM, RAHUL; VERMA, NIDHI
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 061547/0914 →
Continuity (1)
Related Publication 20240143303A1 · May 2, 2024
References Cited (15)
US 20040230619A1 · Blanco · 2004 [cited by examiner]
US 20050228798A1 · Shepard · 2005 [cited by examiner]
US 20060080651A1 · Gupta · 2006 [cited by examiner]
US 20060184927A1 · Deblaquiere · 2006 [cited by applicant]
US 20070143390A1 · Giambalvo · 2007 [cited by examiner]
US 20070240152A1 · Li · 2007 [cited by examiner]
US 20120272228A1 · Marndi · 2012 [cited by applicant]
US 20130227100A1 · Dobies · 2013 [cited by examiner]
US 20150358198A1 · Mahajan · 2015 [cited by examiner]
US 20190227794A1 · Mercille · 2019 [cited by examiner]
US 20200050444A1 · Nikam · 2020 [cited by applicant]
US 20210349710A1 · Kang · 2021 [cited by examiner]
US 20230244528A1 · Zhang · 2023 [cited by examiner]
International Search Report and Written Opinion received for PCT Application No. PCT/US2023/032814, Dec. 15, 2023, 17 pages. [cited by applicant]
International Preliminary Report on Patentability (Chapter 1) received for PCT Application No. PCT/US2023/032814, May 8, 2025, 12 pages. [cited by applicant]