IP Library Granted Patent US 11,625,231
Granted Patent B2
US 11,625,231 · App. 17/379,259 · Granted Apr 11, 2023

Controlling deployment of software applications based on evaluating dependencies of the software applications

Inventors: Subramanya Padubidri (Bangalore, IN); Vinay Kumar Mahadevappa (Mysore, IN); Chethan Kumar (Shimoga, IN); Deepa Muthusamy (Bangalore, IN)
Assignee: Dell Products L.P.
G06F8/65G06F8/71
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,625,231
App. No.
17/379,259
Granted
Apr 11, 2023
Kind
B2
Abstract

An apparatus comprises a processing device configured to monitor development of a plurality of software applications, to identify a first one of the plurality of software applications that has a given version ready for deployment to a production environment of an information technology infrastructure, and to determine at least one dependency between the given version of the first one of the plurality of software applications and a given version of at least a second one of the plurality of software applications. The processing device is further configured to control deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure based at least in part on evaluating a deployment status of the given version of the second one of the plurality of software applications.

Claims (51)

1. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

the at least one processing device being configured to perform steps of:

monitoring development of a plurality of software applications, wherein monitoring the development of the plurality of software applications comprises tracking a plurality of work items, each of the plurality of work items being associated with development of at least one version of at least one of the plurality of software applications, and wherein tracking the plurality of work items comprises analyzing one or more source code repositories utilized by the plurality of software applications to identify a sequence of commits of software code in two or more different branches of one or more branching models utilized by the one or more source code repositories;

identifying, based at least in part on the monitoring, a first one of the plurality of software applications that has a given version ready for deployment to a production environment of an information technology infrastructure;

generating, based at least in part on the monitoring, in one or more data structures of the memory, a dependency graph comprising a plurality of nodes representing the plurality of work items and edges connecting the nodes representing dependency relationships between the plurality of work items, wherein a first subset of the plurality of nodes represent software code of different ones of the plurality of work items and a second subset of the plurality of nodes represent natural language descriptions of software application features of different ones of the plurality of work items;

determining, based at least in part on processing by the processor of the one or more data structures comprising the generated dependency graph, at least one dependency between at least a first one of the plurality of work items associated with the given version of the first one of the plurality of software applications and at least a second one of the plurality of work items associated with a given version of at least a second one of the plurality of software applications, the at least one dependency being determined at least in part by identifying at least one of the edges of the dependency graph that connects (i) a given one of the nodes in the first subset of the plurality of nodes representing software code of the first work item for the given version of the first application and (ii) a given one of the nodes in the second subset of the plurality of nodes representing a natural language description of software application features of the second work item for the given version of the second application;

evaluating a deployment status of the given version of the second one of the plurality of software applications; and

controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure based at least in part on (i) the determined dependency between the first one of the plurality of work items associated with the given version of the first one of the plurality of software applications and the second one of the plurality of work items associated with the given version of the second one of the plurality of software applications, (ii) the evaluated deployment status of the given version of the second one of the plurality of software applications and (iii) a commit status of the first and second ones of the plurality of work items;

wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure comprises preventing deployment of at least a portion of one or more features of the given version of the first one of the plurality of software applications that have dependencies with the given version of the second one of the plurality of software applications.

2. The apparatus of claim 1 wherein the first one of the plurality of software applications is developed by a first software vendor and the second one of the plurality of software applications is developed by a second software vendor different than the first software vendor.

3. The apparatus of claim 1 wherein evaluating the deployment status of the given version of the second one of the plurality of software applications comprises determining whether the given version of the second one of the plurality of software applications has been deployed in the production environment of the information technology infrastructure.

4. The apparatus of claim 3 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure comprises, responsive to determining that the given version of the second one of the plurality of software applications has been deployed in the production environment of the information technology infrastructure, allowing deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure.

5. The apparatus of claim 3 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure comprises, responsive to determining that the given version of the second one of the plurality of software applications has not been deployed in the production environment of the information technology infrastructure, identifying the one or more features of the given version of the first one of the plurality of software applications that have dependencies with the given version of the second one of the plurality of software applications.

6. The apparatus of claim 5 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure further comprises determining whether the given version of the first one of the plurality of software applications has available feature toggles for the identified one or more features.

7. The apparatus of claim 6 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure further comprises, responsive to determining that the given version of the first one of the plurality of software applications has available feature toggles for the identified one or more features, utilizing the available feature toggles to disable the identified one or more features and allowing deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure with the identified one or more features disabled.

