Continuous cognitive cloud service maximization

Embodiments of the invention include a method, system and computer program product for the continuous cognitive discovery and management of cloud services in an aggregated distributed application. One method includes receiving a textual specification of cloud service criteria, searching a registry for cloud services corresponding to the textual specification and presenting locating cloud services corresponding to the textual specification. Thereafter, the located cloud services are ranked and presented and one or more of the presented cloud services are selected for deployment and deployed as part of an aggregated distributed application. Thereafter, the registry is searched to locate and rank new cloud services based upon the textual specification, and in response to determining that one of the new cloud services is ranked higher than an existing one of the cloud services already deployed, the determined one of the new cloud services is deployed into the aggregated distributed application.

BACKGROUND OF THE INVENTION

Field of the Invention

The present invention relates to cloud services and more particularly to locating and arranging cloud services into an application.

Description of the Related Art

Cloud based services represent the leading edge of distributed computing and are viewed as the foundation for developing a truly universal model for supporting the rapid development of component-based applications over the World Wide Web. Cloud based services are known in the art to include a stack of emerging standards that describe a service-oriented, component-based application architecture. Specifically, cloud based services, also known more simply as “cloud services”, are loosely coupled, reusable software components that semantically encapsulate discrete functionality and are distributed and programmatically accessible over standard Internet protocols.

Conceptually, cloud services represent a model in which discrete tasks within processes are distributed widely throughout a value net. Notably, many industry experts consider the service-oriented cloud services initiative to be the next evolutionary phase of the Internet. Typically, cloud services services can be defined by an interface such as the open cloud computing interface (OCCI), and can be implemented according to the interface, though the implementation details matter little so long as the implementation conforms to the interface. Once a cloud service has been implemented according to a corresponding interface, the implementation can be registered with a registry. Upon registration, the cloud service can be accessed by a service requestor through the use of any supporting messaging protocol, including for example, the simple object access protocol (SOAP) or by way of representational state transfer (REST).

BRIEF SUMMARY OF THE INVENTION

Embodiments of the present invention address deficiencies of the art in respect to cloud service location and aggregation and provide a novel and non-obvious method, system and computer program product for the continuous cognitive discovery and management of cloud services in an aggregated distributed application. In an embodiment of the invention, a method for the continuous cognitive discovery and management of cloud services in an aggregated distributed application includes receiving in a user interface to a cloud services manager, a textual specification of cloud service criteria and searching a registry for cloud services corresponding to the textual specification and presenting in the user interface locating cloud services corresponding to the textual specification. Thereafter, the located cloud services are ranked and presented in the user interface. Then, one or more of the cloud services presented in the user interface are selected for deployment and the selected cloud services are deployed as part of an aggregated distributed application. Finally, subsequent to the deployment of the selected cloud services, the registry is searched to locate new cloud services based upon the textual specification, the located new cloud services are ranked, and in response to a determination that one of the located new cloud services is ranked higher than an existing one of the cloud services already deployed as part of the aggregated distributed application, the determined one of the new cloud services is deployed into the aggregated distributed application.

In one aspect of the embodiment, the determined one of the new cloud services is deployed into the aggregated distributed application in substitute for the existing one of the cloud services. Alternatively, the determined one of the new cloud services is deployed into the aggregated distributed application in supplement to the existing one of the cloud services. In another aspect of the embodiment, the ranking is based upon crowdsourced feedback of quality of service (QoS) from different users of the cloud services. In yet another aspect of the embodiment, the ranking for a corresponding one of the cloud services is based upon a measured result of simulated performance of the corresponding one of the cloud services. Finally, in even yet another aspect of the embodiment, the searching of the registry to locate new cloud services based upon the textual specification, and the ranking of the located new cloud services occurs continuously.

