Abstract:
A computer system for managing and deploying a plurality of software with a plurality of associated licenses in the computer system. Software allocation workflow requests are obtained from a requester for a target server referencing specific software and then redirected to a license broker. The license broker determines availability of the plurality of associated licenses referenced in the request and provisions the target server with said plurality of software. The requester of software allocation is then notified of the results. The workflow need not be concerned with monitoring resource status and providing requester feedback. Provisioning is handled on a just-in-time basis by the license broker as requested by the workflow making necessary licenses available (and software) only on as needed basis.

Description:
FIELD OF THE INVENTION  
       [0001]     This present invention relates generally to utilization of software licenses in a computer system and more particularly to optimal use of software licenses in a computer system.  
       BACKGROUND OF THE INVENTION  
       [0002]     In general most software applications for business have been deployed in environments with infrastructure designed to handle a peak capacity. Typically systems and support services have been designed with excess capacity built in to handle differences between peak and average use. In fact most of the times these environments do not operate at peak capacity but resources have to be sized to handle the peak demand periods. When not operating at peak capacity the systems and software running thereon are typically underutilized. In many cases software licenses associated with the software installed on these systems, are typically tied to specific environment capacity metrics, resulting in less than optimal cost of ownership. Software licenses have restrictions on the usage of the associated software, such as number of users per copy. The software licensing agreements have typically assumed continuous usage of the resources, while most of the time such usage does not occur.  
         [0003]     Sharing licenses or license pooling as is known in the art is one means of making a number of software licenses available for use without having to have assigned one license to every potential user. This sharing approach allows for the acquisition of fewer licenses than would have been provided in a peak demand model. There are fewer licenses than users in a shared or pooled model since the licenses are spread over the user community with the expectation that not all users will need to access the software all of the time. Such licensing models do not typically discriminate among users as to who is authorized to make use of a shared license at a particular time, resulting in problems of allocating licenses to those who need them at a given time.  
         [0004]     Therefore what is required is a more cost effective way to manage the availability of software licenses (and associated software) while addressing the needs of users of the software.  
       SUMMARY OF THE INVENTION  
       [0005]     A method, system and program product for automatically provisioning software servers based on user demand for software. Software allocation workflow requests are obtained from a requester for a target server referencing specific software and then redirected to a license broker. The license broker determines availability of the plurality of associated licenses referenced in the request and provisions the target server with said plurality of software. Software programs may be located in a storage means associated with the license server and provided at the request of the license broker through the license server. The requester of software allocation is then notified of the results. The workflow requests are initiated on a just in time basis and the license broker provisions the target resources as needed based on the workflow requests ensuring only that software which is needed is made available. The workflow is not encumbered by resource issues such as license availability which is handled by the license broker.  
         [0006]     Other aspects and features of the present invention will become apparent to those of ordinary skill in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0007]     Preferred embodiments of the invention will now be described, by way of example, with reference to the accompanying drawings, in which:  
         [0008]      FIG. 1  is a hardware overview of a computer system, in support of an embodiment of the present invention;  
         [0009]      FIG. 2  is a diagram of a current allocation workflow and target server relationship as supported in the computer system of  FIG. 1 ;  
         [0010]      FIG. 3  is a diagram of an allocation workflow and target server relationship of  FIG. 2  including an embodiment of the present invention;  
         [0011]      FIG. 4  is a detailed view of components as in the embodiment of the present invention of  FIG. 3 ;  
         [0012]      FIG. 5  is a flow diagram of activities performed in an embodiment of the present invention as shown in  FIG. 4 .  
         [0013]     Like reference numerals refer to corresponding components and steps throughout the drawings. It is to be expressly understood that the description and the drawings are only for the purpose of illustration and as an aid to understanding, and are not intended as a definition of the limits of the invention. 
     
    
     DETAILED DESCRIPTION  
       [0014]      FIG. 1  depicts, in a simplified block diagram, a computer system  100  suitable for implementing embodiments of the present invention. Computer system  100  has processor  110 , which is a programmable processor for executing programmed instructions stored in memory  108 . Memory  108  can also include hard disk, tape or other storage media. While a single CPU is depicted in  FIG. 1 , it is understood that other forms of computer systems can be used to implement the invention. It is also appreciated that the present invention can be implemented in a distributed computing environment having a plurality of computers communicating via a suitable network  119 .  
         [0015]     CPU  110  is connected to memory  108  either through a dedicated system bus  105  and/or a general system bus  106 . Memory  108  can be a random access semiconductor memory for storing application data for processing such as that in a database partition. Memory  108  is depicted conceptually as a single monolithic entity but it is well known that memory  108  can be arranged in a hierarchy of caches and other memory devices.  FIG. 1  illustrates that operating system  120  may be stored in memory  108 . Memory  108  may also serve as a store for an allocation workflow component, an interceptor component and an automated management component, all of which are described in greater detail below. The interceptor component intercepts allocation workflow requests for software installation directed toward a target server, which may be a logical or physical entity located on, within or remote to system  100  without influencing the relationship with the allocation workflow component.  
         [0016]     Operating system  120  provides functions such as device interface management, memory management, multiple task management, and the like as known in the art. CPU  110  can be suitably programmed to read, load, and execute instructions of operating system  120 . Computer system  100  has the necessary subsystems and functional components to implement selective program tracing functions such as gathering trace records and historical data as will be discussed later. Other programs (not shown) can include server software applications in which network adapter  118  interacts with the server software application to enable computer system  100  to function as a network server via network  119 .  
         [0017]     General system bus  106  supports transfer of data, commands, and other information between various subsystems of computer system  100 . While shown in simplified form as a single bus, bus  106  can be structured as multiple buses arranged in hierarchical form. Display adapter  114  supports video display device  115 , which is a cathode-ray tube display or a display based upon other suitable display technology. The Input/output adapter  112  supports devices suited for input and output, such as keyboard or mouse device  113 , and a disk drive unit (not shown). Storage adapter  142  supports one or more data storage devices  144 , which could include a magnetic hard disk drive or CD-ROM, although other types of data storage devices can be used, including removable media.  
         [0018]     Adapter  117  is used for operationally connecting many types of peripheral computing devices to computer system  100  via bus  106 , such as printers, bus adapters, and other computers using one or more protocols including Token Ring, LAN connections, as known in the art. Network adapter  118  provides a physical interface to a suitable network  119 , such as the Internet. Network adapter  118  includes a modem that can be connected to a transmission system such as a telephone line for accessing network  119 . Computer system  100  can be connected to another network server via a local area network using an appropriate network protocol and the network server that can in turn be connected to the Internet.  FIG. 1  is intended as an exemplary representation of computer system  100  by which embodiments of the present invention can be implemented. It is understood that in other computer systems, many variations in system configuration are possible in addition to those mentioned here.  
         [0019]      FIG. 2  is a simplified view of the current relationship between software allocation workflow  200 , and target server  210  in which requests to have selected software made available for use are initiated and resolved. Typically there is a direct connection between allocation workflow  200  and target server  210  wherein the connection may be physical or logical. Allocation workflow  200  comprises a plurality of requests for the installation of software on target server  210 . Such requests may be in a script directing specific installation activity be performed to install the selected software onto target server  210  or other suitable forms of operational transactions to effect the loading or installation of the desired software.  
         [0020]      FIG. 3  is a diagram of an embodiment of the present invention inserted within the relationship described in  FIG. 2 . This diagram shows the addition of components interceptor  220  and automated management  230  as an embodiment of the present invention. The role of interceptor  220  is to catch workflow transactions from allocation workflow  200 , process such transactions unknown to allocation workflow  200  and target server  210 . In doing so, the use of interceptor  220  is transparent to both ensuring continuing operation as in the prior relationship.  
         [0021]      FIG. 4  is a diagram showing further detail of the components of automated management component  230  in conjunction with interceptor  220 . Interceptor  220  communicates license allocation requests to license broker  240 . License broker  240  is responsible for managing the software licenses under its control. A repository of licenses managed by license broker  240  is contained within license server  260  with associated license database  280 . License database  280  may also contain the associated software programs, or they may reside on storage means suitable for on-demand retrieval. Tasks associated with allocation and installation of software are handed through deployment engine  250  which communicates through interceptor  220  to target server  210  to effect installation of requested software.  
         [0022]     Software licenses managed by license broker  240  on license server  260  contained within license database  280  may be viewed as reusable licenses in a pool. These licenses are homogeneous in nature making them suited for reuse. Any one of a specific set of licenses contained within a pool may be substituted for another of the same set with the same results being obtained. Licenses within a set are interchangeable. Each license pool also has an owner and a number of configured clients. Clients in this case are software installations for which the license pool was specified at software configuration time. Ownership allows accounting of license usage back to a single entity.  
         [0023]     Further each license has an associated key required to install the software and functions as a reservation unit. An allocation transaction captures the runtime aspect of the software license allocation and deallocation. The difference between the two timestamps is the actual usage time of the specific license.  
         [0024]      FIG. 5  is a flowchart describing the steps in the process of automated software license management as in an embodiment of the present invention which commences with operation  500  wherein an allocation is received requesting specific software being made available on a specified target server. Upon receiving a request in operation  500 , processing moves to step  510  during which the requested software is checked for availability. If the requested software is not available, the request fails ending the allocation workflow at step  590 . If on the other hand the software is available, processing moves to step  520 . During step  520  installation initialization occurs and processing moves to step  540 . During step  540  it is determined if a request involves a software stack. If it is determined that there is only a single software element requested, processing continues without such reservation needed and the requested software is obtained and installed. If it is determined that there is a software stack processing moves to step  550  during which a reservation must be placed on all the requested software in that stack. If the requested reservation is not successful, then there will be no further software install activity and the allocation workflow will be stopped with processing ending at step  590 . If the reservation is successful, processing moves to finalize the software installation after which processing moves to step  530 . During step  530  verification of the software installation begins and processing moves to step  560 . If it is determined during step  560  that the requested software has in fact been installed as requested, the associated licenses are marked ready and processing ends at step  570 . If the verification during step  560  indicates that the software installation was not successful, processing moves to step  580 . During step  580  licenses involved in the failed request are made free for reuse and processing then moves to completion at step  590 .  
         [0025]     It is expected that software requested to be installed can be installed by means of silent installation. Silent installation provides a mode of installation that does not require operator intervention.  
         [0026]     The process described in  FIG. 5  may be used to enforce license management control. The interception of normal workflow requests allows continued use of existing workflows without effecting numerous changes to realize the benefits of more effective control. Implementation of the described process typically ensures that only those licenses specifically needed as requested may be made allocated. During the process numerous checks are made to determine if the software actually exists for installation, and was in fact installed. Further for a complex set of software, as software stack, in which there is inherent dependencies, verification is also performed to ensure complete installation of the required set. Failure to complete an allocation request for all or part of the software requested results in a rollback to free any encumbered licenses.  
         [0027]     Although the invention has been described with reference to illustrative embodiments, it is to be understood that the invention is not limited to these precise embodiments and that various changes and modifications may be effected therein by one skilled in the art. All such changes and modifications are intended to be encompassed in the appended claims.