Deployment of computer system services

Provided is a method for performing an action based on a predictive outcome of an intended service deployment. The method includes receiving information pertaining to an intended service deployment. The method further includes receiving data pertaining to the intended service deployment based on the received information. The method further includes determining a predictive outcome of the intended service deployment based on the received data. The method further includes performing an action based on the predictive outcome.

BACKGROUND

The present disclosure relates generally to the field of computer system services, and more particularly to predictive outcomes of the deployment of computer system services.

Information technology (IT) orchestration includes the large-scale coordination of automated computing tasks as a process or a workflow. As computing tasks become increasingly complex and interrelated to enable increasingly complex workflows and processes, orchestration of those tasks to run effectively and efficiently becomes increasingly valuable.

SUMMARY

Embodiments of the present disclosure include a method, computer program product, and system for performing an action based on a predictive outcome of an intended deployment of computer system services. The method includes receiving information pertaining to an intended service deployment. The method further includes receiving data pertaining to the intended service deployment based on the received information. The method further includes determining a predictive outcome of the intended service deployment based on the received data. The method further includes performing an action based on the predictive outcome.

DETAILED DESCRIPTION

Aspects of the present disclosure relate generally to the field of computer system services, and more particularly to performing an action based on a predictive outcome of the deployment of computer system services. While the present disclosure is not necessarily limited to such applications, various aspects of the disclosure may be appreciated through a discussion of various examples using this context.

IT services can be made up of automated computing tasks involving, without limitation, infrastructure, middleware, software, configurations, and combinations thereof. The automated computing tasks may be organized into, without limitation, programs, bundles, infrastructure, and combinations thereof. Deploying a service can refer to the initiation of one or more IT execution steps, which will subsequently utilize, for example, programs, bundles, and/or clusters of infrastructure, middleware, and/or software.

As such services become increasingly complex and interrelated (for example, the deployment of some highly complex workflows may include many nested deployments) to enable increasingly complex workflows and processes, orchestration of those tasks to run effectively and efficiently becomes increasingly challenging and also increasingly valuable.

More specifically, the computing time and space resources required for the deployment of a service increase with the size and complexity of the service. For example, each additional task and each additional relationship between tasks increases the amount of time required for deployment and execution of a service. Likewise, each additional task and relationship between tasks may increase the amount of computing resources required for deployment and execution of a service. Accordingly, as such services become increasingly complex and interrelated, the resources required for deployment of the services also increases.

Furthermore, each additional task and each additional relationship between tasks introduces another opportunity for failure of the service as every task and every relationship between tasks has its own risk of failure. Thus, as such services become increasingly complex and interrelated, more opportunities for failure of the services are introduced.

Therefore, it becomes increasingly valuable for a user to be provided with a prediction of the likelihood of success of the deployment of a service prior to committing the time and resources to that deployment. For example, if a user is provided with a prediction that, for a particular deployment of a particular service, there is a 45% chance of successful completion of that service, the user may choose not to deploy that service. In other words, the user is provided with a prediction regarding whether or not it is reasonable to commit the necessary time and resources to the deployment of the service prior to actually committing those resources. Moreover, such a prediction is valuable for an entire community of users sharing such resources. Avoiding the commitment of time and resources to a deployment that is unlikely to succeed allows those resources to remain available for other uses and/or other users.

For example, a cluster deployment may require infrastructure, configuration, and software, importing that cluster into another cloud, and performing an application deployment onto that managed cluster. Predicting the success rate of the deployment prior to deployment can help minimize wasted time and resources and frees up those resources for deployments which have a higher likelihood of success.

Some existing technologies provide users with predictions regarding the cost of a service deployment prior to deployment. However, the cost of a service deployment is only one factor to be considered when determining whether or not to deploy the service. It is desirable to additionally provide users with predictions regarding the estimated time to completion and likelihood of success of a particular deployment of a particular service.

Some existing technologies provide users with predictions based only on infrastructure availability. However, the reliability of such predictions is limited due to their failure to take into account other analytics that determine the success rate of a service. It is desirable to additionally provide users with predictions that holistically consider an entire set of available analytics to determine the success rate of a service.

Embodiments of the present disclosure may overcome the above, and other, problems by performing actions, such as providing users with predictions and recommendations regarding estimated time to completion and likelihood of success for a particular service deployment, prior to the service deployment, that are based on holistic analytics.

Turning now to the figures,FIG.1depicts a flowchart of an illustrative method100for performing an action based on a predictive outcome of an intended service deployment, in accordance with embodiments of the present disclosure. The method100may be performed by a computer system.