8. The apparatus of claim 7 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure further comprises, responsive to determining that the given version of the second one of the plurality of software applications has been deployed in the production environment of the information technology infrastructure subsequent to deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure with the identified one or more features disabled, utilizing the available feature toggles to enable the identified one or more features.

9. The apparatus of claim 6 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure further comprises, responsive to determining that the given version of the first one of the plurality of software applications does not have available feature toggles for the identified one or more features, blocking deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure.

10. The apparatus of claim 9 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure further comprises, responsive to determining that the given version of the second one of the plurality of software applications has been deployed in the production environment of the information technology infrastructure subsequent to blocking the deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure, allowing deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure.

11. The apparatus of claim 1 wherein the two or more different branches of the one or more branching models utilized by the one or more source code repositories comprise at least two of a feature branch, a develop branch and a master branch.

12. The apparatus of claim 1 wherein identifying the sequence of commits of the software code in the two or more different branches of the one or more branching models utilized by the one or more source code repositories comprises identifying commits that have changes merged from at least a first one of the two or more different branches associated with a non-production environment to at least a second one of the two or more different branches associated with the production environment.

13. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device comprising a processor coupled to a memory causes the at least one processing device to perform steps of:

monitoring development of a plurality of software applications, wherein monitoring the development of the plurality of software applications comprises tracking a plurality of work items, each of the plurality of work items being associated with development of at least one version of at least one of the plurality of software applications, and wherein tracking the plurality of work items comprises analyzing one or more source code repositories utilized by the plurality of software applications to identify a sequence of commits of software code in two or more different branches of one or more branching models utilized by the one or more source code repositories;

identifying, based at least in part on the monitoring, a first one of the plurality of software applications that has a given version ready for deployment to a production environment of an information technology infrastructure;

generating, based at least in part on the monitoring, in one or more data structures of the memory, a dependency graph comprising a plurality of nodes representing the plurality of work items and edges connecting the nodes representing dependency relationships between the plurality of work items, wherein a first subset of the plurality of nodes represent software code of different ones of the plurality of work items and a second subset of the plurality of nodes represent natural language descriptions of software application features of different ones of the plurality of work items;

determining, based at least in part on processing by the processor of the one or more data structures comprising the generated dependency graph, at least one dependency between at least a first one of the plurality of work items associated with the given version of the first one of the plurality of software applications and at least a second one of the plurality of work items associated with a given version of at least a second one of the plurality of software applications, the at least one dependency being determined at least in part by identifying at least one of the edges of the dependency graph that connects (i) a given one of the nodes in the first subset of the plurality of nodes representing software code of the first work item for the given version of the first application and (ii) a given one of the nodes in the second subset of the plurality of nodes representing a natural language description of software application features of the second work item for the given version of the second application;

evaluating a deployment status of the given version of the second one of the plurality of software applications; and

controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure based at least in part on (i) the determined dependency between the first one of the plurality of work items associated with the given version of the first one of the plurality of software applications and the second one of the plurality of work items associated with the given version of the second one of the plurality of software applications, (ii) the evaluated deployment status of the given version of the second one of the plurality of software applications and (iii) a commit status of the first and second ones of the plurality of work items;

wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure comprises preventing deployment of at least a portion of one or more features of the given version of the first one of the plurality of software applications that have dependencies with the given version of the second one of the plurality of software applications.

14. The computer program product of claim 13 wherein evaluating the deployment status of the given version of the second one of the plurality of software applications comprises determining whether the given version of the second one of the plurality of software applications has been deployed in the production environment of the information technology infrastructure, and wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure comprises, responsive to determining that the given version of the second one of the plurality of software applications has not been deployed in the production environment of the information technology infrastructure:

identifying the one or more features of the given version of the first one of the plurality of software applications that have dependencies with the given version of the second one of the plurality of software applications; and

determining whether the given version of the first one of the plurality of software applications has available feature toggles for the identified one or more features.

15. The computer program product of claim 14 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure further comprises:

responsive to determining that the given version of the first one of the plurality of software applications has available feature toggles for the identified one or more features, utilizing the available feature toggles to disable the identified one or more features and allowing deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure with the identified one or more features disabled; and

responsive to determining that the given version of the first one of the plurality of software applications does not have available feature toggles for the identified one or more features, blocking deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure.

