WO2015028538A1 - A method and system for upgrading software - Google Patents
A method and system for upgrading software Download PDFInfo
- Publication number
- WO2015028538A1 WO2015028538A1 PCT/EP2014/068228 EP2014068228W WO2015028538A1 WO 2015028538 A1 WO2015028538 A1 WO 2015028538A1 EP 2014068228 W EP2014068228 W EP 2014068228W WO 2015028538 A1 WO2015028538 A1 WO 2015028538A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- component
- swap
- client
- swcl
- version
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
Definitions
- the present invention generally relates to upgrading software.
- the invention in particular relates to upgrading client-server application software that typically contains a database component, an application server component, and a client component.
- the invention aims at upgrading such software, in particular in critical domains like healthcare, with limited or no downtime for the clients.
- the above-identified objective is achieved by the computer-implemented method for upgrading software having a client component, application server component and database component from an old version to a new version in a system with clients executing the client component, application servers executing the application server component, a load balancer directing a client out of these clients to a respective one of the application servers, and database servers executing the database component, the method being defined by claim 1 and comprising:
- the database is first upgraded causing no downtime for the clients and application servers.
- the database then supports two versions of the database component in case the new version of the database component is not backwards compatible with the old version of the database component, or it supports only the new version of the database component in case this new version of the database component is backwards compatible with the old version of the database component.
- Backwards compatibility implies that the old version of the application server component can be executed with the new version of the database component.
- the application servers are upgraded without service interruption for the clients.
- the different software versions installed on the application servers are registered with different IP addresses towards the load balancer. The clients pass the software version they support with every request to the load balancer.
- the load balancer shall detect the version information and direct a client to an application server supporting the version mentioned in the client's request. Consequently, as long as the new version of the software is not installed on a client, the new version of the application server component shall not be used. This allows for instance to test the new version of the application server extensively in order to guarantee successful installation thereof while the clients stay unaware on the existence of the new version of the software.
- the new version of the client component of the software can be downloaded while the old version of the client component is still running. Clients and their respective users are then informed on the availability of the new version of the software. Only when the user desires so, e.g.
- the new version of the client component will be installed on the user's client device. This is done with minimum downtime for the user, typically a few minutes or even less.
- the software upgrade process according to the invention has the additional advantage that performance decrease of the application servers during the upgrade is limited. All application servers are continuously up and running during the upgrade causing the total application performance to stay stable during the upgrade.
- the new version of the database component is backwards compatible with the old version of the database component.
- the old version of the application server component can be executed with the new version of the database component. This way, it is avoided that the old version and new version of the database component have to coexist on the database.
- the two versions have to be maintained on the database until all application servers and all clients have been upgraded successfully.
- the computer-implemented method for upgrading software according to the present invention applies versioning of at least important application objects in the first step.
- versioning of important objects such as workflows, templates, etc. can be applied. Versioning ensures that the new version of the database component can introduce new objects, e.g. workflows, while existing objects' behaviour remains unaltered. As a result thereof, the old version of the application server component can run with the new version of the database component of the software.
- the second step further comprises testing the new version of the application server component on the application servers without interrupting client service in order to verify successful installation.
- start-up of the application server whereon the new version of the application server component is installed can be tested. This way, unsuccessful start- up of the new version of the application server component on an application server can be detected and the next steps in the software upgrade process can be stopped without influencing the running version of the application server component. In addition, smoke testing can be performed to even better guarantee successful installation of the application server component while the clients remain unaware of the ongoing software upgrade.
- the load balancer receives a request from a client out of the clients, the request specifying which version of the client component is executed by the client, and re-directs the client to a respective one of the application servers executing a version of the application server component that corresponds with the version of the client component specified in the request.
- the clients notify in each request to the load balancer which version of the client component they actually support.
- the load balancer extracts and interprets this information upon receipt of the request, and directs the client to an application server that has the corresponding version of the application server component running. This is made possible by using different IP addresses for different versions of the application server component of the software.
- the fourth step comprises downloading binaries of the new version of the client component to the clients without interrupting client service, and installing the new version of the client component with a respective client of the clients either in lock time or at a point in time when a user of the client allows interruption of his service.
- the computer-implemented method for upgrading software according to the present invention further comprises:
- the old version of the application server component may be de-registered at the load balancer, and the old version of the application server component may be deleted from the application servers in order to free-up memory space on the application servers.
- the computer-implemented method for upgrading software comprises pausing the deletion of the old version of the client component.
- the present invention also relates to a corresponding data processing system as defined by claim 9, comprising means for carrying out this method.
- the present invention further also relates to a corresponding computer program as defined by claim 10, comprising software code adapted to perform the method, and to a computer readable storage medium as defined by claim 11 , comprising the computer program according to the present invention.
- FIG. 1 shows a system wherein an embodiment of the software upgrading method according to the present invention is used;
- Fig. 2 illustrates the first step in an embodiment of the software upgrading method according to the present invention;
- FIG. 3 illustrates the second and third steps in an embodiment of the software upgrading method according to the present invention
- Fig. 4 illustrates the fourth step in an embodiment of the software upgrading method according to the present invention
- Fig. 5 illustrates the fifth step in an embodiment of the software upgrading method according to the present invention.
- FIG. 1 shows the architectural composition of a system wherein a client-server based software application is used.
- Such system consists of a database server cluster with several database servers, DB1 or 101A and DB2 or 101 B, an application server cluster with several application servers, AS1 or 02A and AS2 or 102B and AS3 or 102C, a load balancer 103 and several clients, CLIENT1 or 104A and CLIENT2 or 104B and CLIENT 3 or 104C.
- Each one of the application servers 102A, 102B and 102C connects to one or more of the database servers 101 A and 10 B to persist the application data.
- the load balancer 103 is connected to each one of the application servers 102A, 102B and 102C, and ensures proper spreading of the load, i.e. the requests received from the clients 104A, 104B and 104C, over the different application servers 102A, 102B and 102C.
- the clients 104A, 104B and 104C all connect with the load balancer 103.
- a client-server based software application typically consists of a database component SWDB that is installed on the database servers 101 A and 101 B, an application server component SWAP that is installed on the application servers 102A, 102B and 102C, and a client component SWCL that is installed on the clients 104A, 104B and 104C.
- the load balancer registers the IP addresses of the various installations of the application server component SWAP, receives and interprets requests from the clients, and directs these requests to the application servers taking into account their respective loads.
- the client component SWCL needs to be upgraded from an old version SWCL_A to a new version SWCL_B;
- the application server component SWAP needs to be upgraded from an old version SWAP_A to a new version SWAP_B;
- the database component SWDB needs to be upgraded from an old database model SWDB_A to a new database model SWDB_B.
- the invention consists in a specific upgrade sequence described in the following paragraphs with reference to Fig. 2 - Fig. 5, supporting zero down time for the clients 104A, 104B and 104C, and limiting the testing efforts for the organization deploying the software. It is noticed that Fig. 2 - Fig. 5 show the upgrade process for a single instantiation of the database 101 and a single client 104.
- a first step of the upgrade process illustrated by Fig. 2, the database component SWDB of the software is upgraded from the old version SWDB_A to the new version SWDB_B.
- the upgrade of the database component SWDB is performed while the application server component SWAP is running, causing no downtime of the application.
- versioning of important database objects like workflows, templates, etc.
- the old version SWAP_A of the application server component SWAP is able to run against the new database model, i.e. in case the new version SWDB B of the database component SWDB is backwards compatible, the old version SWDB_A of the database component SWDB can be deleted from the database server 101.
- the new version SWAP_B of the application server component SWAP is deployed and started on all application servers, 102A, 102B and 102C. Unsuccessful startup of one of the application server nodes after installation of the new version SWAP_B of the application server component SWAP can be detected as a result of which next steps in the installation process can be stopped without influencing the running application. Additional smoke testing of the new version SWAP_B of the application server component SWAP increases the guaranty of a successful installation while the client component SWCL remains unaware of the upgrade ongoing.
- the newly deployed application server components SWAP_B on the different application servers 102A, 102B and 102C are registered towards the load balancer 103 with IP-addresses IP@4, IP@5 and IP@6 that differ from the IP addresses IP@1 , IP@2 and IP@3 at which the old version SWAP_A of the application server component SWAP installed on the different application servers 102A, 102B and 102C was registered .
- the load balancer 103 is thus aware which IP addresses support which version of the application server component of the software.
- the client component SWCL passes the software version, i.e. SWCL_A in the situation depicted in Fig. 3, with every call or request sent to the load balancer 103.
- the load balancer 103 detects the software version passed by the client 104 and directs the call or request from the client 104 to one of the application servers 102A, 102B or 102C supporting the corresponding version SWAP_A of the application server component.
- a call from a client with the old version SWCL_A of the client component will thus never be redirected to an application server running only the new version SWAP_B of the application server component. This is an important condition.
- the software upgrade process ensures that a client will only need to be tested and will only run against the application server component version with which it was deployed.
- a third step of the software upgared process executed after successfully installing the new version SWAP_B on the application servers 102A, 102B and 102C, the clients are informed of the new version SWCL_B of the client component SWCL, allowing them to finish any ongoing server calls and informing the users of these clients of the newly available version.
- the software upgrade method according to the invention further enforces client-server connections not allowing an old client component version to connect to a new application server component. This limits testing effort on version compatibility and allows frequent updates of the software while maintaining compliancy with high standard regulations as for instance applicable in healthcare.
- the method according to the invention shall typically be computer- implemented to run on a data processing system or computing device.
- a data processing system or computing device that is operated according to the present invention can include a workstation, a server, a laptop, a desktop, a hand-held device, a mobile device, a tablet computer, or other computing device, as would be understood by those of skill in the art.
- the data processing system or computing device can include a bus or network for connectivity between several components, directly or indirectly, a memory or database, one or more processors, input/output ports, a power supply, etc.
- the bus or network can include one or more busses, such as an address bus, a data bus, or any combination thereof, or can include one or more network links.
- busses such as an address bus, a data bus, or any combination thereof, or can include one or more network links.
- multiple of these components can be implemented by a single device.
- a single component can be implemented by multiple devices.
- the data processing system or computing device can include or interact with a variety of computer-readable media.
- computer-readable media can include Random Access Memory (RAM), Read Only Memory (ROM), Electronically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technologies, CDROM, digital versatile disks (DVD) or other optical or holographic media, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices that can be used to encode information and can be accessed by the data processing system or computing device.
- the memory can include computer-storage media in the form of volatile and/or nonvolatile memory.
- the memory may be removable, non-removable, or any combination thereof.
- Exemplary hardware devices are devices such as hard drives, solid-state memory, optical-disc drives, or the like.
- the data processing system or computing device can include one or more processors that read data from components such as the memory, the various I/O components, etc.
- the I/O ports can allow the data processing system or computing device to be logically coupled to other devices, such as I/O components. Some of the I/O components can be built into the computing device. Examples of such I/O components include a microphone, joystick, recording device, game pad, satellite dish, scanner, printer, wireless device, networking device, or the like.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
In order to upgrade software having a client component (SWCL), application server component (SWAP) and database component (SWDB) from an old version (SWCL_A, SWAP_A, SWDB_A) to a new version (SWCL_B, SWAP_B, SWDB_B), the new version (SWDB_B) of the database component (SWDB) is installed on the database servers (101 A, 101 B; 101) without interrupting client service in a first step. In a second step, the new version (SWAP_B) of the application server component (SWAP) is installed on the application servers (102A, 102B, 102C) without interrupting client service. In a third step, the new version (SWAP_B) of the application server component (SWAP) is registered with the load balancer (103) using an IP address (IP@4, IP@5, IP@6) that is different from the IP address (IP@1, IP@2, IP@3) used to register the old version (SWAP_A) of the application server component (SWAP). In a fourth step, the new version (SWCL_B) of the client component (SWCL) is installed with respective ones of the clients (104A, 104B, 104C; 104) when respective users of these clients (104A, 104B, 104C; 104) desire
Description
A METHOD AND SYSTEM FOR UPGRADING SOFTWARE
Field of the Invention
[01] The present invention generally relates to upgrading software. The invention in particular relates to upgrading client-server application software that typically contains a database component, an application server component, and a client component. The invention aims at upgrading such software, in particular in critical domains like healthcare, with limited or no downtime for the clients.
Background of the Invention [02] In the past, software upgrades of client-server applications were executed at a slow pace, typically once a year. These software upgrades however involved downtime of the system as a result of which the system was temporarily unavailable for users. [03] Technologies like scrum have reduced development cycles of new versions of software. New features of a client-server software application are introduced within the next three months. As a result, software upgrades come at a faster rhythm and downtime of the system for customers increases substantially. [04] Service upgrades and hot bug fixes further tend to trigger additional upgrades of client-server software applications, as a consequence of which the customer experiences even more frequent downtimes of the system.
[05] In particular in critical environments like healthcare where a patient's life can depend on the availability of for instance a system for consulting images, a need exists to reduce or even avoid downtime resulting from upgrades of client-server software applications.
[06] It is consequently an objective of the present invention to disclose a method for upgrading software with reduced downtime for the customer.
Summary of the Invention
[07] According to the present invention, the above-identified objective is achieved by the computer-implemented method for upgrading software having a client component, application server component and database component from an old version to a new version in a system with clients executing the client component, application servers executing the application server component, a load balancer directing a client out of these clients to a respective one of the application servers, and database servers executing the database component, the method being defined by claim 1 and comprising:
- in a first step, installing the new version of the database component on the database servers without interrupting application server service;
- in a second step subsequent to the first step, installing the new version of the application server component on the application servers without interrupting client service;
- in a third step subsequent to the second step, registering the new version of the application server component with the load balancer, using an IP address that is different from an IP address used to register the old version of the application server component; and
- in a fourth step subsequent to the third step, installing the new version of the client component with respective ones of the clients when respective users of the clients desire so.
[08] Thus, in line with the present invention, the database is first upgraded causing no downtime for the clients and application servers. The database then supports two versions of the database component in case the new version of the database component is not backwards compatible with the old version of the database component, or it supports only the new version of the database component in case this new version of the database component is backwards compatible with the old version of the database component. Backwards compatibility implies that the old
version of the application server component can be executed with the new version of the database component. Thereafter, the application servers are upgraded without service interruption for the clients. The different software versions installed on the application servers are registered with different IP addresses towards the load balancer. The clients pass the software version they support with every request to the load balancer. The load balancer shall detect the version information and direct a client to an application server supporting the version mentioned in the client's request. Consequently, as long as the new version of the software is not installed on a client, the new version of the application server component shall not be used. This allows for instance to test the new version of the application server extensively in order to guarantee successful installation thereof while the clients stay ignorant on the existence of the new version of the software. The new version of the client component of the software can be downloaded while the old version of the client component is still running. Clients and their respective users are then informed on the availability of the new version of the software. Only when the user desires so, e.g. when the user approves upgrading the client, when the user is locked out, or when inactivity is detected by the system for some time, the new version of the client component will be installed on the user's client device. This is done with minimum downtime for the user, typically a few minutes or even less.
[09] The software upgrade process according to the invention has the additional advantage that performance decrease of the application servers during the upgrade is limited. All application servers are continuously up and running during the upgrade causing the total application performance to stay stable during the upgrade.
[10] In accordance with an advantageous aspect of the present invention, defined by claim 2, the new version of the database component is backwards compatible with the old version of the database component. [11] Indeed, in case the new version of the database component is backwards compatible with the old version of the database component, the old version of the application server component can be executed with the new version of the database component. This way, it is avoided that the old version and new version of the database component have to coexist on the database. In case of absence of
backwards compatibility between the new version and old version of the database component, the two versions have to be maintained on the database until all application servers and all clients have been upgraded successfully. [12] Optionally, as defined by claim 3, the computer-implemented method for upgrading software according to the present invention applies versioning of at least important application objects in the first step.
[13] Indeed, to facilitate compatibility between the new version and old version of the database component, versioning of important objects such as workflows, templates, etc. can be applied. Versioning ensures that the new version of the database component can introduce new objects, e.g. workflows, while existing objects' behaviour remains unaltered. As a result thereof, the old version of the application server component can run with the new version of the database component of the software.
[14] According to an optional aspect of the computer-implemented method for upgrading software according to the present invention, the second step further comprises testing the new version of the application server component on the application servers without interrupting client service in order to verify successful installation.
[15] First, start-up of the application server whereon the new version of the application server component is installed can be tested. This way, unsuccessful start- up of the new version of the application server component on an application server can be detected and the next steps in the software upgrade process can be stopped without influencing the running version of the application server component. In addition, smoke testing can be performed to even better guarantee successful installation of the application server component while the clients remain ignorant of the ongoing software upgrade.
[16] Following another optional aspect of the computer-implemented method for upgrading software according to the present invention, defined by claim 5, the load balancer receives a request from a client out of the clients, the request specifying
which version of the client component is executed by the client, and re-directs the client to a respective one of the application servers executing a version of the application server component that corresponds with the version of the client component specified in the request.
[17] Indeed, preferably, the clients notify in each request to the load balancer which version of the client component they actually support. The load balancer extracts and interprets this information upon receipt of the request, and directs the client to an application server that has the corresponding version of the application server component running. This is made possible by using different IP addresses for different versions of the application server component of the software.
[18] In an embodiment of the computer-implemented method for upgrading software according to the present invention, defined by claim 6, the fourth step comprises downloading binaries of the new version of the client component to the clients without interrupting client service, and installing the new version of the client component with a respective client of the clients either in lock time or at a point in time when a user of the client allows interruption of his service. [19] Thus, by downloading the binaries of the client component already to the client while the client maintains service, the downtime for the user is further reduced. Moreover, by enabling the user to decide when the upgrade of the client component shall take place, impact on the user of the small downtime needed to install the client component, is minimized or even reduced to zero in case the user elects to install the client component for instance during a period of inactivity or after logout.
[20] Optionally, as defined by claim 7, the computer-implemented method for upgrading software according to the present invention further comprises:
- cleaning the old version of the application component from the application servers as soon as all clients have installed the new version of the client component; and
- de-registering the old version of the client application component with the load balancer to thereby release IP addresses used for the old version of the client application component.
[21] Hence, as soon as all active clients have been upgraded towards the new version of the client component, the old version of the application server component may be de-registered at the load balancer, and the old version of the application server component may be deleted from the application servers in order to free-up memory space on the application servers.
[22] According to an advantageous aspect of the present invention, defined by claim 8, the computer-implemented method for upgrading software comprises pausing the deletion of the old version of the client component.
[23] Thanks to the pausing, the old version of the software and the new version of the software can be maintained on the client device, thus delaying the restart of the client device which is needed for the new version of the client component to become active. Pausing in other words gives further control to the user on the moment in time whereon the small service interruption shall take place.
[24] In addition to a computer-implemented method for upgrading software as defined by claim 1 , the present invention also relates to a corresponding data processing system as defined by claim 9, comprising means for carrying out this method.
[25] The present invention further also relates to a corresponding computer program as defined by claim 10, comprising software code adapted to perform the method, and to a computer readable storage medium as defined by claim 11 , comprising the computer program according to the present invention.
Brief Description of the Drawings
[26] Fig. 1 shows a system wherein an embodiment of the software upgrading method according to the present invention is used;
[27] Fig. 2 illustrates the first step in an embodiment of the software upgrading method according to the present invention;
[28] Fig. 3 illustrates the second and third steps in an embodiment of the software upgrading method according to the present invention;
[29] Fig. 4 illustrates the fourth step in an embodiment of the software upgrading method according to the present invention; and [30] Fig. 5 illustrates the fifth step in an embodiment of the software upgrading method according to the present invention.
Detailed Description of Embodiment(s)
[31] Fig. 1 shows the architectural composition of a system wherein a client-server based software application is used. Such system consists of a database server cluster with several database servers, DB1 or 101A and DB2 or 101 B, an application server cluster with several application servers, AS1 or 02A and AS2 or 102B and AS3 or 102C, a load balancer 103 and several clients, CLIENT1 or 104A and CLIENT2 or 104B and CLIENT 3 or 104C. Each one of the application servers 102A, 102B and 102C connects to one or more of the database servers 101 A and 10 B to persist the application data. The load balancer 103 is connected to each one of the application servers 102A, 102B and 102C, and ensures proper spreading of the load, i.e. the requests received from the clients 104A, 104B and 104C, over the different application servers 102A, 102B and 102C. The clients 104A, 104B and 104C all connect with the load balancer 103.
[32] A client-server based software application typically consists of a database component SWDB that is installed on the database servers 101 A and 101 B, an application server component SWAP that is installed on the application servers 102A, 102B and 102C, and a client component SWCL that is installed on the clients 104A, 104B and 104C. The load balancer registers the IP addresses of the various installations of the application server component SWAP, receives and interprets
requests from the clients, and directs these requests to the application servers taking into account their respective loads.
[33] As explained here above, various situations require software upgrades. Such a software upgrade usually impacts each of the levels in the system architecture depicted in Fig. 1 :
- the client component SWCL needs to be upgraded from an old version SWCL_A to a new version SWCL_B;
- the application server component SWAP needs to be upgraded from an old version SWAP_A to a new version SWAP_B; and
- the database component SWDB needs to be upgraded from an old database model SWDB_A to a new database model SWDB_B.
[34] The invention consists in a specific upgrade sequence described in the following paragraphs with reference to Fig. 2 - Fig. 5, supporting zero down time for the clients 104A, 104B and 104C, and limiting the testing efforts for the organization deploying the software. It is noticed that Fig. 2 - Fig. 5 show the upgrade process for a single instantiation of the database 101 and a single client 104. [35] In a first step of the upgrade process, illustrated by Fig. 2, the database component SWDB of the software is upgraded from the old version SWDB_A to the new version SWDB_B. The upgrade of the database component SWDB is performed while the application server component SWAP is running, causing no downtime of the application. To facilitate compatibility, versioning of important database objects like workflows, templates, etc., is utilized. This ensures that the new version can introduce new objects, e.g. workflows, while the existing object's behavior remains the same. In case the old version SWAP_A of the application server component SWAP is able to run against the new database model, i.e. in case the new version SWDB B of the database component SWDB is backwards compatible, the old version SWDB_A of the database component SWDB can be deleted from the database server 101.
[36] In a second step of the software upgrade process illustrated by Fig. 3, the new version SWAP_B of the application server component SWAP is deployed and started
on all application servers, 102A, 102B and 102C. Unsuccessful startup of one of the application server nodes after installation of the new version SWAP_B of the application server component SWAP can be detected as a result of which next steps in the installation process can be stopped without influencing the running application. Additional smoke testing of the new version SWAP_B of the application server component SWAP increases the guaranty of a successful installation while the client component SWCL remains unaware of the upgrade ongoing.
[37] When successfully started and tested, the newly deployed application server components SWAP_B on the different application servers 102A, 102B and 102C are registered towards the load balancer 103 with IP-addresses IP@4, IP@5 and IP@6 that differ from the IP addresses IP@1 , IP@2 and IP@3 at which the old version SWAP_A of the application server component SWAP installed on the different application servers 102A, 102B and 102C was registered . The load balancer 103 is thus aware which IP addresses support which version of the application server component of the software.
[38] The client component SWCL passes the software version, i.e. SWCL_A in the situation depicted in Fig. 3, with every call or request sent to the load balancer 103. The load balancer 103 detects the software version passed by the client 104 and directs the call or request from the client 104 to one of the application servers 102A, 102B or 102C supporting the corresponding version SWAP_A of the application server component. A call from a client with the old version SWCL_A of the client component will thus never be redirected to an application server running only the new version SWAP_B of the application server component. This is an important condition. By enforcing this condition, the software upgrade process according to the present invention ensures that a client will only need to be tested and will only run against the application server component version with which it was deployed. [39] In a third step of the software upgared process, illustrated by Fig. 4, executed after successfully installing the new version SWAP_B on the application servers 102A, 102B and 102C, the clients are informed of the new version SWCL_B of the client component SWCL, allowing them to finish any ongoing server calls and informing the users of these clients of the newly available version. When the user has
the time to upgrade, or when inactivity of the system is detected, e.g. because the user is locked out after a period of inactivity, upgrade of the client 104 towards the new version SWCLJ3 of the client component SWCL of the software is triggered. [40] In a fifth step of the software upgrade process, illustrated by Fig. 5, after all active clients have been upgraded towards the new version SWCL_B of the client component SWCL, a cleanup operation is performed. The old version SWCL_A of the client component SWCL is deleted from the clients and the old version SWAP_A of the application server component SWAP is deregistered from the load balancer 103. As a result, support and maintenance services for the old version of the software can be stopped.
[41] The side by side activation of different runtime versions of the software that is inherent to the software upgrade method according to the present invention, allows first trouble shooting analysis thus reducing risk of unsuccessful upgrades.
[42] Since the load balancer is aware of the different software versions, client calls are always channeled to the correct software version. [43] The software upgrade method according to the invention further enforces client-server connections not allowing an old client component version to connect to a new application server component. This limits testing effort on version compatibility and allows frequent updates of the software while maintaining compliancy with high standard regulations as for instance applicable in healthcare.
[44] The method according to the invention shall typically be computer- implemented to run on a data processing system or computing device. A data processing system or computing device that is operated according to the present invention can include a workstation, a server, a laptop, a desktop, a hand-held device, a mobile device, a tablet computer, or other computing device, as would be understood by those of skill in the art.
[45] The data processing system or computing device can include a bus or network for connectivity between several components, directly or indirectly, a memory or
database, one or more processors, input/output ports, a power supply, etc. One of skill in the art will appreciate that the bus or network can include one or more busses, such as an address bus, a data bus, or any combination thereof, or can include one or more network links. One of skill in the art additionally will appreciate that, depending on the intended applications and uses of a particular embodiment, multiple of these components can be implemented by a single device. Similarly, in some instances, a single component can be implemented by multiple devices.
[46] The data processing system or computing device can include or interact with a variety of computer-readable media. For example, computer-readable media can include Random Access Memory (RAM), Read Only Memory (ROM), Electronically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technologies, CDROM, digital versatile disks (DVD) or other optical or holographic media, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices that can be used to encode information and can be accessed by the data processing system or computing device.
[47] The memory can include computer-storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, non-removable, or any combination thereof. Exemplary hardware devices are devices such as hard drives, solid-state memory, optical-disc drives, or the like. The data processing system or computing device can include one or more processors that read data from components such as the memory, the various I/O components, etc. [48] The I/O ports can allow the data processing system or computing device to be logically coupled to other devices, such as I/O components. Some of the I/O components can be built into the computing device. Examples of such I/O components include a microphone, joystick, recording device, game pad, satellite dish, scanner, printer, wireless device, networking device, or the like.
[49] Although the present invention has been illustrated by reference to specific embodiments, it will be apparent to those skilled in the art that the invention is not limited to the details of the foregoing illustrative embodiments, and that the present invention may be embodied with various changes and modifications without
departing from the scope thereof. The present embodiments are therefore to be considered in all respects as illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than by the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein. In other words, it is contemplated to cover any and all modifications, variations or equivalents that fall within the scope of the basic underlying principles and whose essential attributes are claimed in this patent application. It will furthermore be understood by the reader of this patent application that the words "comprising" or "comprise" do not exclude other elements or steps, that the words "a" or "an" do not exclude a plurality, and that a single element, such as a computer system, a processor, or another integrated unit may fulfil the functions of several means recited in the claims. Any reference signs in the claims shall not be construed as limiting the respective claims concerned.
Claims
1. A computer-implemented method for upgrading software having a client component (SWCL), application server component (SWAP) and database component (SWDB) from an old version (SWCL_A, SWAP_A, SWDB_A) to a new version (SWCL_B, SWAP_B, SWDB_B) in a system with clients (104A, 104B, 104C; 104) executing said client component (SWCL), application servers (102A, 102B, 102C) executing said application server component (SWAP), a load balancer (103) directing a client out of said clients (104A, 104B, 104C; 104) to a respective one of said application servers (102A, 102B, 102C), and database servers (101 A, 101B; 101) executing said database component (SWDB), said method comprising:
- in a first step, installing said new version (SWDB_B) of said database component (SWDB) on said database servers (101 A, 101 B; 101) without interrupting application server service;
- in a second step subsequent to said first step, installing said new version
(SWAP_B) of said application server component (SWAP) on said application servers (102A, 102B, 102C) without interrupting client service;
- in a third step subsequent to said second step, registering said new version (SWAP_B) of said application server component (SWAP) with said load balancer (103), using an IP address (IP@4, IP@5, IP@6) that is different from an IP address (IP@1 , IP@2, IP@3) used to register said old version (SWAP_A) of said application server component (SWAP); and
- in a fourth step subsequent to said third step, installing said new version (SWCL_B) of said client component (SWCL) with respective ones of said clients (104A, 104B, 104C; 104) when respective users of said clients (104A, 104B, 104C; 104) desire so.
2. A computer-implemented method for upgrading software according to claim
1 ,
wherein said new version (SWDB_B) of said database component (SWDB) is backwards compatible with said old version (SWDB_A) of said database component (SWDB).
3. A computer-implemented method for upgrading software according to claim
2,
wherein versioning of at least important application objects is applied in said first step.
4. A computer-implemented method for upgrading software according to claim
1 ,
wherein said second step further comprises testing said new version (SWAP_B) of said application server component (SWAP) on said application servers (102A, 102B, 102C) without interrupting client service in order to verify successful installation.
5. A computer-implemented method for upgrading software according to claim
1 ,
wherein said load balancer (103) receives a request from a client out of said clients (104A, 104B, 104C; 104), said request specifying which version of said client component (SWCL) is executed by said client, and re-directs said client to a respective one of said application servers (102A, 102B, 102C) executing a version of said application server component (SWAP) that corresponds with said version of said client component (SWCL) specified in said request.
6. A computer-implemented method for upgrading software according to claim
1 ,
wherein said fourth step comprises downloading binaries of said new version (SWCL_B) of said client component (SWCL) to said clients (104A, 104B, 104C; 104) without interrupting client service, and installing said new version (SWCL_B) of said client component (SWCL) with a respective client of said clients (104A, 104B, 104C; 104) either in lock time or at a point in time when a user of said client allows interruption of his service.
7. A computer-implemented method for upgrading software according to claim 1 , further comprising:
- cleaning said old version (SWAP_A) of said application component (SWAP) from said application servers (102A, 102B, 102C) as soon as all clients (104A, 104B,
104C; 104) have installed said new version (SWCL_B) of said client component (SWCL); and
- de-registering said old version (SWAP_A) of said client application component (SWAP) with said load balancer (103) to thereby release IP addresses (IP@1 , IP@2, IP@3) used for said old version (SWAP_A) of said client application component (SWAP).
8. A data processing system comprising means for carrying out the method of any of claims 1 to 7.
9. A computer program comprising software code adapted to perform the method of any of claims 1 to 7.
10. A computer readable storage medium comprising the computer program of claim 9.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP13182601.8 | 2013-09-02 | ||
| EP13182601 | 2013-09-02 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2015028538A1 true WO2015028538A1 (en) | 2015-03-05 |
Family
ID=49080780
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/EP2014/068228 Ceased WO2015028538A1 (en) | 2013-09-02 | 2014-08-28 | A method and system for upgrading software |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2015028538A1 (en) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111427889A (en) * | 2020-03-23 | 2020-07-17 | 北京三体云时代科技有限公司 | Method and device for upgrading database table and server |
| CN112564956A (en) * | 2020-11-30 | 2021-03-26 | 山东亚华电子股份有限公司 | Remote upgrading method, equipment and device for client and storage medium |
| CN112965733A (en) * | 2021-03-22 | 2021-06-15 | 云账户技术(天津)有限公司 | Component library updating method and device, electronic equipment and readable storage medium |
| CN113821327A (en) * | 2021-10-14 | 2021-12-21 | 北京皮尔布莱尼软件有限公司 | Instance scheduling method, system and computing equipment |
| CN115220764A (en) * | 2022-07-19 | 2022-10-21 | 中国银行股份有限公司 | Software version deployment management method and device |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2411995A (en) * | 2001-04-11 | 2005-09-14 | Sun Microsystems Inc | Upgrading an object oriented programming language platform |
| US8200842B1 (en) * | 2006-10-25 | 2012-06-12 | Cellco Partnership | Automatic traffic control using dynamic DNS update |
-
2014
- 2014-08-28 WO PCT/EP2014/068228 patent/WO2015028538A1/en not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2411995A (en) * | 2001-04-11 | 2005-09-14 | Sun Microsystems Inc | Upgrading an object oriented programming language platform |
| US8200842B1 (en) * | 2006-10-25 | 2012-06-12 | Cellco Partnership | Automatic traffic control using dynamic DNS update |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111427889A (en) * | 2020-03-23 | 2020-07-17 | 北京三体云时代科技有限公司 | Method and device for upgrading database table and server |
| CN112564956A (en) * | 2020-11-30 | 2021-03-26 | 山东亚华电子股份有限公司 | Remote upgrading method, equipment and device for client and storage medium |
| CN112965733A (en) * | 2021-03-22 | 2021-06-15 | 云账户技术(天津)有限公司 | Component library updating method and device, electronic equipment and readable storage medium |
| CN113821327A (en) * | 2021-10-14 | 2021-12-21 | 北京皮尔布莱尼软件有限公司 | Instance scheduling method, system and computing equipment |
| CN115220764A (en) * | 2022-07-19 | 2022-10-21 | 中国银行股份有限公司 | Software version deployment management method and device |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| AU2017200642B2 (en) | Virtual machine migration tool | |
| US9645839B2 (en) | Stateful applications operating in a stateless cloud computing environment | |
| US8839221B2 (en) | Automatic acquisition and installation of software upgrades for collections of virtual machines | |
| US10114653B2 (en) | Multiple-stage bootloader and firmware for baseboard manager controller and primary processing subsystem of computing device | |
| US8533701B2 (en) | Virtual machine image update service | |
| WO2020099960A1 (en) | Detecting security risks related to a software component | |
| AU2012276003A1 (en) | Virtual machine migration tool | |
| US10338914B2 (en) | Dynamically applying a patch to a shared library | |
| WO2015028538A1 (en) | A method and system for upgrading software | |
| US20150074640A1 (en) | Runtime detection of software configurations and upgrades | |
| US9389929B1 (en) | Granular event management for service platforms | |
| US11880674B2 (en) | Adaptive hot reload for class changes | |
| US20080115134A1 (en) | Repair of system defects with reduced application downtime | |
| US8683458B2 (en) | Automatic full install upgrade of a network appliance | |
| US8312472B2 (en) | Program startup apparatus and method | |
| US12493455B2 (en) | Container based generation of inputs for generic functions | |
| US20230153093A1 (en) | Systems and methods for managing workspaces in a heterogeneous workspace environment | |
| WO2015027733A1 (en) | Running method, device, and system of distributed java program | |
| JP4554581B2 (en) | Job management apparatus, system and program | |
| US12360759B2 (en) | Downgrading database software via a downgradability test | |
| US12535955B2 (en) | Method and electronic device for secure on-device storage for machine learning models | |
| CN113157436B (en) | Resource request distribution method, device, server and storage medium | |
| US20260064402A1 (en) | Near-zero downtime maintenance of the edge layer in cloud databases | |
| US7970740B1 (en) | Automated service configuration snapshots and fallback |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14755834 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 14755834 Country of ref document: EP Kind code of ref document: A1 |