FIG.2provides a simplified example to illustrate the performance of the method100. In particular,FIG.2depicts a user interface200, which illustrates a user's experience in preparing to deploy a service. As such, the user interface200includes a “START”204, which represents the beginning of the user's interaction with the user interface200in preparation to deploy a service. The user interface200further includes a “DECISION”208, at which the user is presented with more than one option for deploying the service. In the example illustrated by the user interface200, the options presented to the user are represented by “CLOUD 1”212and “CLOUD 2”220, which indicate on which cloud service provider(s) the user is considering deploying the service. The user interface200further includes “INVENTORY 1”216, which represents an inventory that corresponds with “CLOUD 1”212, and “INVENTORY 2”224, which represents an inventory that corresponds with “CLOUD 2”220.

The user interface200further includes “CREDENTIAL”228, which represents a credential utilized during service deployment. The user interface200further includes “STACK”232, which represents a software stack utilized during service deployment. The user interface200further includes “END”236, which represents the end of the user's interaction with the user interface200in preparation to deploy a service.

Returning now toFIG.1, the method100includes operation104, wherein information pertaining to an intended service deployment is received. In other words, at operation104, the computing system receives information pertaining to an intended service deployment. In accordance with at least one embodiment of the present disclosure, the information is received from a user. More specifically, a user who is considering or preparing to deploy a service provides information pertaining to that intended service deployment to the system.

By way of non-limiting example, the user may provide information pertaining to the cloud provider on which the service is intended to be deployed and/or information pertaining to the service itself. For example, the user may provide information regarding infrastructure, middleware, software, programs, bundles, and/or clusters implicated in the intended service deployment. In accordance with at least one embodiment of the present disclosure, the user may provide such information by indicating intended choices or making selections where there is more than one choice for an aspect or feature of the intended service deployment. For example, the user may indicate which cloud provider, which type of virtual machine, which type of operating system, and/or which type of software is being considered for use for the intended service deployment.

In the context of the illustrative example of the user interface200provided inFIG.2, in the performance of operation104of the method100, a user is provided with a selection, represented by “DECISION”208. The “DECISION”208shown inFIG.2allows the user to select “CLOUD 1”212or “CLOUD 2”220. By selecting “CLOUD 1”212or “CLOUD 2”220, the user indicates which cloud service provider to use for the user's service deployment. In other words, in this illustrative example, by making the selection at “DECISION”208, the user provides information pertaining to the intended service deployment, as in operation104.

Returning toFIG.1, at operation108, once the information pertaining to the intended service deployment has been received, data pertaining to the intended service deployment, based on the received information, is requested. In accordance with at least one embodiment of the present disclosure, at operation108, the computing system requests data pertaining to the intended service deployment based on the information received in operation104. Some illustrative non-limiting examples of requested data and sources of requested data are discussed below.

In accordance with at least one embodiment of the present disclosure, requesting data can include data mining from multiple sources. For example, the computing system may request data pertaining to use metrics from prior deployments of the same service. Use metrics can include, for example, a success rate of prior deployments of the same service. The computing system may request data captured from logs or other data storage entity from prior deployments of the same service. Such data may indicate whether, where, and/or how the service has failed in past deployments.

The computing system may request data pertaining to a rate of change of the services. A rate of change of the services refers to a number of changes (such as, for example, updates) made to the service over a particular period of time. This rate of change may correlate to a level of instability that has been introduced into deployment of the service. Greater levels of instability may correlate to lower likelihoods of successful deployment for the services.

The computing system may request data pertaining to infrastructure metrics (such as, for example, availability or capacity) for the requested service. The computing system may request data pertaining to the size or number of resources required for deployment of the service. The computing system may request data pertaining to which dates and/or times are more likely or less likely to result in successful deployments of the service. Such data may correlate to patterns in traffic and/or capacity in which greater or lesser demands are typically made on the resources required for deployment of the service.

The computing system may request data pertaining to the amount of time that successful executions of the service deployment have taken in the past. More specifically, the computing system may request data pertaining to amounts of time taken for successful executions of the service deployment when the service deployment had various configurations or parameters.

In the context of the illustrative embodiment shown inFIG.2, if the user selects “CLOUD 1”212at “DECISION”208, the computing system may request data including use metrics from prior deployments of the same service, including a success rate and whether, where, and/or how the service has failed, when using “CLOUD 1”212. The computing system may further request data including the infrastructure (such as, for example, capacity) available on “CLOUD 1”212. The computing system may further request data including dates and/or times where deployments are typically more likely or less likely to succeed on “CLOUD 1”212.

