IP Library › Granted Patent US 10,191,731
Granted Patent B2
US 10,191,731 · App. 15/635,084 · Granted Jan 29, 2019

Safe and agile rollouts in a network-accessible server infrastructure using slices

Inventors: Huaming Huang (Sammamish, WA); Yue Zhao (Redmond, WA); Muhammad Usman Sharif (Bothell, WA); Abhishek Singh (Redmond, WA); Avnish Kumar Chhabra (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/65H04L67/34
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 10,191,731
App. No.
15/635,084
Filed
Jun 27, 2017
Granted
Jan 29, 2019
Kind
B2
Examiner
LEE, MARINA
Art Unit
2192
USPC
717/172
Abstract

Methods, systems, and apparatuses manage rolling out of updates in a network-accessible server infrastructure which operates a plurality of instances of a supporting service. The supporting service is comprised by a plurality of service portions. The instances of the supporting service each include of the service portions. The instances of the supporting service are partitioned into a plurality of slices. Each instance is partitioned to include one or more of the slices, and each slice of an instance includes one or more of the service portions. A software update is deployed to the instances by applying the software update to the slices in a sequence such that the software update is applied to a same slice in parallel across the instances containing that same slice before being applied to a next slice, and waiting a wait time before applying the software domain to a next slice in the sequencing.

Claims (53)

1. A method of rolling out updates to a network-accessible server infrastructure which operates a plurality of instances of a supporting service, the supporting service comprised by a plurality of service portions, the instances of the supporting service each including the plurality of service portions, the method comprising:

receiving an indication of a partition of the instances of the supporting service into a plurality of slices, each instance of the supporting service partitioned to include one or more slices of the plurality of slices, each slice of an instance of the supporting service including one or more of the service portions of the instance of the supporting service; and

deploying a software update to the plurality of instances of the supporting service by

applying the software update to the plurality of slices in a sequence such that the software update is applied to a same slice in parallel across the instances of the supporting service containing that same slice before being applied to a next slice and

waiting a wait time after each applying of the software update to a slice of the plurality of slices before applying the software domain to a next slice of the plurality of slices in the sequence.

2. The method of claim 1 , wherein a first slice of the plurality of slices has complete configuration diversity coverage of the network-accessible server infrastructure.

3. The method of claim 1 , wherein a first slice of the plurality of slices has at least one of:

complete configuration diversity coverage of server hardware configurations included in the network-accessible server infrastructure, or

complete configuration diversity coverage of server software configurations included in the network-accessible server infrastructure.

4. The method of claim 1 , further comprising:

slicing the instances of the supporting service into the plurality of slices such that the slices increase in size in the sequence.

5. The method of claim 1 , wherein said waiting comprises:

decreasing the wait time for each iteration of said waiting after a first iteration of said waiting.

6. The method of claim 1 , wherein said waiting comprises:

during the wait time following the applying of the software update to a slice, monitoring the slice for failures caused by the software update; and

in response to the determination of a failure during said monitoring, terminating said deploying of the software update.

7. The method of claim 1 , wherein in a first instance of the instances of the supporting service, a first slice of the plurality of slices includes a first set of the service portions, and

in a second instance of the instances of the supporting service, the first slice of the plurality of slices includes a second set of the service portions that is different from the first set of the service portions.

8. A system, comprising:

at least one processor circuit; and

at least one memory that stores program code configured to be executed by the at least one processor circuit, the program code comprising:

a deployment orchestrator configured to roll out updates in a network-accessible server infrastructure which operates a plurality of instances of a supporting service, the supporting service comprised by a plurality of service portions, the instances of the supporting service each including the plurality of service portions, the deployment orchestrator configured to

receive an indication of a partition of the instances of the supporting service into a plurality of slices, each instance of the supporting service partitioned to include one or more slices of the plurality of slices, each slice of an instance of the supporting service including one or more of the service portions of the instance of the supporting service, and

deploy a software update to the plurality of instances of the supporting service, the deployment orchestrator including

an update sequencer configured to apply the software update to the slices in a sequence such that the software update is applied to a same slice in parallel across the instances of the supporting service containing that same slice before being applied to a next slice and

an update bake timer configured to enact a wait time after each applying of the software update to a slice of the plurality of slices by the update sequencer before enabling the update sequencer to apply the software domain to a next slice of the plurality of slices in the sequence.

9. The system of claim 8 , wherein a first slice of the plurality of slices has complete configuration diversity coverage of the network-accessible server infrastructure.

10. The system of claim 8 , wherein a first slice of the plurality of slices has at least one of:

complete configuration diversity coverage of server hardware configurations included in the network-accessible server infrastructure, or

complete configuration diversity coverage of server software configurations included in the network-accessible server infrastructure.

11. The system of claim 8 , wherein the deployment orchestrator further comprises:

a server slicer configured to slice the instances of the supporting service into the plurality of slices such that the slices increase in size in the sequence.

12. The system of claim 8 , wherein the update bake timer is further configured to decrease the wait time for each enacting of the wait time subsequent to a first enactment of the wait time.

13. The system of claim 8 , wherein the update bake timer is further configured to:

receive an indication of the failure caused by the software update; and

terminate the deploying of the software update if an indication of the failure caused by the software update is received.

14. The system of claim 8 , wherein in a first instance of the instances of the supporting service, a first slice of the plurality of slices includes a first set of the service portions, and

in a second instance of the instances of the supporting service, the first slice of the plurality of slices includes a second set of the service portions that is different from the first set of the service portions.

15. A computer-readable storage medium having program instructions recorded thereon that, when executed by at least one processing circuit, perform a method on a first computing device for rolling out updates to a network-accessible server infrastructure which operates a plurality of instances of a supporting service, the supporting service comprised by a plurality of service portions, the instances of the supporting service each including the plurality of service portions, the method comprising:

receiving an indication of a partition of the instances of the supporting service into a plurality of slices, each instance of the supporting service partitioned to include one or more slices of the plurality of slices, each slice of an instance of the supporting service including one or more of the service portions of the instance of the supporting service; and

deploying a software update to the plurality of instances of the supporting service by

applying the software update to the slices in a sequence such that the software update is applied to a same slice in parallel across the instances of the supporting service containing that same slice before being applied to a next slice and

waiting a wait time after each applying of the software update to a slice of the plurality of slices before applying the software domain to a next slice of the plurality of slices in the sequence.

16. The computer-readable storage medium of claim 15 , wherein a first slice of the plurality of slices has complete configuration diversity coverage of the network-accessible server infrastructure.

17. The computer-readable storage medium of claim 15 , further comprising:

slicing the instances of the supporting service into the plurality of slices such that the slices increase in size in the sequence.

18. The computer-readable storage medium of claim 15 , wherein said waiting comprises:

decreasing the wait time for each iteration of said waiting after a first iteration of said waiting.

19. The computer-readable storage medium of claim 15 , wherein said waiting comprises:

during the wait time following the applying of the software update to a slice, monitoring the slice for failures caused by the software update; and

in response to the determination of a failure during said monitoring, terminating said deploying of the software update.

20. The computer-readable storage medium of claim 15 , wherein in a first instance of the instances of the supporting service, a first slice of the plurality of slices includes a first set of the service portions, and

in a second instance of the instances of the supporting service, the first slice of the plurality of slices includes a second set of the service portions that is different from the first set of the service portions.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2017
From: HUANG, HUAMING; ZHAO, YUE; SHARIF, MUHAMMAD USMAN; SINGH, ABHISHEK; CHHABRA, AVNISH KUMAR
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042853/0753 →
Continuity (1)
Related Publication 20180373521A1 · Dec 27, 2018