IP Library › Granted Patent US 12,204,411
Granted Patent B2
US 12,204,411 · App. 17/462,802 · Granted Jan 21, 2025

Dark deployment of infrastructure cloud service components for improved safety

Inventors: Nidhi Verma (Redmond, WA); Hans Christian Andersen (Seattle, WA); Pritvinath Obla (Bellevue, WA); Daniel Oh (Redmond, WA); Rahul Nigam (Bothell, WA); Rohan Khanna (Redmond, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F11/1433G06F8/65G06F9/44505G06F9/45558G06F9/5072G06F2009/4557
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,204,411
App. No.
17/462,802
Granted
Jan 21, 2025
Kind
B2
Abstract

The techniques disclosed herein enable systems to safely deploy a plurality of upgrade variants to different resource units that provide a service by utilizing small-scale deployment and validation. To deploy upgrade variants, a system receives a selection of upgrade variants from a feature group and automatically selects an appropriate set of resource units at which to deploy the upgrade variants. The system is further configured to collect and analyze telemetry data from the set of resource units to determine if any problems have occurred as a result of the deployed upgrade variants. By analyzing the telemetry data, the system can also identify one or more upgrade variants that are causing the problems. In response, the system can remove the identified variants and proceed with deployment of the remaining upgrade variants.

Claims (70)

1. A method for deploying an upgrade to a network computing environment that comprises a plurality of resource units, the method comprising:

receiving a plurality of variants of the upgrade, wherein one or more features of each variant of the plurality of variants is different from other variants of the plurality of variants;

selecting a subset of resource units from the plurality of resource units wherein:

the plurality of resource units comprises a first number of resource units;

the subset of resource units comprises a second number of resource units; and

the second number of resource units is less than the first number of resource units;

receiving a deployment configuration including a setting defining a time period that is predefined by a feature group deploying the upgrade, wherein the time period ensures a maximal traffic to the upgrade;

deploying the plurality of variants of the upgrade to the subset of resource units during the time period;

collecting, by one or more processing units, telemetry data from the plurality of variants at the subset of resource units;

analyzing the telemetry data to detect that a problem has occurred at the subset of resource units in response to execution of the plurality of variants of the upgrade;

identifying, based at least in part on the analysis, a variant that caused the problem that occurred at the subset of resource units;

modifying the upgrade to isolate the identified variant; and

deploying the plurality of variants of the upgrade, excluding the identified variant, to the plurality of resource units.

2. The method of claim 1 , further comprising:

modifying the identified variant to prevent additional problems; and

deploying the modified identified variant to the plurality of resource units.

3. The method of claim 1 , wherein an individual resource unit of the plurality of resource units comprises a virtual machine, a physical machine, a network device, or a container.

4. The method of claim 1 , wherein the upgrade comprises at least one of a software update, a firmware update, a security update, or a configuration change.

5. The method of claim 1 , wherein the subset of resource units is selected based on at least one of a resource type of the subset of resource units, a configuration type of the subset of resource units, an upgrade type of the plurality of variants, or a variant identifier of the plurality of variants.

6. The method of claim 1 , wherein a size of the subset of resource units is determined based on a number of variants of the plurality of variants.

7. The method of claim 1 , further comprising:

determining a level of performance for each variant;

determining that the level of performance for one or more variants does not satisfy a threshold level of performance; and

in response to the determining, removing the one or more variants from the plurality of variants for deployment.

8. A system for deploying an upgrade to a network computing environment that comprises a plurality of resource units comprising:

one or more processing units; and

a computer-readable medium having encoded thereon computer-readable instructions, that when executed by the one or more processing units cause the system to:

receive a plurality of variants of the upgrade, wherein one or more features of each variant of the plurality of variants is different from other variants of the plurality of variants;

select a subset of resource units from the plurality of resource units wherein:

the plurality of resource units comprises a first number of resource units;

the subset of resource units comprises a second number of resource units; and

the second number of resource units is less than the first number of resource units;

receive a deployment configuration including a setting defining a time period that is predefined by a feature group deploying the upgrade, wherein the time period ensures a maximal traffic to the upgrade;

deploy the plurality of variants of the upgrade to the selected subset of resource units during the time period;

collect telemetry data from the plurality of variants at the subset of resource units;

analyze the telemetry data to detect that a problem has occurred at the subset of resource units in response to execution of the plurality of variants of the upgrade;

identify, based at least in part on the analysis, a variant that caused the problem that occurred at the subset of resource units;

modify the upgrade to isolate the identified variant; and

deploy the plurality of variants of the upgrade, excluding the identified variant, to the plurality of resource units.

9. The system of claim 8 , wherein the computer-readable instructions further cause the one or more processing units to:

modify the identified variant to prevent additional problems; and

deploy the modified identified variant to the plurality of resource units.

10. The system of claim 8 , wherein an individual resource unit of the plurality of resource units comprises a virtual machine, a physical machine, a network device, or a container.

11. The system of claim 8 , wherein the subset of resource units is selected based on at least one of a resource type of the subset of resource units, a configuration type of the subset of resource units, an upgrade type of the plurality of variants, or a variant identifier of the plurality of variants.

12. The system of claim 8 , wherein the computer-readable instructions further cause the one or more processing units to:

determine a level of performance for each variant;

determine that the level of performance for one or more variants does not satisfy a threshold level of performance; and

in response to the determining, remove the one or more variants from the plurality of variants for deployment.

13. A system for deploying an upgrade to a network computing environment that comprises a plurality of resource units comprising:

one or more processing units; and

a computer-readable medium having encoded thereon computer-readable instructions, that when executed by the one or more processing units cause the system to:

receive a plurality of variants of the upgrade, wherein one or more features of each variant of the plurality of variants is different from other variants of the plurality of variants;

select a subset of resource units from the plurality of resource units wherein:

the plurality of resource units comprises a first number of resource units;

the subset of resource units comprises a second number of resource units; and

the second number of resource units is less than the first number of resource units;

receive a deployment configuration including a setting defining a time period that is predefined by a feature group deploying the upgrade, wherein the time period ensures a maximal traffic to the upgrade;

deploy the plurality of variants of the upgrade to the selected subset of resource units during the time period;

collect telemetry data from the plurality of variants at the subset of resource units;

analyze the telemetry data to determine a level of performance for each variant in response to execution of the plurality of variants of the upgrade;

determine that the level of performance for one or more variants does not satisfy a threshold level of performance;

in response to the determining, remove the one or more variants from the plurality of variants for deployment; and

deploy the plurality of variants of the upgrade, excluding the one or more variants that do not satisfy the threshold level of performance, to the plurality of resource units.

14. The system of claim 13 , wherein the upgrade comprises at least one of a software update, a firmware update, a security update, or a configuration change.

15. The system of claim 13 , wherein the computer-readable instructions further cause the one or more processing units to:

compare a first level of performance for a first variant and a second level of performance for a second variant;

determine that the first level of performance exceeds the second level of performance; and

remove the second variant from the plurality of variants for deployment.

16. The system of claim 13 , wherein the subset of resource units is selected based on at least one of a resource type of the subset of resource units, a configuration type of the subset of resource units, an upgrade type of the plurality of variants, or a variant identifier of the plurality of variants.

17. The system of claim 13 , wherein a size of the subset of resource units is determined based on a number of variants of the plurality of variants.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2021
From: VERMA, NIDHI; ANDERSEN, HANS CHRISTIAN; OBLA, PRITVINATH; OH, DANIEL; NIGAM, RAHUL; KHANNA, ROHAN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 057344/0001 →
Continuity (1)
Related Publication 20230067057A1 · Mar 2, 2023
References Cited (17)
US 10606577B1 · Benson · 2020 [cited by examiner]
US 10747520B2 · Shepard · 2020 [cited by examiner]
US 20100299664A1 · Taylor · 2010 [cited by examiner]
US 20130247022A1 · DeJana · 2013 [cited by examiner]
US 20160162322A1 · Wu et al. · 2016 [cited by applicant]
US 20160306735A1 · Adderly et al. · 2016 [cited by applicant]
US 20170249763A1 · Garvey · 2017 [cited by examiner]
US 20170364345A1 · Fontoura et al. · 2017 [cited by applicant]
US 20180136960A1 · Zhang et al. · 2018 [cited by applicant]
US 20180302303A1 · Skovron et al. · 2018 [cited by applicant]
US 20190034315A1 · Acosta · 2019 [cited by examiner]
US 20190213111A1 · Fink et al. · 2019 [cited by applicant]
US 20200387401A1 · Zhou et al. · 2020 [cited by applicant]
US 20200403855A1 · Sarood · 2020 [cited by examiner]
Chandrakala, et al., “Migration of Virtual Machine to Improve the Security of Cloud Computing”, In International Journal of Electrical and Computer Engineering, vol. 8, Issue 1, Feb. 1, 2018, pp. 210-219. [cited by applicant]
Zhang, et al. “CloudVisor: Retrofitting Protection of Virtual Machines in Multi-tenant Cloud with Nested Virtualization”, In Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles, Oct. 23, 2011, … [cited by applicant]
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US22/036158”, Mailed Date: Oct. 20, 2022, 14 Pages. [cited by applicant]