Moreover, requesting data may further include requesting data pertaining to independent components which correspond to the user selected components. For example, in the context of the illustrative embodiment shown inFIG.2, the computing system may further request data pertaining to “INVENTORY 1”216, which corresponds to “CLOUD 1”212. In such embodiments, the computing system may request data pertaining to the “INVENTORY 1”216that is substantially similar to that described above with reference to “CLOUD 1”212.

Returning to the method100, at operation112, data pertaining to the intended service deployment is received. In particular, at operation112, the computer system receives the data that was requested at operation108. Accordingly, in the context of the illustrative embodiment shown inFIG.2, in the performance of operation112, the computer system may receive: use metrics from prior deployments of the same service on “CLOUD 1”212; data pertaining to the likelihood of success in utilizing “INVENTORY 1”216in the deployment of the service; available capacity on “CLOUD 1”212; and days of the week and times of day in which the deployment of the service is more likely to succeed on “CLOUD 1”212.

At operation116, one or more predictive outcomes of the intended service deployment are determined based on the data received at operation112. In particular, at operation116, the computer system determines predictive outcomes of the intended service deployment based on the received data. In other words, the computer system takes the received data into consideration to determine predictive outcomes of the intended service deployment. More specifically, the computer system compiles and/or integrates a variety of data received from multiple sources to determine one or more holistic predictive assessments of the deployment of the service. In accordance with at least one embodiment of the present disclosure, the performance of operation116includes applying one or more artificial intelligence (“AI”) algorithms to the received data.

The predictive outcomes can include, for example, a likelihood of success of the deployed service, based on the received data. The predictive outcomes can include, for example, an amount of time likely to be required for the deployment of the service, based on the received data.

In accordance with at least some embodiments of the present disclosure, such predictive outcomes can be based on intermediate determinations made using the received data. For example, an intermediate determination may indicate which operations of a service can be run sequentially or in parallel during deployment. The computer system may use such an intermediate determination to determine a predictive outcome by determining a best path of execution in which execution of the service deployment is successfully completed in the least amount of time. Thus, in other words, in accordance with at least some embodiments of the present disclosure, determining predictive outcomes at operation116further includes making at least one intermediate determination.

In the context of the illustrative embodiment shown inFIG.2, in the performance of operation116, the computer system determines predictive outcomes of the intended service deployment based on the received data. As noted above, in accordance with at least some embodiments of the present disclosure, determining the predicted outcomes includes making at least one intermediate determination based on the received data.

More specifically, the computer system may use the received metrics from prior deployments of the same service on “CLOUD 1”212to determine that deployments of that service on “CLOUD 1”212typically have a particular success rate. The computer system may use the received data pertaining to the likelihood of success in utilizing “INVENTORY 1”216in the deployment of the service to determine that deployments of that service on “CLOUD 1”212typically have a particular failure rate. The computer system may use the received days of the week and times of day in which the deployment of the service is more likely to succeed on “CLOUD 1”212to determine a particular time at which the deployment is most likely to succeed in the least amount of time. In this example, the particular success rate, the particular failure rate, and the particular time can be intermediate determinations or can be predictive outcomes determined using intermediate determinations.

The method100further includes operation120, wherein an action is performed based on the predictive outcomes determined at operation116. In accordance with at least some embodiments of the present disclosure, the action may include providing a user with a result. The result may be qualitative or quantitative. Such a result may include, for example, a predicted likelihood of success of the service deployment, given the received data. Additionally, or alternatively, such a result may include a predicted amount of time required for successful completion of the deployment of the service.

In the context of the illustrative embodiment shown inFIG.2, in the performance of operation120, the computer system may provide the user with a qualitative or quantitative likelihood of success of deploying the service on “CLOUD 1”212. For example, the computer system may provide the user with a predicted result of “unlikely” or “25% likely” to succeed. Additionally, or alternatively the computer system may provide the user with a predicted result of “moderate” or “greater than 5 hours” or “6 hours, 34 minutes” regarding the amount of time required for successful completion of the deployment of the service.

In accordance with at least some embodiments of the present disclosure, performing the action at operation120may include providing a user with a suggestion. Such a suggestion may include, for example, a remediation to be applied to the service or the intended service deployment to improve the likelihood of a successful deployment or to reduce the amount of time required to complete a successful deployment of the service.

In the context of the illustrative embodiment shown inFIG.2, for example, in such embodiments, the computer system may provide the user with a suggestion to deploy the service at 3:00 am on “CLOUD 1”212to improve the likelihood of a successful deployment or to reduce the amount of time required to complete a successful deployment of the service.