In another embodiment of the invention, a data processing system is configured for the continuous cognitive discovery and management of cloud services in an aggregated distributed application. The system includes a host computing platform with one or more computers, each with memory and at least one processor. The host computing platform is communicatively coupled over a computer communications network to multiple different repositories of different cloud services and also to at least one registry of the different cloud services. The system yet further includes a cloud services management module executing in the memory of the host computing platform.

The module includes program code enabled during execution in the memory of the host computing platform to receive in a user interface to the module a textual specification of cloud service criteria, search the registry for cloud services corresponding to the textual specification and presenting in the user interface locating cloud services corresponding to the textual specification, rank the located cloud services and present the rankings for the located cloud services in the user interface, select one or more of the cloud services presented in the user interface for deployment and and deploy the selected cloud services as part of an aggregated distributed application, and, subsequent to the deployment of the selected cloud services, search the registry to locate new cloud services based upon the textual specification, rank located new cloud services, and respond to a determination that one of the located new cloud services is ranked higher than an existing one of the cloud services already deployed as part of the aggregated distributed application by deploying the determined one of the new cloud services into the aggregated distributed application.

DETAILED DESCRIPTION OF THE INVENTION

Embodiments of the invention provide for the continuous cognitive discovery and management of cloud services in an aggregated distributed application. In an embodiment of the invention, a textual specification of cloud service criteria is received in a user interface to a cloud services manager and, based upon the textual specification, one or more cloud services are presented in the user interface. The cloud services presented in the user interface are ranked and the ranked cloud services are further presented in the user interface as recommended. One or more of the cloud services are selected for deployment and deployed as part of an aggregated distributed application. Thereafter, new cloud services are discovered based upon the textual specification and ranked. Responsive to a determination that one of the cloud services is ranked higher than an existing cloud service already deployed as part of the aggregated distributed application, the higher ranked cloud service is deployed into the aggregated distributed application as either a supplement to or a replacement for the existing cloud services.

In further illustration,FIG. 1pictorially shows a process for the continuous cognitive discovery and management of cloud services in an aggregated distributed application. As shown inFIG. 1, an end user100provides cloud service criteria110to a cloud service manager user interface120. The end user100may present the criteria110structurally through a form in which different criteria are specified in text fields, radio button fields, drop down boxes and the like, or the end user100may present the criteria110in free-form and processed using natural language processing. The criteria110may include by way of example, situational criteria, functional preferences, location details, risk tolerance and run-time preferences.

Thereafter, cloud service manager190searches one or more registries of cloud services130(only a single registry shown for simplicity of illustration) for corresponding cloud services140matching all or a portion of the cloud service criteria110. Once cloud service manager190locates one or more cloud services140, based upon the criteria110, the cloud services manager190loads simulation data150for the located cloud services140that includes performance metrics nominally and under load as well as known performance metrics and performance deviations when combined with others of the located cloud services140. As well, the cloud services manager190loads crowdsourced QoS data160for the located cloud services140.

The cloud services manager190then utilizes the simulation data150and the crowdsourced QoS data160as a basis for ranking the located cloud services140. In this regard, those of the located cloud services140that most closely match the cloud service criteria110are ranked higher than more loosely matching ones of the located cloud services140. Further, those of the located cloud services140demonstrating greater performance when in the presence of others of the located cloud services140are ranked higher than other ones of the located cloud services140. Finally, those of the located cloud services140demonstrating a higher QoS indicated by the crowdsourced QoS data160are ranked higher than other ones of the located cloud services140. The cloud services manager190then presents the ranked ones of the located cloud services140in a ranked list170in the cloud service manager user interface120.

The end user100selects a combination140A,140B,140C of the located cloud services140in the ranked list170for deployment as an aggregated distributed application180. Alternatively, the cloud service manager190automatically selects the combination140A,140B,140C of the located cloud services140in the ranked list170for deployment as an aggregated distributed application180. Thereafter, the cloud service manager190continuously searches the registry130with the cloud service criteria110to locate cloud services140. Once located, the cloud service manager190continuously utilizes the simulation data150and the crowdsourced QoS data160to update the ranked list170.

