A deployment tool includes a memory and a hardware processor. The memory stores a solution matrix that indicates a first error, a second error, a first solution, and a second solution. The processor detects that a first piece of software has been deployed in a first environment and that a second piece of software has been deployed in a second environment. The processor also determines that the first error occurred when the first piece of software was deployed and that the second error occurred when the second piece of software was deployed. The processor determines that the first solution should be implemented to correct the first error and that the second solution should be implemented to correct the second error. The processor implements the first solution in the first environment and the second solution in the second environment.
|
11. A system comprising:
a first environment;
a second environment separate from the first environment; and
a deployment tool configured to:
store a solution matrix, the solution matrix comprises a first solution vector and a second solution vector, the first solution vector indicating a first likelihood that a first solution will correct a first error and a second likelihood that a second solution will correct the first error, the second solution vector indicating a third likelihood that the first solution will correct a second error and a fourth likelihood that the second solution will correct the second error;
detect that a first piece of software has been deployed in the first environment;
detect that a second piece of software has been deployed in the second environment;
determine that the first error occurred when the first piece of software was being deployed to the first environment;
determine that the second error occurred when the second piece of software was being deployed to the second environment;
determine that the first solution should be implemented to correct the first error in the first environment in response to determining that the first likelihood is higher than the second likelihood;
determine that the second solution should be implemented to correct the second error in the second environment in response to determining that the fourth likelihood is higher than the third likelihood;
in response to the determination that the first solution should be implemented, implement the first solution in the first environment; and
in response to the determination that the second solution should be implemented, implement the second solution in the second environment.
1. A deployment tool comprising:
a memory configured to store a solution matrix, the solution matrix comprises a first solution vector and a second solution vector, the first solution vector indicating a first likelihood that a first solution will correct a first error and a second likelihood that a second solution will correct the first error, the second solution vector indicating a third likelihood that the first solution will correct a second error and a fourth likelihood that the second solution will correct the second error; and
a hardware processor communicatively coupled to the memory, the hardware processor configured to:
detect that a first piece of software has been deployed in a first environment;
detect that a second piece of software has been deployed in a second environment separate from the first environment;
determine that the first error occurred when the first piece of software was being deployed to the first environment;
determine that the second error occurred when the second piece of software was being deployed to the second environment;
determine that the first solution should be implemented to correct the first error in the first environment in response to determining that the first likelihood is higher than the second likelihood;
determine that the second solution should be implemented to correct the second error in the second environment in response to determining that the fourth likelihood is higher than the third likelihood;
in response to the determination that the first solution should be implemented, implement the first solution in the first environment; and
in response to the determination that the second solution should be implemented, implement the second solution in the second environment.
6. A method comprising:
storing, by a memory, a solution matrix, the solution matrix comprises a first solution vector and a second solution vector, the first solution vector indicating a first likelihood that a first solution will correct a first error and a second likelihood that a second solution will correct the first error, the second solution vector indicating a third likelihood that the first solution will correct a second error and a fourth likelihood that the second solution will correct the second error; and
detecting, by a hardware processor communicatively coupled to the memory, that a first piece of software has been deployed in a first environment;
detecting, by the hardware processor, that a second piece of software has been deployed in a second environment separate from the first environment;
determining, by the hardware processor, that the first error occurred when the first piece of software was being deployed to the first environment;
determining, by the hardware processor, that the second error occurred when the second piece of software was being deployed to the second environment;
determining, by the hardware processor that the first solution should be implemented to correct the first error in the first environment in response to determining that the first likelihood is higher than the second likelihood;
determining, by the hardware processor that the second solution should be implemented to correct the second error in the second environment in response to determining that the fourth likelihood is higher than the third likelihood;
in response to the determination that the first solution should be implemented, implementing, by the hardware processor, the first solution in the first environment; and
in response to the determination that the second solution should be implemented, implementing, by the hardware processor, the second solution in the second environment.
2. The deployment tool of
3. The deployment tool of
determine that the first solution did not correct the first error; and
in response to the determination that the first solution did not correct the first error, implement the second solution in the first environment.
4. The deployment tool of
determine that the first error is critical and that the second error is non-critical; and
in response to the determination that the first error is critical and that the second error is non-critical, implement the first solution in the first environment before implementing the second solution in the second environment.
5. The deployment tool of
detect that a third error occurred when deploying the first piece of software;
determine that the solution matrix does not indicate the third error; and
communicate an alert indicating that the third error occurred and that the solution matrix does not indicate the third error.
7. The method of
8. The method of
determining, by the hardware processor, that the first solution did not correct the first error; and
in response to the determination that the first solution did not correct the first error, implementing, by the hardware processor, the second solution in the first environment.
9. The method of
determining, by the hardware processor, that the first error is critical and that the second error is non-critical; and
in response to the determination that the first error is critical and that the second error is non-critical, implementing, by the hardware processor, the first solution in the first environment before implementing the second solution in the second environment.
10. The method of
detecting, by the hardware processor, that a third error occurred when deploying the first piece of software;
determining, by the hardware processor, that the solution matrix does not indicate the third error; and
communicating, by the hardware processor, an alert indicating that the third error occurred and that the solution matrix does not indicate the third error.
12. The system of
13. The system of
determines that the first solution did not correct the first error; and
in response to the determination that the first solution did not correct the first error, implement the second solution in the first environment.
14. The system of
determine that the first error is critical and that the second error is non-critical; and
in response to the determination that the first error is critical and that the second error is non-critical, implement the first solution in the first environment before implementing the second solution in the second environment.
15. The system of
detect that a third error occurred when deploying the first piece of software;
determine that the solution matrix does not indicate the third error; and
communicate an alert indicating that the third error occurred and that the solution matrix does not indicate the third error.
|
This disclosure relates generally to software deployment.
Computers are used ubiquitously throughout organizations by members and employees to execute software. The software is typically deployed to these computers so that the computers can execute the software.
Computers are used ubiquitously throughout organizations by members and employees to execute software. The software is typically deployed to these computers so that the computers can execute the software. Even after the software is deployed, software updates and/or software patches are periodically deployed to the computers to update and/or repair the software. Each time a piece of software (e.g., the original software, a software update, and/or a software patch) is deployed, there is a chance that errors may occur. For example, a software update could be deployed to a wrong location. As another example, a software patch may introduce other errors and/or bugs. If these errors are not repaired, then the computer is not capable of executing the software for its intended use.
This disclosure contemplates a deployment tool that automatically determines whether errors occurred during deployment, determines solutions for the errors, and then implements the determined solutions. The deployment tool detects when a piece of software is deployed and then examines the deployment to determine whether an error occurred during deployment. The deployment tool then analyzes the error to determine a solution for the error and implements the solution. In this manner, the deployment tool repairs errors that occur during software deployment which ensures that the software is executable in certain embodiments. Three embodiments of the deployment tool are described below.
According to an embodiment, a deployment tool includes a memory and a hardware processor communicatively coupled to the memory. The memory stores a solution matrix. The solution matrix indicates a first error, a second error, a first solution, and a second solution. The processor detects that a first piece of software has been deployed in a first environment and that a second piece of software has been deployed in a second environment. The processor also determines that the first error occurred when the first piece of software was deployed and that the second error occurred when the second piece of software was deployed. The processor determines, based on the solution matrix, that the first solution should be implemented to correct the first error and determines, based on the solution matrix, that the second solution should be implemented to correct the second error. In response to the determination that the first solution should be implemented, the processor implements the first solution in the first environment. In response to the determination that the second solution should be implemented, the processor implements the second solution in the second environment.
According to another embodiment, a method includes storing, by a memory, a solution matrix. The solution matrix indicates a first error, a second error, a first solution, and a second solution. The method also includes detecting, by a hardware processor communicatively coupled to the memory, that a first piece of software has been deployed in a first environment and detecting, by the hardware processor, that a second piece of software has been deployed in a second environment. The method further includes determining, by the hardware processor, that the first error occurred when the first piece of software was deployed and determining, by the hardware processor, that the second error occurred when the second piece of software was deployed. The method also includes determining, by the hardware processor, based on the solution matrix, that the first solution should be implemented to correct the first error and determining, by the hardware processor, based on the solution matrix, that the second solution should be implemented to correct the second error. The method further includes in response to the determination that the first solution should be implemented, implementing, by the hardware processor, the first solution in the first environment and in response to the determination that the second solution should be implemented, implementing, by the hardware processor, the second solution in the second environment.
According to yet another embodiment, a system includes a first environment, a second environment, and a deployment tool. The deployment tool stores a solution matrix. The solution matrix indicates a first error, a second error, a first solution, and a second solution. The deployment tool also detects that a first piece of software has been deployed in the first environment and detects that a second piece of software has been deployed in the second environment. The deployment tool further determines that the first error occurred when the first piece of software was deployed and determines that the second error occurred when the second piece of software was deployed. The deployment tool also determines, based on the solution matrix, that the first solution should be implemented to correct the first error and determines, based on the solution matrix, that the second solution should be implemented to correct the second error. The deployment tool further in response to the determination that the first solution should be implemented, implements the first solution in the first environment and in response to the determination that the second solution should be implemented, implements the second solution in the second environment.
Certain embodiments provide one or more technical advantages. For example, an embodiment automatically repairs errors that occur during software deployment. As another example, an embodiment ensures that software remains executable after software update and patches are deployed. Certain embodiments may include none, some, or all of the above technical advantages. One or more other technical advantages may be readily apparent to one skilled in the art from the figures, descriptions, and claims included herein.
For a more complete understanding of the present disclosure, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which:
Embodiments of the present disclosure and its advantages are best understood by referring to
Computers are used ubiquitously throughout organizations by members and employees to execute software. The software is typically deployed to these computers so that the computers can execute the software. Even after the software is deployed, software updates and/or software patches are periodically deployed to the computers to update and/or repair the software. Each time a piece of software (e.g., the original software, a software update, and/or a software patch) is deployed, errors may occur. For example, a software update could be deployed to a wrong location. As another example, a software patch may introduce other errors and/or bugs. If these errors are not repaired, then the computer is not capable of executing the software for its intended use.
This disclosure contemplates a deployment tool that automatically determines whether errors occurred during deployment, determines solutions for the errors, and then implements the determined solutions. The deployment tool detects when a piece of software is deployed and then examines the deployment to determine whether an error occurred during deployment. The deployment tool then analyzes the error to determine a solution for the error and implements the solution. In this manner, the deployment tool repairs errors that occur during software deployment which ensures that the software is executable in certain embodiments. The deployment tool will be described using
Devices 110 are used by users 105 to create and/or deploy software 140 to environment 120. Devices 110 can also receive reports about the deployment of software 140 including any errors that were detected and/or resolved. In some embodiments, devices 110 are included in environments 120.
Devices 110 include any appropriate device for communicating with components of system 100 over network 115. For example, devices 110 may be a telephone, a mobile phone, a computer, a laptop, a tablet and/or an automated assistant. This disclosure contemplates device 110 being any appropriate device for sending and receiving communications over network 115. As an example and not by way of limitation, device 110 may be a computer, a laptop, a wireless or cellular telephone, an electronic notebook, a personal digital assistant, a tablet, or any other device capable of receiving, processing, storing, and/or communicating information with other components of system 100. Device 110 may also include a user interface, such as a display, a microphone, keypad, or other appropriate terminal equipment usable by user 105. In some embodiments, an application executed by device 110 may perform the functions described herein.
Network 115 facilitates communication between and amongst the various components of system 100. This disclosure contemplates network 115 being any suitable network operable to facilitate communication between the components of system 100. Network 115 may include any interconnecting system capable of transmitting audio, video, signals, data, messages, or any combination of the preceding. Network 115 may include all or a portion of a public switched telephone network (PSTN), a public or private data network, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a local, regional, or global communication or computer network, such as the Internet, a wireline or wireless network, an enterprise intranet, or any other suitable communication link, including combinations thereof, operable to facilitate communication between the components.
System 100 includes one or more environments 120. In the illustrated example of
Software 140 is deployed to environment 120. In the illustrated example of
Deployment tool 125 detects and repairs improper software deployment. As shown in
Processor 130 is any electronic circuitry, including, but not limited to microprocessors, application specific integrated circuits (ASIC), application specific instruction set processor (ASIP), and/or state machines, that communicatively couples to memory 140 and controls the operation of deployment tool 125. Processor 130 may be 8-bit, 16-bit, 32-bit, 64-bit or of any other suitable architecture. Processor 130 may include an arithmetic logic unit (ALU) for performing arithmetic and logic operations, processor registers that supply operands to the ALU and store the results of ALU operations, and a control unit that fetches instructions from memory and executes them by directing the coordinated operations of the ALU, registers and other components. Processor 130 may include other hardware and software that operates to control and process information. Processor 130 executes software stored on memory to perform any of the functions described herein. Processor 130 controls the operation and administration of deployment tool 125 by processing information received from network 115, device(s) 110, and memory 135. Processor 130 may be a programmable logic device, a microcontroller, a microprocessor, any suitable processing device, or any suitable combination of the preceding. Processor 130 is not limited to a single processing device and may encompass multiple processing devices.
Memory 135 may store, either permanently or temporarily, data, operational software, or other information for processor 130. Memory 135 may include any one or a combination of volatile or non-volatile local or remote devices suitable for storing information. For example, memory 135 may include random access memory (RAM), read only memory (ROM), magnetic storage devices, optical storage devices, or any other suitable information storage device or a combination of these devices. The software represents any suitable set of instructions, logic, or code embodied in a computer-readable storage medium. For example, the software may be embodied in memory 135, a disk, a CD, or a flash drive. In particular embodiments, the software may include an application executable by processor 130 to perform one or more of the functions described herein.
Memory 135 stores a solution matrix 145. Solution matrix 145 is used by deployment tool 125 to detect and/or assess errors in the deployment of software 140. Solution matrix 145 also indicates solutions for repairing errors. Deployment tool 125 uses solution matrix 145 to diagnose and to determine solutions to repair errors. Solution matrix 145 will be described in more detail using
Deployment tool 125 receives a log 150. Log 150 is generated and/or maintained by one or more devices in environment 120. In some embodiments, log 150 is aggregated amongst one or more environments 120. For example, log 150 may be an aggregated log for environments 120A and 120B. Log 150 indicates the status of one or more software deployments and environments 120. For example, log 150 can indicate the status of the deployment of software 140A in environment 120A and the status of the deployment of software 140B in environment 120B. These statuses can indicate that one or more errors have occurred in the deployment of software 140A and software 140B. For example, log 150 may indicate that software 140A is being deployed to an improper or wrong location in environment 120A. As another example, log 150 may indicate that software 140B has introduced bugs and/or errors to environment 120B.
Deployment tool 125 analyzes log 150 to determine errors 155 that occurred in the deployment of software 140. Deployment tool 125 can inspect the statuses indicated by log 150 to determine errors 155. In the illustrated example of
Deployment tool 125 uses solution matrix 145 to determine solutions 160 for repairing errors 155. After the solution 160 is determined, deployment tool 125 deploys the solution 160 to appropriate environment 120 to repair the error 155. In the illustrated example of
Deployment tool 125 generates a report 165 and communicates report 165 to notify users 105 of any detected errors 155 and solution 160. In this manner, users 105 may be alerted of any errors 155 and solutions 160 that deployment tool 125 has detected and/or implemented.
In particular embodiments, deployment tool 125 automatically detects errors 155 in the deployment of software 140 in environment 120. Deployment tool 125 then automatically determines a solution 160 for repairing error 155. Deployment tool 125 then deploys the determined solution 160. In this manner, software 140 is ensured to be executable in environment 120. The operation of deployment tool 125 will be described in more detail using
Deployment tool 125 receives log 150. Log 150 can be generated by various environments where software was deployed. In the illustrated example of
Deployment tool 125 can analyze each of the statuses 205 to determine whether an error 155 has occurred. In the illustrated example of
Deployment tool 125 uses solution matrix 145 to determine the appropriate course of action for a detected error 155. Solution matrix 145 indicates an error and possible solutions to that error. In the illustrated example of
Deployment tool 125 uses the solution vectors to determine possible solutions 160 for errors 155. In the illustrated example of
In some embodiments, deployment tool 125 generates and communicates an alert 210 if an error 155 does not have a corresponding entry or solution vector in solution matrix 145. In the illustrated example of
In certain instances, a deployed solution does not repair an error. In the illustrated example of
Deployment tool 125 generates and communicates report 165 to indicate the detected errors and the statuses of any repairs for those errors. For example, report 165 may indicate that Error 1 155A, Error 2 155B and Error 3 155C were detected. Report 165 may also indicate that Solution 1 160A and Solution 2 160B were deployed to repair Error 1 155A and Error 2 155B. Report 165 may also indicate that alert 210 was communicated for Error 3 155C because no corresponding entry or solution vector for Error 3 155C exists in solution matrix 145. In some instances, report 165 may also indicate that Solution 2 160B was deployed to repair Error 1 155A.
In particular embodiments, deployment tool 125 can determine a priority for detected errors 155. For example, solution matrix 145 may indicate whether a particular error 155 is critical or non-critical. Deployment tool 125 can then determine based on solution matrix 145 whether a detected error 155 is critical or non-critical. In response, deployment tool 125 can first deploy solutions for critical errors and then deploy solutions for non-critical errors. Using the example of
Deployment tool 125 begins by detecting that a first piece of software has been deployed in a first environment in step 305. In step 310, deployment tool 125 detects that a second piece of software has been deployed in a second environment. The first piece of software and the second piece of software may be one or more of a fresh installation of software, a software patch or a software update.
Deployment tool 125 determines that a first error occurred when the first piece of software was deployed in step 315. In step 320, deployment tool 125 determines that a second error occurred when the second piece of software was deployed. This disclosure contemplates any type of error occurring during the deployment of software. For example, the error may be that the software was deployed to an incorrect location. As another example, the error may be that the software introduced an error or bug into the environment.
Deployment tool 125 determines based on a stored solution matrix that a first solution should be implemented to correct the first error in step 325. In step 330, deployment tool 125 determines based on the solution matrix that a second solution should be implemented to correct the second error. This disclosure contemplates any solution being determined to correct an error. For example, the solution may be to move the software to a correct location. As another example, the solution may be to change and/or alter source code to correct any errors or bugs that were introduced.
Deployment tool 125 implements the first solution in the first environment in step 335. In step 340, deployment tool 125 implements the second solution in the second environment. In this manner, deployment tool 125 implements solutions to correct errors in one or more environments.
Modifications, additions, or omissions may be made to method 300 depicted in
Although the present disclosure includes several embodiments, a myriad of changes, variations, alterations, transformations, and modifications may be suggested to one skilled in the art, and it is intended that the present disclosure encompass such changes, variations, alterations, transformations, and modifications as fall within the scope of the appended claims.
Chauhan, Sandeep Kumar, Tatikonda, Srinivas
Patent | Priority | Assignee | Title |
11954468, | Jul 20 2021 | EMC IP HOLDING COMPANY LLC | AIML-based continuous delivery for networks |
Patent | Priority | Assignee | Title |
10108482, | Jun 20 2016 | Bank of America Corporation | Security patch tool |
10198255, | Jul 09 2013 | Oracle International Corporation | Method and system for reducing instability when upgrading software |
7246229, | Oct 23 2000 | Hewlett Packard Enterprise Development LP | Predicting the health of a system that would result from the application of a proposed intervention to an existing system |
7490073, | Dec 21 2004 | Citrix Systems, Inc | Systems and methods for encoding knowledge for automated management of software application deployments |
7624394, | Nov 18 2003 | Adobe Inc | Software installation verification |
7779402, | Aug 22 2006 | LinkedIn Corporation | System and method for fine grain method update of an application to provide continuous availability |
7788536, | Dec 21 2004 | Citrix Systems, Inc | Automated detection of problems in software application deployments |
7865888, | Dec 21 2004 | Citrix Systems, Inc | Systems and methods for gathering deployment state for automated management of software application deployments |
7870550, | Dec 21 2004 | Citrix Systems, Inc | Systems and methods for automated management of software application deployments |
7900201, | Dec 21 2004 | Citrix Systems, Inc | Automated remedying of problems in software application deployments |
7954090, | Dec 21 2004 | Citrix Systems, Inc | Systems and methods for detecting behavioral features of software application deployments for automated deployment management |
7996814, | Dec 21 2004 | Citrix Systems, Inc | Application model for automated management of software application deployments |
8001527, | Dec 21 2004 | Citrix Systems, Inc | Automated root cause analysis of problems associated with software application deployments |
8756576, | Aug 20 2008 | International Business Machines Corporation | Ranking peer submitted code snippets using execution feedback |
9026856, | Sep 06 2012 | Red Hat, Inc. | Predicting symptoms of run-time problems in view of analysis of expert decision making |
9176728, | Nov 12 2014 | Bank of America Corporation | Global software deployment/remediation management and associated analytics |
9424525, | Nov 18 2015 | International Business Machines Corporation | Forecasting future states of a multi-active cloud system |
9672252, | Mar 08 2012 | Hewlett-Packard Development Company, L.P. | Identifying and ranking solutions from multiple data sources |
20100333066, | |||
20150271008, | |||
20160246591, | |||
20160259638, | |||
20170337560, | |||
20180285750, | |||
20190087251, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Feb 21 2018 | TATIKONDA, SRINIVAS | Bank of America Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 045177 | /0242 | |
Feb 21 2018 | CHAUHAN, SANDEEP KUMAR | Bank of America Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 045177 | /0242 | |
Mar 12 2018 | Bank of America Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Mar 12 2018 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Sep 20 2023 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 21 2023 | 4 years fee payment window open |
Oct 21 2023 | 6 months grace period start (w surcharge) |
Apr 21 2024 | patent expiry (for year 4) |
Apr 21 2026 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 21 2027 | 8 years fee payment window open |
Oct 21 2027 | 6 months grace period start (w surcharge) |
Apr 21 2028 | patent expiry (for year 8) |
Apr 21 2030 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 21 2031 | 12 years fee payment window open |
Oct 21 2031 | 6 months grace period start (w surcharge) |
Apr 21 2032 | patent expiry (for year 12) |
Apr 21 2034 | 2 years to revive unintentionally abandoned end. (for year 12) |