16. A method performed by at least one processing device comprising a processor coupled to a memory, the method comprising:

monitoring development of a plurality of software applications, wherein monitoring the development of the plurality of software applications comprises tracking a plurality of work items, each of the plurality of work items being associated with development of at least one version of at least one of the plurality of software applications, and wherein tracking the plurality of work items comprises analyzing one or more source code repositories utilized by the plurality of software applications to identify a sequence of commits of software code in two or more different branches of one or more branching models utilized by the one or more source code repositories;

identifying, based at least in part on the monitoring, a first one of the plurality of software applications that has a given version ready for deployment to a production environment of an information technology infrastructure;

generating, based at least in part on the monitoring, in one or more data structures of the memory, a dependency graph comprising a plurality of nodes representing the plurality of work items and edges connecting the nodes representing dependency relationships between the plurality of work items, wherein a first subset of the plurality of nodes represent software code of different ones of the plurality of work items and a second subset of the plurality of nodes represent natural language descriptions of software application features of different ones of the plurality of work items;

determining, based at least in part on processing by the processor of the one or more data structures comprising the generated dependency graph, at least one dependency between at least a first one of the plurality of work items associated with the given version of the first one of the plurality of software applications and at least a second one of the plurality of work items associated with a given version of at least a second one of the plurality of software applications, the at least one dependency being determined at least in part by identifying at least one of the edges of the dependency graph that connects (i) a given one of the nodes in the first subset of the plurality of nodes representing software code of the first work item for the given version of the first application and (ii) a given one of the nodes in the second subset of the plurality of nodes representing a natural language description of software application features of the second work item for the given version of the second application;

evaluating a deployment status of the given version of the second one of the plurality of software applications; and

controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure based at least in part on (i) the determined dependency between the first one of the plurality of work items associated with the given version of the first one of the plurality of software applications and the second one of the plurality of work items associated with the given version of the second one of the plurality of software applications, (ii) the evaluated deployment status of the given version of the second one of the plurality of software applications and (iii) a commit status of the first and second ones of the plurality of work items;

wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure comprises preventing deployment of at least a portion of one or more features of the given version of the first one of the plurality of software applications that have dependencies with the given version of the second one of the plurality of software applications.

17. The method of claim 16 wherein evaluating the deployment status of the given version of the second one of the plurality of software applications comprises determining whether the given version of the second one of the plurality of software applications has been deployed in the production environment of the information technology infrastructure, and wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure comprises, responsive to determining that the given version of the second one of the plurality of software applications has not been deployed in the production environment of the information technology infrastructure:

identifying the one or more features of the given version of the first one of the plurality of software applications that have dependencies with the given version of the second one of the plurality of software applications; and

determining whether the given version of the first one of the plurality of software applications has available feature toggles for the identified one or more features.

18. The method of claim 17 wherein controlling deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure further comprises:

responsive to determining that the given version of the first one of the plurality of software applications has available feature toggles for the identified one or more features, utilizing the available feature toggles to disable the identified one or more features and allowing deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure with the identified one or more features disabled; and

responsive to determining that the given version of the first one of the plurality of software applications does not have available feature toggles for the identified one or more features, blocking deployment of the given version of the first one of the plurality of software applications in the production environment of the information technology infrastructure.

19. The method of claim 16 wherein the two or more different branches of the one or more branching models utilized by the one or more source code repositories comprise at least two of a feature branch, a develop branch and a master branch.

20. The method of claim 16 wherein identifying the sequence of commits of the software code in the two or more different branches of the one or more branching models utilized by the one or more source code repositories comprises identifying commits that have changes merged from at least a first one of the two or more different branches associated with a non-production environment to at least a second one of the two or more different branches associated with the production environment.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (058014/0560) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0473 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057931/0392) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0382 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057758/0286) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 061654/0064 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 058014/0560 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057758/0286 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057931/0392 →
SECURITY AGREEMENT Recorded Oct 1, 2021
From: DELL PRODUCTS, L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 057682/0830 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2021
From: PADUBIDRI, SUBRAMANYA; MAHADEVAPPA, VINAY KUMAR; KUMAR, CHETHAN; MUTHUSAMY, DEEPA
To: DELL PRODUCTS L.P.
Reel/Frame 056902/0864 →
Priority Claims (1)
IN 202141024942 · Jun 4, 2021 · national
Continuity (1)
Related Publication 20220391189A1 · Dec 8, 2022