Periodically, the cloud service manager190detects a better ranked cloud service140D comparable to an existing cloud service140A already deployed in the aggregated distributed application180. In that instance, the cloud service manager190either replaces the existing cloud service140A with the better ranked cloud service140D, or the cloud service manager190adds the better ranked cloud service140D to the aggregated distributed application in supplement to the existing cloud service140A. The addition or substitution of the better ranked cloud service140D is performed automatically without intervention by the end user100, or only with the authorization of the end user100.

The process described in connection withFIG. 1is implemented in a data processing system. In yet further illustration,FIG. 2schematically shows a data processing system configured for continuous cognitive discovery and management of cloud services in an aggregated distributed application. The system includes a host computing platform210with one or more computers, each with memory and at least one processor. A continuous cognitive cloud service maximization module230executes in the memory of the host computing platform210that includes each of a service simulation engine230A, a scoring and ranking engine230B, a service profiling engine230C, a cognitive processing engine230D, a runtime service switching engine230E and a notification engine230F. As well, the continuous cognitive cloud service maximization module230provides a requestor user interface240to the continuous cognitive cloud service maximization module230.

The requestor user interface240receives input from a requestor whether textually or audibly, the input defining one or more criteria for cloud services280to be aggregated into a composite application260. The input may include functional requirements of the cloud services280, as well as performance and risk tolerance for QoS of the cloud services280or the input may be received through simply data entry, through more complex menu/dialog-driven responses. The menu/dialog associated with the menu/dialog-driven responses may be configured through the use of ontology and context learned from the cognitive processing engine230D based upon previous requests and available cloud services along with any data associated with the cloud services. Optionally, an artificial intelligence (AI) component with natural language processing (NLP) is included to process the user input in real time so as to derive situational functional requirements, preferences, current location, risk tolerance and runtime requirements of the cloud services. Furthermore, the AI-NLP may interface with the cognitive processing engine230D to retrieve previous ontologies, requirements, dependencies and context in order to assist in the prompting of end users in the form of dialog/menu-driven guidance during the process of inputting requirements and preferences.

The cognitive processing engine230D itself performs pattern analysis, formulates the ontologies, derives the context, compares current and previous requirements, and determines and analyzes cloud service dependencies. The cognitive processing engine230D continuously learns and stores knowledge gained from end user requirements and requester profiles, service details from the service profiling engine230C, as well as results from simulations run in the service simulation engine230A. More particularly, the requestor profiles store current and past requester requirements that reflect ontologies that have been derived, any context that drives functional and non-functional requirements of a corresponding cloud service, different dependencies of the cloud services, all of are received in the requester user interface240. The requestor profiles also store notification preferences that include when, how and how often an end user is to be notified with respect to cloud service performance metrics and thresholds, or availability of new cloud services, and whether or not service switching from one cloud service to another in the aggregated distributed application260has occurred.

The service profiling engine230C catalogs and stores all data relating to the cloud services280including published metadata, discovered groupings and patterns of services, runtime and historical usage metrics, as well as all crowdsourced QoS feedback in data store270, rating and compliance data. The service profiling engine230C continuously crawls Internet sources to discover and collect this data from both known, existing and also new sources, including the registry250. The service profiling engine230C provides access to the stored data to the cognitive processing engine230D for marriage to respective ones of the requester profiles. Consequently, the collected data then is utilized by the service simulation engine230A.

More specifically, the service simulation engine230A continuously evaluates prospective new ones of the cloud services280for inclusion in the aggregated distributed application260by simulating the operation of each of the prospective new cloud services280. In order to evaluate prospective new cloud services280in various combinations to determine the viability and performance of the each of the prospective new ones of the cloud services280against a given set of requirements, the service simulation engine230A evaluates different combinations of the prospective new ones of the cloud services280in a virtualized runtime environment in order to observe and store performance metrics, deviations, as well as compliance and risks, and output from load testing and unit testing against related use cases. During this simulation, the service simulation engine230A evaluates and stores the various combinations, including situations where the interface, schema and application programming interface (API) of two comparable ones of the prospective cloud services280are not identical. This allows the service simulation engine230A to identify, and if possible, rectify any deviations that are required to accommodate a prospective new one of the cloud services280when connecting with one of two alternate other ones of the cloud services280.

