Reducing downtime when patching multiple inter-dependent software components
First Claim
Patent Images
1. A computing system comprising:
- a set of systems to store a plurality of software components implementing an enterprise application containing a plurality of layers, wherein software components in each layer are designed to provide services to software components in higher layers while using services provided by software components in lower layers, wherein said plurality of software components are inter-dependent on each other according to a dependency order, wherein a first software component is dependent on a second software component, which in turn is dependent on a third software component according to said dependency order, a fourth software component is also dependent on said third software component without being dependent on said second software component, wherein said first software component and said fourth software component are present in a third layer, said second software component is present in a second layer and said third software component is present in a first layer, wherein said third layer is higher than said second layer, which in turn is higher than said first layer in said plurality of layers, wherein each software component in the same layer provides same services to components in higher layers such that both of said first software component and said fourth software component in said third layer provide same services to software components in a fourth layer which is higher than said third layer in said plurality of layers, wherein said first software component, said second software component, said fourth software component and said third software component are contained in said plurality of software components;
a developer system to send a plurality of patches sought to be applied to said plurality of software components, wherein said plurality of patches includes respective patches for said first software component, said second software component and said third software component;
and a patch tool to apply said plurality of patches on respective software components after all of said plurality of software components, including said first software component, said second software component, said third software component and said fourth software component are in a shutdown state, said patch tool to start up said plurality of software components in said dependency order starting first with an independent component, wherein said independent component is contained in said plurality of software components, wherein said patch tool starts up each component after completion of patching of the component and after starting up of a set of components on which the component is dependent upon, without waiting for patching of all of said plurality of software components, wherein each software component continues to be in executing state after being started up until all of said plurality of software components are also started up, wherein services provided by the software component in the executing state are available to corresponding components in higher layers, wherein said third software component is started up at a third time instance after completion of patching of said third software component, but without waiting for completion of patching of said second software component and said first software component in view of said second layer being higher than said first layer, wherein said second software component is started up at a second time instance after completion of patching of said second software component, but without waiting for completion of patching of said first software component in view of said third layer being higher than said second layer, wherein said first software component is started up at a first time instance after completion of patching of said first software component and said starting up of said second software component, wherein said fourth software component in said third layer is started up at a fourth time instance after completion of patching of said fourth software component and said starting up of said third software component in said first layer, but without waiting for said starting up of said second component in said second layer in view of said fourth software component not being dependent on said second software component, wherein said first time instance is after said second time instance, which in turn is after said third time instance, and wherein said fourth time instance is after said third time instance but before said second time instance, wherein at least one of said set of systems, said developer system and said patch tool comprising a processor executing instructions retrieved from a memory.
1 Assignment
0 Petitions
Accused Products
Abstract
According to an aspect of the present invention, the dependency information of software components implementing an enterprise application, is used to minimize the down time of the components when applying patches. In an embodiment, all the software components are shut down before applying patches. The patches are then applied and the components are started in a dependency order starting from an independent component. The down time is reduced as a result. According to another aspect, the shutdown also is performed in the reverse of the dependency order. The shutdown and starting are performed using recursive logic.
-
Citations
21 Claims
-
1. A computing system comprising:
-
a set of systems to store a plurality of software components implementing an enterprise application containing a plurality of layers, wherein software components in each layer are designed to provide services to software components in higher layers while using services provided by software components in lower layers, wherein said plurality of software components are inter-dependent on each other according to a dependency order, wherein a first software component is dependent on a second software component, which in turn is dependent on a third software component according to said dependency order, a fourth software component is also dependent on said third software component without being dependent on said second software component, wherein said first software component and said fourth software component are present in a third layer, said second software component is present in a second layer and said third software component is present in a first layer, wherein said third layer is higher than said second layer, which in turn is higher than said first layer in said plurality of layers, wherein each software component in the same layer provides same services to components in higher layers such that both of said first software component and said fourth software component in said third layer provide same services to software components in a fourth layer which is higher than said third layer in said plurality of layers, wherein said first software component, said second software component, said fourth software component and said third software component are contained in said plurality of software components; a developer system to send a plurality of patches sought to be applied to said plurality of software components, wherein said plurality of patches includes respective patches for said first software component, said second software component and said third software component; and a patch tool to apply said plurality of patches on respective software components after all of said plurality of software components, including said first software component, said second software component, said third software component and said fourth software component are in a shutdown state, said patch tool to start up said plurality of software components in said dependency order starting first with an independent component, wherein said independent component is contained in said plurality of software components, wherein said patch tool starts up each component after completion of patching of the component and after starting up of a set of components on which the component is dependent upon, without waiting for patching of all of said plurality of software components, wherein each software component continues to be in executing state after being started up until all of said plurality of software components are also started up, wherein services provided by the software component in the executing state are available to corresponding components in higher layers, wherein said third software component is started up at a third time instance after completion of patching of said third software component, but without waiting for completion of patching of said second software component and said first software component in view of said second layer being higher than said first layer, wherein said second software component is started up at a second time instance after completion of patching of said second software component, but without waiting for completion of patching of said first software component in view of said third layer being higher than said second layer, wherein said first software component is started up at a first time instance after completion of patching of said first software component and said starting up of said second software component, wherein said fourth software component in said third layer is started up at a fourth time instance after completion of patching of said fourth software component and said starting up of said third software component in said first layer, but without waiting for said starting up of said second component in said second layer in view of said fourth software component not being dependent on said second software component, wherein said first time instance is after said second time instance, which in turn is after said third time instance, and wherein said fourth time instance is after said third time instance but before said second time instance, wherein at least one of said set of systems, said developer system and said patch tool comprising a processor executing instructions retrieved from a memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of applying patches to a plurality of software components implementing an enterprise application containing a plurality of layers, wherein software components in each layer are designed to provide services to software components in higher layers while using services provided by software components in lower layers, said plurality of software components including a first software component, a second software component, a third software component and a fourth software component, wherein said first software component and said fourth software component are present in a third layer, said second software component is present in an second layer and said third software component is present in a first layer, wherein said third layer is higher than said second layer, which in turn is higher than said first layer in said plurality of layers, wherein each software component in the same layer provides same services to components in higher layers such that both of said first software component and said fourth software component in said third layer provide same services to software components in a fourth layer which is higher than said third layer in said plurality of layers, said method comprising:
-
receiving a dependency data associated with a plurality of patches sought to be applied on said plurality of software components, said dependency data indicating inter-dependencies among said plurality of software components, wherein said plurality of patches includes respective patches for said first software component, said second software component and said third software component; shutting down said plurality of software components, including said first software component, said second software component, said third software component and said fourth software component, executing on a set of systems; examining said dependency data to determine a dependency order among said plurality of software components, wherein said dependency order indicates, for each component, a corresponding set of components that are dependent on the component, wherein said dependency order indicates that said first software component is dependent on said second software component, that said second software component is in turn dependent on said third software component, and that a fourth software component is also dependent on said third software component without being dependent on said second software component; applying said plurality of patches to said plurality of software components; and starting said plurality of software components in said dependency order starting with an independent component comprised in said plurality of software components, wherein said starting starts up each component after completion of patching of the component and after starting up of a set of components on which the component is dependent upon, without waiting for patching of all of said plurality of software components, wherein said third software component is started up at a third time instance after completion of patching of said third software component, but without waiting for completion of patching of said second software component and said first software component in view of said second layer being higher than said first layer, wherein said second software component is started up at a second time instance after completion of patching of said second software component, but without waiting for completion of patching of said first software component in view of said third layer being higher than said second layer, wherein said first software component is started up at a first time instance after completion of patching of said first software component and said starting up of said second software component, wherein said fourth software component in said third layer is started up at a fourth time instance after completion of patching of said fourth software component and starting up of said third software component in said first layer, but without waiting for said starting up of said second component in said second layer in view of said fourth software component not being dependent on said second software component, wherein said first time instance is after said second time instance, which in turn is after said third time instance, and wherein said fourth time instance is after said third time instance but before said second time instance. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A non-transitory machine readable medium storing one or more sequences of instructions for causing a system to facilitate applying of patches to a plurality of software components implementing an enterprise application containing a plurality of layers, wherein software components in each layer are designed to provide services to software components in higher layers while using services provided by software components in lower layers, wherein said plurality of software components are inter-dependent on each other according to a dependency order, wherein a first software component is dependent on a second software component, which in turn is dependent on a third software component according to said dependency order, a fourth software component is also dependent on said third software component without being dependent on said second software component, wherein said first software component and said fourth software component are present in a third layer, said second software component is present in a second layer and said third software component is present in a first layer, wherein said third layer is higher than said second layer, which in turn is higher than said first layer in said plurality of layers, wherein each software component in the same layer provides same services to components in higher layers such that both of said first software component and said fourth software component in said third layer provide same services to software components in a fourth layer which is higher than said third layer in said plurality of layers, wherein execution of said one or more sequences of instructions by one or more processors contained in said system causes said system to perform the actions of:
-
receiving a dependency data associated with a plurality of patches sought to be applied on said plurality of software components, said dependency data indicating inter-dependencies among said plurality of software components, wherein said plurality of patches includes respective patches for said first software component, said second software component and said third software component; shutting down said plurality of software components, including said first software component, said second software component, said third software component and said fourth software component, executing on a set of systems; examining said dependency data to determine a dependency order among said plurality of software components, wherein said dependency order indicates, for each component, a corresponding set of components that are dependent on the component, wherein said dependency order indicates that said first software component is dependent on said second software component, that said second software component is in turn dependent on said third software component, and that a fourth software component is also dependent on said third software component without being dependent on said second software component; applying said plurality of patches to said plurality of software components; and starting said plurality of software components in said dependency order starting with an independent component comprised in said plurality of software components, wherein said starting starts up each component after completion of patching of the component and after starting up of a set of components on which the component is dependent upon, without waiting for patching of all of said plurality of software components, wherein said third software component is started up at a third time instance after completion of patching of said third software component, but without waiting for completion of patching of said second software component and said first software component in view of said second layer being higher than said first layer, wherein said second software component is started up at a second time instance after completion of patching of said second software component, but without waiting for completion of patching of said first software component in view of said third layer being higher than said second layer, wherein said first software component is started up at a first time instance after completion of patching of said first software component and said starting up of said second software component, wherein said fourth software component in said third layer is started up at a fourth time instance after completion of patching of said fourth software component and starting up of said third software component in said first layer, but without waiting for said starting up of said second component in said second layer in view of said fourth software component not being dependent on said second software component, wherein said first time instance is after said second time instance, which in turn is after said third time instance, and wherein said fourth time instance is after said third time instance but before said second time instance. - View Dependent Claims (18, 19, 20, 21)
-
Specification