In accordance with at least some embodiments of the present disclosure, performing the action at operation120may include automatically generating one or more comparative predictive outcomes. In such embodiments, the performance of operation120further includes the performance of an additional method (which may also be referred to as a “sub-method”)300, which is depicted inFIG.3.

As shown inFIG.3, the method300includes, at operation304, generating comparative information. More specifically, in the performance of operation304, the computer system generates comparative information. Such comparative information is substantially similar to the information received from the user at operation104and includes one or more changes relative to the received information. In accordance with at least some embodiments, the computer system begins by making a duplicate copy of the received information and then makes at least one change to the duplicate copy such that the comparative information differs from the received information by that at least one change.

In the context of the illustrative embodiment shown inFIG.2, the performance of operation304includes making a duplicate copy of the received information, including the user's selection of “CLOUD 1”212. The performance of operation304further includes making a change to the duplicate copy. In this particular example, generating the comparative information includes changing the selection of “CLOUD 1”212to “CLOUD 2”220in the duplicate copy.

At operation308, the computer system then requests comparative data corresponding to the generated comparative information. At operation312, the computer system receives the requested comparative data. In accordance with at least some embodiments of the present disclosure, the computer system can request and receive comparative data in substantially the same manner that the computer system requested and received data in the performance of operations108and112.

At operation316, the computer system then determines comparative predictive outcomes based on the received comparative data. In such embodiments, performing the action at operation120can include providing the user with the predictive outcomes determined at operation116of method100and with the comparative predictive outcomes determined at operation316of method300. Such embodiments facilitate the user's ability to make an informed decision regarding their intended service deployment.

In the context of the illustrative embodiment shown inFIG.2, the performance of operation316includes determining the predictive outcomes based on the comparative data received for the comparative information, including the selection of “CLOUD 2”220. In other words, the computer system determines comparative predictive outcomes that are substantially similar to the predictive outcomes determined at operation116of method100except that the comparative data on which the comparative predictive outcomes are based is received for the service deployment scenario in which “CLOUD 2”220has been selected. By way of example, the comparative predictive outcomes generated at operation316can include “60% likely” to succeed and/or “12 hours, 13 minutes” regarding the amount of time required for successful completion of the deployment of the service.

Accordingly, in such embodiments, at operation120, the computer system provides the user with both the predictive outcomes based on the user's selection of “CLOUD 1”212determined at operation116and the comparative predictive outcomes based on the computer system's automatically generated selection of “CLOUD 2”220determined at operation316. For example, the computer system provides the user with “25% likely” and/or “6 hours, 34 minutes” with respect to “CLOUD 1”212and also provides the user with “60% likely” and/or “12 hours, 13 minutes” with respect to “CLOUD 2”220. The automatically generated comparative predictive outcome provides the user with useful information regarding their intended service deployment as well as further alternative information that the user may also consider in their decision regarding the service deployment.

In accordance with at least some embodiments of the present disclosure, in the performance of operation120, the computer system can also provide the user with the specific changes that were made in the comparative information relative to the received information. Such embodiments further facilitate the user's ability to make an informed decision regarding their intended service deployment. Furthermore, by providing comparative predictive outcomes, such embodiments may also reveal sources of particular issues in the intended service deployment.

In accordance with at least one embodiment of the present disclosure, in the performance of operation120, the computer system can automatically generate comparative predictive outcomes only if a predictive outcome exceeds a particular threshold (for example, if the likelihood of success is less than 50% and/or if the time to successful completion is greater than 12 hours) or falls within a particular range. Alternatively, in accordance with at least one embodiment of the present disclosure, the computer system can automatically generate comparative predictive outcomes regardless of the predictive outcome.

In accordance with at least one embodiment of the present disclosure, in the performance of operation120, the computer system can automatically generate one comparative predictive outcome. Alternatively, in accordance with at least one embodiment of the present disclosure, the computer system can automatically generate more than one comparative predictive outcome. In accordance with at least one embodiment, the number of comparative predictive outcomes to be automatically generated can be predetermined. In accordance with at least one embodiment, the number of comparative predictive outcomes can depend on the number of variables of the service being deployed. For example, a greater number of comparative predictive outcomes may be generated for more complex services, which depend on a greater number of variables.

In accordance with at least one embodiment of the present disclosure, in the performance of operation120, the computer system can automatically deploy the service in accordance with the received information if the predictive outcome exceeds a particular threshold (for example, if the likelihood of success is greater than 80% and/or if the time to successful completion is less than 2 hours) or falls within a particular range.