Scoring and ranking engine230B evaluates the data and results from the service simulation engine230A about the different new prospective cloud services280and the various combinations thereof against a given requester profile as well as data from the service profiling engine230C in order to calculate a scoring/ranking that includes: (A) a compliance and risk score, (B) a matching score, (C) an evaluation result, and (D) an alternative candidate one of the cloud services280that might be considered. Optionally, the scoring and ranking engine230ranks a combination of prospective new ones of the cloud services280as an equivalent to a single other one of the cloud services280in consideration of a particular set of requestor requirements specified in corresponding criteria.

Runtime service switching engine230E reacts to information relevant to a deployed one of the cloud services280in the aggregated distributed application260, including data produced by the service simulation engine230A or data produced by the cognitive processing engine230D, by selecting a comparable but better ranked one of the cloud services280to replace or supplement the the deployed one of the cloud services280in the aggregated distributed application260. The runtime service switching engine230automatically replaces or supplements the deployed one of the cloud services280, or in the alternative, prompts an end user to approve the replacement or supplement of the deployed one of the cloud services280.

Finally, the notification engine230F communicates with a requestor based upon requestor specified preferences that include preferred transmission channels for receiving notifications and a frequency or trigger for receiving notifications. Typical triggers may include when a measured metric falls below a required threshold, when a new cloud service is evaluated to be a viable alternative to an existing, deployed one of the cloud services280, when service switching has occurred, or is recommended, periodically, or when new data is available such as new crowdsourced feedback in the data store270that might affect the scoring and therefore ranking or QoS of a corresponding one of the cloud services280.

In even yet further illustration of the operation of the continuous cognitive cloud service maximization module230,FIG. 3is a flow chart illustrating a process for the continuous cognitive discovery and management of cloud services in an aggregated distributed application. Beginning in block305, the requestor user interface receives cloud service criteria and in block310, the cloud services manager queries one or more cloud service registries with the criteria in order to identify one or more corresponding cloud services able to be deployed into an aggregated distributed application. In block315, the cloud service manager retrieves from the one or more registries different service descriptors for the different located cloud services.

In block320, the cloud services manager loads simulation data and crowdsourced QoS data for the located cloud services and in block325, each of the located cloud services are ranked based upon the simulation data and the crowdsourced QoS data and in block330, the cloud services manager selects different ones of the ranked cloud services for inclusion in an aggregated distributed application. Thereafter, in block335the cloud services manager deploys the selected ones of the ranked cloud services as part of the aggregated distributed application. Finally, a continuous cycle of refinement of the cloud services deployed in the aggregated distributed application commences.

With respect to the continuous cycle of refinement, in block340, the cloud services manager queries one or more of the registries once again based upon the cloud services criteria. In block345, once again the cloud services manager receives different descriptors for different corresponding cloud services meeting at least a portion of the criteria and in block350, the cloud services manager loads simulation data and crowdsourced QoS data for the different corresponding cloud services. In block355, the cloud services manager re-ranks the cloud services in consideration of the simulation data and the crowdsourced QoS data for the different corresponding cloud services and then, in block360the cloud services manager compares the newly re-ranked cloud services to those cloud services already deployed in the aggregated distributed application.

In decision block365, if the cloud services manager determines that an existing one of the cloud services already deployed in the aggregated distributed application is subject to replacement or supplement by one of the newly re-ranked cloud services, the cloud services manager initiates runtime service switching with respect to the newly re-ranked cloud services in the aggregated distributed application.

The present invention may be embodied within a system, a method, a computer program product or any combination thereof. The computer program product may include a computer readable storage medium or media having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention. The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.

A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.