The present invention generally describes methods, systems and devices for controlling versioning of a service returned to a consumer.
Changing business needs over time may result in the creation of complex, inflexible application architectures, often with high levels of redundancy of business functions and data. To ensure that business needs drive information technology (IT) solutions many organizations desire to break down application “silos”, wherein the deployment of multiple IT systems such as enterprise resource planning (ERP), customer relationship management (CRM), data warehouses, customer portals and content management systems results in incomplete and inconsistent pictures of corporate information and project or group-specific business functions. More particularly, it is desired to increase focus on building IT integration capabilities to develop and deploy shareable and reusable services that may be used across lines of business and across processes in a manner dictated by business needs and not by the application or information technology (IT) architecture.
Organizations are increasingly turning to service-oriented architecture (SOA) methods, systems and governance models to develop and deploy shareable and reusable services. An SOA governance model provides a framework that enables an organization to come to a consensus on the scope of SOA governance and its definition and use, and one common SOA governance problem with respect to a services lifecycle centers on the versioning of services. In many cases, it may become necessary to have multiple versions of a service or “release” of a service to meet the needs of various entities in an organization or business. Problems arise in offering a unified method where each consumer can get both an appropriate service and the correct version of that service from an SOA.
Methods are provided for controlling versioning of a service. A programmable policy broker is provided, configured to communicate with a service registry and a policy repository, the policy repository comprising different service levels of a service. A location lookup is centralized in the service registry for different versions of the service wherein each of the different versions may have a separate location. A call for a service by a consumer is mediated by causing the policy broker to select and return a correct service level from the policy repository different service levels as a function of a requirement of the consumer, look up a proper version of the service needed by the consumer in the service registry from the different versions as a function of the returned correct service level, and call the looked-up proper service from a location associated with the proper service in the service registry.
Service methods are also provided comprising deploying applications for controlling versioning of a service according to the method steps described above, for example by a service provider who offers to implement, deploy, and/or perform functions for others. Still further, articles of manufacture comprising a computer usable medium having a computer readable program in said medium are provided. Such program code comprises instructions which, when executed on a computer system, cause the computer system to perform one or more method and/or process elements described above for controlling versioning of a service. Moreover, systems, articles and programmable devices are also provided, configured for performing one or more method and/or process elements of the current invention for controlling versioning of a service, for example as described above.
These and other features of the methods, systems and devices according to the present application will be more readily understood from the following detailed description of the various aspects of the embodiments taken in conjunction with the accompanying drawings in which:
The drawings are not necessarily to scale. The drawings are merely schematic representations, not intended to portray specific parameters of the invention. The drawings are intended to depict only typical embodiments of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements.
For convenience, the Detailed Description of the Invention has the following sections:
I. General Description; and
II. Computerized Implementation.
Examples of SOA aspects and governance processes according to the present invention may be found in the following commonly-owned and co-pending U.S. patent applications or issued U.S. patents, the disclosures of which are expressly incorporated herein by reference: “Identifying a Service Oriented Architecture Shared Services Project”, attorney docket no. END920080252US1, filed on (to be provided), and assigned application Ser. No. (to be provided); “Evaluating a Service Oriented Architecture Shared Services Project”, attorney docket no. END920080288US1, filed on (to be provided), and assigned application Ser. No. (to be provided); “Service Oriented Architecture Shared Service Inception”, attorney docket no. END920080289US1, filed on (to be provided), and assigned application Ser. No. (to be provided); “Service Oriented Architecture Shared Services Elaboration”, attorney docket no. END920080290US1, filed on (to be provided), and assigned application Ser. No. (to be provided); “Service Oriented Architecture Shared Services Construction”, attorney docket no. END920080291US1, filed on (to be provided), and assigned application Ser. No. (to be provided); “Transitioning to Management of a Service Oriented Architecture Shared Service”, attorney docket no. END920080292US1, filed on (to be provided), and assigned application Ser. No. (to be provided); “Service Oriented Architecture Shared Service Management”, attorney docket no. END920080293US1, filed on (to be provided), and assigned application Ser. No. (to be provided); “Service Oriented Architecture Shared Service Escalation”, attorney docket no. END920080294US1, filed on (to be provided), and was assigned application Ser. No. (to be provided); “FRAMEWORK FOR VARIATION ORIENTED ANALYSIS FOR SERVICE-ORIENTED ARCHITECTURE”, attorney docket no. END920080317US1-IEN106617, filed on (to be provided), and assigned application Ser. No. (to be provided); “TECHNICAL FEASIBILITY EXPLORATION FOR SERVICE-ORIENTED ARCHITECTURE ENVIRONMENTS”, attorney docket no. END920080318US1-IEN106618, filed on (to be provided), and assigned application Ser. No. (to be provided); “SOA Lifecycle Governance and Management”, attorney docket no. END920080319US1-IEN106619, filed on (to be provided), and assigned application Ser. No. (to be provided); “ENABLING SOA GOVERNANCE USING A SERVICE LIFECYCLE APPROACH”, attorney docket no. END920080320US1-IEN106620, filed on (to be provided), and assigned application Ser. No. (to be provided); “CALIBRATION FRAMEWORK FOR EFFORT ESTIMATION”, attorney docket no. END920080321US1-IEN106621, filed on (to be provided), and assigned application Ser. No. (to be provided); “SERVICE PORTFOLIO APPROACH FOR SOA GOVERNANCE”, attorney docket no. END920080386US1-IEN106642, filed on (to be provided), and assigned application Ser. No. (to be provided); “SERVICE EVOLUTION APPROACH IN SOA”, attorney docket no. END920080387US1-IEN106643, filed on (to be provided), and assigned application Ser. No. (to be provided); “CAPABILITY AND MATURITY-BASED SOA GOVERNANCE”, attorney docket no. END920080388US1-IEN106644, filed on (to be provided), and assigned application Ser. No. (to be provided); “PRIORITIZATION ENABLEMENT FOR SOA GOVERNANCE”, attorney docket no. END920080389US1-IEN106645, filed on (to be provided), and assigned application serial no. (to be provided); and “SOA POLICY ENGINE FRAMEWORK”, attorney docket no. END920080390US1-IEN106646, filed on (to be provided), and assigned application Ser. No. (to be provided).
It is often necessary for an SOA to provide multiple versions of a service or “release” of a service to meet the needs of various entities in an organization or business. Prior art SOA governance does not offer a unified method where a consumer can go to get a service and not have to worry about the version of the service that it needs. Universal Description, Discovery, and Integration (UDDI) registries and service registries alone cannot solve this problem because they do not know which version of the service that a consumer may need. This becomes an issue of SOA governance because there is not a defined method for handling service versioning in current SOA implementations.
The mediator 140 is also in communication with a web service 150 which may provide a web-based resource for the called/proper service returned in response to the consumer request 138. The mediator 140 is further configured to look-up the proper version of the service further by performing a key look-up query 151 of a Lightweight Directory Access Protocol (LDAP) application 152 in communication with the policy broker, wherein LDAP may be understood as an application protocol for and modifying directory services running over Transmission Control Protocol/Internet Protocol (TCP/IP). As will be appreciated by one skilled in the art, the LDAP 152 enables rapid and efficient look-ups through key look-up structures and processes, and key look-up data is kept current and useful through an updating process 154 linking the policy broker 144 and the LDAP 152.
In another aspect, the policy broker 144 directly communicates with and calls services from each of the plurality of location legacy policy servers 146 through policy adapters 156 configured to communicate with each associated location server. Thus, where legacy policy server 146a is a different type of server relative to legacy policy server 146b, the policy adapter 156a configured to enable the policy broker 144 to communicate with legacy policy server 146a is different than the policy adapter 156b, the policy adapters 156a and 156b enabling the policy broker 144 to automatically communicate with the different legacy policy servers 146a and 146b.
The present invention thus defines processes combining the use of a service registry and a policy based server to control which version of a service is needed. Methods and processes are defined for controlling versioning of a service that allows a consumer to access different service levels implicitly via the use of version policies, making service versioning configuration, not code driven. Deprecating and sun setting services is also provided for by controlling access to a version of the service. A consumer's needs for a service are correlated to a correct service version using a policy-based system and centralizing the lookup of the service, offering a one call for all versions of a service without the consumer having to worry about the mechanics of calling different versions.
The present invention focuses on the use of policy architecture as a reference architecture for the implementation of embodiments of the invention, and focuses on the versioning of the services. Legacy policy lookups and access enforcement for security purposes are not primary concerns in some embodiments, although other embodiments may support and/or provide theses functions. By using the combination of a policy service and a registry, the present invention provides a method for offering different service versions of a service without requiring a consumer or other requester to recode specific versioning information into a service request.
Providing one mediation/brokering point for controlling versions via the policy repository 148, the present invention allows a consumer's request to be controlled via a configuration, not via code as required by the prior art. From a governance perspective, the called/returned service is now centrally controlled. Additionally, a lookup for a version of a service may look up a service as a function of the consumer's needs, and may offer a default version of a service if a consumer does not have a policy defined.
A power source 205 is configured to provide operative power to the device 200; examples include battery units 205 and power inputs configured to receive alternating or direct current electrical power, and other appropriate power units 205 will be apparent to one skilled in the art. A communication port or network link/node means (“com port”) 207 is also provided and configured to enable data and other communications as may be appropriate, for example as discussed above.
Referring now to
As shown, the computer system 304 includes a central processing unit (CPU) 312, a memory 316, a bus 320, and input/output (I/O) interfaces 324. Further, the computer system 304 is shown in communication with external I/O devices/resources 328 and storage systems 332 (e.g. the service registry 142, the policy repository 148, the web service entity 150 and the LDAP 152 as discussed above). In general, the processing unit 312 executes computer program code, such as the code to implement various components of the process and systems, and devices as illustrated in
While executing computer program code, the processing unit 312 can read and/or write data to/from the memory 316, the storage system 332 (e.g. the, and/or the I/O interfaces 324. The bus 320 provides a communication link between each of the components in computer system 304. The external devices 328 can comprise any devices (e.g., keyboards, pointing devices, displays, etc.) that enable a user to interact with computer system 304 and/or any devices (e.g., network card, modem, etc.) that enable computer system 304 to communicate with one or more other computing devices.
The computer infrastructure 308 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 308 comprises two or more computing devices (e.g., a server cluster) that communicate over a network to perform the various process steps of the invention. Moreover, computer system 304 is only representative of various possible computer systems that can include numerous combinations of hardware.
To this extent, in other embodiments, the computer system 304 can comprise any specific purpose-computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general-purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively. Moreover, the processing unit 312 may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Similarly, the memory 316 and/or the storage system 332 can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations.
Further, I/O interfaces 324 can comprise any system for exchanging information with one or more of the external device 328. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc.) not shown in
The storage system 332 can be any type of system (e.g., a database) capable of providing storage for information under the present invention. To this extent, the storage system 332 could include one or more storage devices, such as a magnetic disk drive or an optical disk drive. In another embodiment, the storage system 332 includes data distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN) (not shown). In addition, although not shown, additional components, such as cache memory, communication systems, system software, etc., may be incorporated into computer system 304.
While shown and described herein as a method and a system, it is understood that the invention further provides various alternative embodiments. For example, in one embodiment, the invention provides a computer-readable/useable medium that includes computer program code to enable a computer infrastructure to implement methods, systems and devices according to the present application, for example as illustrated in
It is understood that the terms “computer-readable medium” or “computer useable medium” comprise one or more of any type of physical embodiment of the program code. In particular, the computer-readable/useable medium can comprise program code embodied on one or more portable storage articles of manufacture (e.g., a compact disc, a magnetic disk, a tape, etc.), on one or more data storage portions of a computing device, such as the memory 316 and/or the storage system 332 (e.g., a fixed disk, a read-only memory, a random access memory, a cache memory, etc.), and/or as a data signal (e.g., a propagated signal) traveling over a network (e.g., during a wired/wireless electronic distribution of the program code).
Still yet, computer infrastructure 308 is intended to demonstrate that some or all of the components of implementation according to the present application could be deployed, managed, serviced, etc. by a service provider who offers to implement, deploy, and/or perform the functions of the present invention for others, for example by licensing methods and browser or application server technology to an internet service provider (ISP) or a cellular telephone provider. In one embodiment the invention may comprise a business method that performs the process steps of the invention on a subscription, advertising, and/or fee basis. Thus a service provider can create, maintain, support, etc., a computer infrastructure, such as the computer infrastructure 308 that performs the process steps of the present application for one or more customers, and in return the service provider can receive payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising content to one or more third parties.
In still another embodiment, the invention provides a computer-implemented method for enabling the processes, methods and devices according to the present application. In this case, a computer infrastructure, such as computer infrastructure 308, can be provided and one or more systems for performing the process steps of the invention can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer infrastructure. To this extent, the deployment of a system can comprise one or more of: (1) installing program code on a computing device, such as computer system 304, from a computer-readable medium; (2) adding one or more computing devices to the computer infrastructure; and (3) incorporating and/or modifying one or more existing systems of the computer infrastructure to enable the computer infrastructure to perform the process steps of the invention.
As used herein, it is understood that the terms “program code” and “computer program code” are synonymous and mean any expression, in any language, code or notation, of a set of instructions intended to cause a computing device having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form. To this extent, program code can be embodied as one or more of: an application/software program, component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like. Computer readable media can be any available media that can be accessed by a computer. By way of example, and not limitation, computer readable media may comprise “computer storage media” and “communications media.”
“Computer storage media” include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
“Communication media” typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier wave or other transport mechanism. Communication media also includes any information delivery media.
The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
Certain examples and elements described in the present specification, including in the claims and as illustrated in the Figures, may be distinguished or otherwise identified from others by unique adjectives (e.g. a “first” element distinguished from another “second” or “third” of a plurality of elements, a “primary” distinguished from a “secondary,” an “another”, etc.) Such identifying adjectives are generally used to reduce confusion or uncertainty, and are not to be construed to limit the claims to any specific illustrated element or embodiment, or to imply any precedence, ordering or ranking of any claim elements, limitations or process steps.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to a person skilled in the art are intended to be included within the scope of the invention as defined by the accompanying claims.