Alternatively, in accordance with at least one embodiment of the present disclosure, the computer system can automatically deploy the service in accordance with the generated comparative information if the predictive outcome exceeds a first threshold (for example, if the likelihood of success is less than 50% and/or if the time to successful completion is greater than 12 hours) and the comparative predictive outcome exceeds a second threshold (for example, if the likelihood of success is greater than 80% and/or if the time to successful completion is less than 2 hours). In some such embodiments, the computer system can automatically deploy the service in accordance with the generated comparative information only if a difference between the predictive outcome and the comparative predictive outcome exceeds a threshold.

In accordance with at least one embodiment, a predetermined number of comparative predictive outcomes may be limited by an upper limit. This may become increasingly useful as services become increasingly complex. In such embodiments, selecting which comparative predictive outcomes to present to the user may include ranking the comparative predictive outcomes according to their likelihood of success and/or amount of time required to complete a successful deployment. In such embodiments, those comparative predictive outcomes receiving the highest likelihood of success and/or least amount of time required to complete a successful deployment may be presented to the user.

It is to be understood that the aforementioned advantages are example advantages and should not be construed as limiting. Embodiments of the present disclosure can contain all, some, or none of the aforementioned advantages while remaining within the spirit and scope of the present disclosure.

Referring now toFIG.4, shown is a high-level block diagram of an example computer system401that may be used in implementing one or more of the methods, tools, and modules, and any related functions, described herein (e.g., using one or more processor circuits or computer processors of the computer), in accordance with embodiments of the present disclosure. In some embodiments, the major components of the computer system401may comprise one or more CPUs402, a memory subsystem404, a terminal interface412, a storage interface416, an I/O (Input/Output) device interface414, and a network interface418, all of which may be communicatively coupled, directly or indirectly, for inter-component communication via a memory bus403, an I/O bus408, and an I/O bus interface unit410.

The computer system401may contain one or more general-purpose programmable central processing units (CPUs)402A,402B,402C, and402D, herein generically referred to as the CPU402. In some embodiments, the computer system401may contain multiple processors typical of a relatively large system; however, in other embodiments the computer system401may alternatively be a single CPU system. Each CPU402may execute instructions stored in the memory subsystem404and may include one or more levels of on-board cache.

One or more programs/utilities428, each having at least one set of program modules430may be stored in memory404. The programs/utilities428may include a hypervisor (also referred to as a virtual machine monitor), one or more operating systems, one or more application programs, other program modules, and program data. Each of the operating systems, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules430generally perform the functions or methodologies of various embodiments.

Although the memory bus403is shown inFIG.4as a single bus structure providing a direct communication path among the CPUs402, the memory subsystem404, and the I/O bus interface410, the memory bus403may, in some embodiments, include multiple different buses or communication paths, which may be arranged in any of various forms, such as point-to-point links in hierarchical, star or web configurations, multiple hierarchical buses, parallel and redundant paths, or any other appropriate type of configuration. Furthermore, while the I/O bus interface410and the I/O bus408are shown as single respective units, the computer system401may, in some embodiments, contain multiple I/O bus interface units410, multiple I/O buses408, or both. Further, while multiple I/O interface units are shown, which separate the I/O bus408from various communications paths running to the various I/O devices, in other embodiments some or all of the I/O devices may be connected directly to one or more system I/O buses.

It is noted thatFIG.4is intended to depict the representative major components of an exemplary computer system401. In some embodiments, however, individual components may have greater or lesser complexity than as represented inFIG.4, components other than or in addition to those shown inFIG.4may be present, and the number, type, and configuration of such components may vary.

It is to be understood that although this disclosure includes a detailed description on cloud computing, implementation of the teachings recited herein are not limited to a cloud computing environment. Rather, embodiments of the present invention are capable of being implemented in conjunction with any other type of computing environment now known or later developed. Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

Characteristics are as Follows:

Service Models are as Follows:

Deployment Models are as Follows:

In addition to embodiments described above, other embodiments having fewer operational steps, more operational steps, or different operational steps are contemplated. Also, some embodiments may perform some or all of the above operational steps in a different order. Furthermore, multiple operations may occur at the same time or as an internal part of a larger process. The modules are listed and described illustratively according to an embodiment and are not meant to indicate necessity of a particular module or exclusivity of other potential modules (or functions/purposes as applied to a specific module).

When different reference numbers comprise a common number followed by differing letters (e.g.,100a,100b,100c) or punctuation followed by differing numbers (e.g.,100-1,100-2, or100.1,100.2), use of the reference character only without the letter or following numbers (e.g.,100) may refer to the group of elements as a whole, any subset of the group, or an example specimen of the group.