The present disclosure generally relates to computing environments comprising computing resource providers, and more particularly relates to selecting optimum computing resource providers within a computing environment.
A user of computing services such as (but not limited to) an infrastructure cloud service has the option to select a service provider where their resources are provisioned. A computing resource zone is a data center physically isolated from other computing resource zones. Computing resource zones are usually offered in various geographies. However, computing resource zones offered by a given provider are generally not identical. For example, the hardware, infrastructure, type and version of management stack, and load characteristics can differ across the offered computing resource zones. As a result, services offered by different computing resource zones can also vary.
In one embodiment, a method with an information processing system for selecting at least one service provider in a computing environment is disclosed. The method comprises receiving a service request from a user. The service request comprises at least a set of service requirements to be satisfied by at least one service provider. A satisfaction level is predicted for each of a plurality of service providers with respect to each of the set of service requirements. The prediction is based on a prediction satisfaction model associated with each of the plurality of service providers. A probability of an actual observed satisfaction level being higher than at least a user defined threshold is calculated for each of the predicted satisfaction levels. At least one service provider is selected from the plurality of service providers for satisfying the service request based on the probability that has been calculated for each satisfaction level predicted for each of the plurality of service providers.
In another embodiment, an information processing system for selecting at least one service provider in a computing environment is disclosed. The information processing system comprises a memory and a processor communicatively coupled to the memory. A service provider manager is communicatively coupled to the memory and the process. The service provider manager is configured to perform a method. The method comprises receiving a service request from a user. The service request comprises at least a set of service requirements to be satisfied by at least one service provider. A satisfaction level is predicted for each of a plurality of service providers with respect to each of the set of service requirements. The prediction is based on a prediction satisfaction model associated with each of the plurality of service providers. A probability of an actual observed satisfaction level being higher than at least a user defined threshold is calculated for each of the predicted satisfaction levels. At least one service provider is selected from the plurality of service providers for satisfying the service request based on the probability that has been calculated for each satisfaction level predicted for each of the plurality of service providers.
In a further embodiment, a computer program product for selecting at least one service provider in a computing environment to satisfy at least one service request is disclosed. The computer program product comprises a storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method. The method comprises receiving a service request from a user. The service request comprises at least a set of service requirements to be satisfied by at least one service provider. A satisfaction level is predicted for each of a plurality of service providers with respect to each of the set of service requirements. The prediction is based on a prediction satisfaction model associated with each of the plurality of service providers. A probability of an actual observed satisfaction level being higher than at least a user defined threshold is calculated for each of the predicted satisfaction levels. At least one service provider is selected from the plurality of service providers for satisfying the service request based on the probability that has been calculated for each satisfaction level predicted for each of the plurality of service providers.
The accompanying figures where like reference numerals refer to identical or functionally similar elements throughout the separate views, and which together with the detailed description below are incorporated in and form part of the specification, serve to further illustrate various embodiments and to explain various principles and advantages all in accordance with the present disclosure, in which:
Generally, service users are made aware of only a small subset of the differences between computing services offered across related computing resource zones. For example, the differences between the types of offered zone instances, their sizes, and prices are published to the users. However, service users have observed a number of differences in the quality of service provided by computing resource zones that are not captured in the advertised attributes of the different zones. For example, business applications deployed across independent computing resource zones may experience different Quality of Service (QoS) due to non-uniform physical infrastructures. Since the perceived QoS against specific requirements are generally not published, selecting a computing resource zone that would most satisfy the user requirements is a challenge.
However, one or more embodiments of the present disclosure predict unpublished computing resource zone (e.g., service provider) behavior. This predicted behavior is used to determine a probabilistic guarantee for the satisfaction of user service requirements by one or more service computing resource zones. A computing resource zone can then be selected to satisfy the user request based on the probabilistic guarantee. In addition, prediction models are built from historical usage data for each computing resource zone and are updated as the nature of the zone and requests change.
Operating Environment
The user systems 102 access the computing environment 104 via one or more interfaces (not shown) such as a web browser, application, etc. to utilize computing resources/services 109, 111, 113, 115 provided by one or more service providers. It should be noted that throughout this discussion the terms “computing resources” and “services” are used interchangeably. Examples of computing resources/services are applications, processing, storage, networking, and/or the like. Computing resources/services 109, 111, 113, 115 are provided by and/or are hosted on a plurality of physical information processing systems 108, 110, 112, 114 herein referred to as “service providers” or “computing resource zones”. In other embodiments, a service provider is an entity that owns the computing resources/services offered the information processing systems 108, 110, 112, 114, and/or that owns the information processing systems 108, 110, 112, 114. The information processing systems 108, 110, 112, 114, in one embodiment, reside in different locations. However, two or more of the systems 108, 110, 112, 114 can reside at the same location. It should be noted that the computing resources/services 109, 111, 113, 115 could also be provided by and/or hosted on one or more virtual machines being executed by one or more of the physical information processing systems 108, 110, 112, 114.
The computing environment 104 further comprises one or more information processing systems 116 comprising a service provider manager (SPM) 118. The SPM 118, in one embodiment, comprises a prediction model generator 220, and a service provider selector 222, as shown in
As shown in
The SPM 118 calculates and/or records observed (actual) utility values 303 for a plurality of deployed instances, and stores this data in a history log 305. The SPM 118 utilizes these historical utility values as training data 224 to train (and re-train 307) prediction models 326 for each service provider 308, 310, 312. The prediction models 326 assist the SPM 118 in learning unpublished attributes of a computing service provided by the service providers 308, 310, 312. The service SPM 118 accommodates time varying changes in service attributes by reconstructing the models based on continuously changing input data. Given the prediction model 326 and requirements specified in a new service request, the SPM 118 formulates and solves an optimization problem for selecting the optimum service provider to satisfy the request.
One advantage of embodiments of the present disclosure is that service users are moved from the common practice of manually selecting a service provider by relying on community knowledge to the automatic selection of customized solutions focused on their needs. Also, embodiments of the present disclosure are not limited to single provider deployments. For example, one or more embodiments are also applicable to deployments across multiple providers, i.e., the resources/services can be placed in different zones of different providers. In addition, one or more embodiments can be utilized by cloud brokering services in a multi-cloud setting.
Selecting Optimum Service Providers Under Uncertainty
The following is a more detailed discussion regarding prediction-based selection of service providers. As discussed above, the SPM 118 utilizes prediction models 226 for each provider 108, 110, 112, 114 to select one (or more) of these providers to satisfy a user service request. The model generator 220 creates prediction models 226 based on historical usage data (referred to herein as “training data 224”) stored in history logs associated with the service providers 108, 110, 112, 114. The training data 224 is generated based on deploying an instance of a service request to a service provider(s) 108, 110, 112, 114. In one embodiment, deploying an instance of a service request comprises provisioning one or more services 109, 111, 113, 115 of a selected service provider(s) 108, 110, 112, 114 for the service request. The utility function of a given service provider is computed by comparing the satisfaction level of user requirements in the user request after this deployment.
In one embodiment, the training data 224 is generated after an instance of a service request has been deployed. This allows the training data 224 to be based on service provider measurements (e.g., measurements of QoS parameters) that can generally only be performed after an instance of a service request has been deployed. For example, attribute values such as service provider size, hardware infrastructure, or management stack (including instance placement policies) result in different levels of reliability and performance. Attribute values that influence the QoS offered by a service provider for a particular instance type are usually not known. Also, quality of service data for any particular instance type in a particular service provider is generally not known a priori, either. In one embodiment, a monitoring service provided by, for example, the service provider can be utilized to monitor the deployment and runtime characteristics of provisioned instances of service requests.
With respect to generating training data/samples, the model generator 220 receives one or more user service requests as an input. The user service request, in one embodiment, is represented by a vector ri. The ith user requirement represented with the vector ri=[ri1, ri2, . . . , rim], where rij, j=1, . . . , m, specifies the jth requirement of user i expected to be satisfied by its deployment in a service provider. User requirements include (but are not limited to): resources such as the resource amounts required by the user (e.g., CPU, memory etc.); QoS criteria such as quality of service objective that a user wants to achieve (e.g., highest reliability, minimum execution time, highest performance); constraints such as restrictions around possible service provisioning (e.g., locality constraints, service type constraints, load balancing constraints); user instance types such as the type of instance the user wants to run; and user machine types such as the type of machine that the user requires the service provider to provide.
The SPM 118 selects at least one of the service providers 108, 110, 112, 114 and deploys/provisions at least one service 109, 111, 113, 115 in this service provider for the request ri, where the service(s) 109, 111, 113, 115 match the set of requirements in the request ri. The model generator 220 then obtains measurements/data for the service provider with respect to the request. These measurements comprise data such as (but not limited to) the architecture of a node on which the instance of the service request was deployed, notifications of its failure and recovery, and runtime performance measurements such as throughput of various resources, delays, etc. The model generator 220 evaluates the measurements of the service provider against the requirements rij specified in the request ri. The result of this evaluation is referred to as a “satisfaction level”.
For example, let cik∈[0,1] denote the satisfaction level of requirement rik. If the requirement rik is fully satisfied, cik=1; otherwise 0<cik<1. In one embodiment, the evaluation process produces a vector of satisfaction levels CiT=[ci1, ci2, . . . , cim] for the deployed request ri with respect to its service provider. In one embodiment, the vector of satisfaction levels CiT=[ci1, ci2, . . . , cim] is defined by a utility function ƒ(ri)∈[0,1]. The utility function reaches its maximum value of 1 when there is complete satisfaction. The value of ƒ(ri) depends on how much the requirements of an incoming request are satisfied by the service provider for which an instance was deployed.
It should be noted that satisfaction of some requirements might be more crucial than others. Therefore, the satisfaction level of each requirement may have different significance. The weight vector WiT=[wi1, wi2, . . . , wim] denotes the significance levels for requirements ri. A higher value of wik indicates a stronger significance of requirement rik with respect to the other requirements of the request. One non-limiting example of defining the utility function ƒ(ri)∈[0,1] is to take the linear combination of the satisfaction level CiT for each incoming request and the associated weights WiT multiplied by an indicator function φ(ri). The indicator function is used to set the satisfaction level to zero when the request is rejected. In one example, a request is rejected if the service providers do not have enough available capacity to satisfy the request. Rejection depends on the admission/placement policy. In one embodiment, the utility function is defined as:
The satisfaction level for user i against the requirement rik is cik∈[0,1]. The weight wik∈≧0 indicates the importance of satisfying a particular requirement. Note that the selection of φ(ri)=(Σjwij)−1 when there is no rejection normalizes that weight vector and limits the maximum possible value of ƒ(ri) to 1.
Consider one example with the following requirement vector for an incoming service request: ri=[rS, rL, rI, rA, rM]. This request comprises requirements related to the size, supported instance and infrastructure type, and reliability of a service provider. The description of the requirement attributes are as follows:
rS: Requested CPU and RAM resources where rS∈{micro, small, medium, large, xlarge}.
rL: Level of reliability where rL∈{Low, Medium, High}.
rI: Tolerance to interruption where rI∈[0, 1].
rA: Requested instance type where rA∈{Compute, Storage, Memory Instance}.
rM: Requested machine type where rM∈{TypeA, TypeB}.
In this example, the SPM 118 deploys an instance of the service request to at least one of the service providers 108, 110, 112, 114 based on the user request. As discussed above, deploying an instance of the service request comprises provisioning a set of computing resources (services) at a selected service provider(s) that satisfies the requirements included within the service request. After deployment, the model generator 220 determines the satisfaction level of the requirements within the request. The satisfaction level is determined based on measurements obtained from a monitoring tool(s) deployed along with the instance. The measured satisfaction level for each requirement is captured by vector CiT. For example, assume that the service request comprised the following requirement vector ri∈{“large”, “medium”, “1”, “Compute intense”, “Machine Type A”}. The model generator 220 observes the following satisfaction vector:
Note that, in one embodiment, partial satisfaction levels are not considered. Therefore, the size and tolerance to interruption requirements of the incoming request, rS={“large”} and rI={“1”}, are not satisfied while other requirements are fully satisfied. If the associated weight vector is
Note that due to the weights associated with each requirement, the satisfaction level did not exceed 0.5 when more than half of the requirements are satisfied.
After the utility function for a service provider has been calculated for a given request, the model generator 220 stores the vector of satisfaction levels CiT, its associated a utility function ƒ(ri)∈[0,1], and the requirements of the corresponding user request as training data 224 for a given service provider 108, 110, 112, 114.
The model generator 220 utilizes the training data 224 to generate a prediction model 226 for each of the service providers.
A prediction model 226 maps the requirement vector ri=[ri1, ri2, . . . , rim] of an incoming service request to a user satisfaction measure defined by a utility function ƒ(ri)∈[0,1]. For example, let n denote a prediction model 226, such as a classifier, for the satisfaction level of an incoming service request by a service provider in which the request was deployed. Classification models assume that utility values are discrete. However, in cases where the utility value takes continuous values, regression models are used for prediction. The model generator 220 trains n uses the training data 224 associated with service provider n such that n learns the behavior of service provider n.
After the training phase, learns how to predict the utility function (satisfaction level) for a requirement vector rl as shown in the following equation:
(rl)={tilde over (f)}(rl) (EQ 3).
Here, {tilde over (f)}(rl) is the predicted satisfaction level. The average prediction error, ē(), for model is given as:
In order to find an unbiased estimation of the predicted error, the model generator 220 tests a trained prediction model 226 against a set of requirement vectors that are not part of the training set for validation. Cross-validation is used to evaluate the models 226 by dividing the sample data into training and validation segments. The first segment is used to learn the model and the second segment is used for validation. Equation (5) above shows how to estimate the testing error by using M test data. During the cross validation process the training and validation sets should cross-over in successive rounds such that each data point has a chance of being validated. In one embodiment, k-fold cross validation is utilized to measure the accuracy of the prediction models.
Once the prediction models 226, , are generated for each service provider, the service provider selector 222 utilizes the models 226 to select service providers for incoming service requests that maximize the satisfaction of the requests. In this embodiment, the service provider selector 222 predicts the utility values of each service provider for incoming requests using the prediction models 226. The service provider selector 222 selects a service provider to provide a service(s) for a user request based on the predicted utility value. In one embodiment, the service provider selector 222 utilizes one or more selection policies when selecting a service provider.
In one embodiment, the service provider selector 222 selects a service provider based on determining a probabilistic guarantee for the satisfaction of the user requirements for each service provider. In some instances, users may want to know the maximum satisfaction that can be guaranteed by the selected service provider for a specific percentage of the time. In other words, knowing that user satisfaction will be at least 85% more than 90% of the time is more significant than just knowing that a 95% satisfaction is likely. Therefore, one or more embodiments derive probabilistic bounds for customer satisfaction to provide a probabilistic guarantee for the satisfaction of the user requirements.
In this embodiment, a service request 601 is received, as shown in
In one embodiment, the SPM 118 utilizes confusion matrices to calculate the probability of a given predicted utility value being higher than a given threshold. The confusion matrices, in one embodiment, are obtained as a result of training the prediction models 226 for predicting customer satisfaction in each service provider. In one embodiment, a confusion matrix is generated for all prediction models 226. A confusion matrix is a table that comprises information about actual and predicted classifications performed by a classification system. Each column of a confusion matrix represents instances of a predicted class, while rows represent the instances in an actual class. A column in a confusion matrix gives the distribution of actual class labels for a given predicted class.
In an embodiment with N service providers, there are N prediction models 226 and an N associated confusion matrix. The class labels of this matrix are discrete customer satisfaction levels. In one example, the satisfaction levels/values are between 0 and 1. However, other satisfaction levels/values are applicable as well. As an example, if SPM 118 has observed 5 actual satisfaction levels (as stored in the history log 305), there are 5 class labels such as [0, 0.2, 0.4, 0.6, 0.8, 1.0]. The SPM 118 calculates a cumulative probability distribution from the confusion matrix of each prediction model 226. In other words, for every service provider, the SPM 118 obtains the distribution of actual satisfaction for a given predicted satisfaction level. So for N services and 5 labels there are 5×N distribution functions.
The SPM 118 uses these distribution functions to calculate the probability of actual satisfaction being greater than a user specified threshold for each service provider. Stated differently, SPM 118 calculates the following probability P for each service request against each service provider:
P(u>T|u′=S,Service Provider K) for K=1,2, . . . ,n (EQ 5).
Here u is the actual observed/recorded satisfaction level of a given request, u′ is the predicted satisfaction level when service provider K is selected, and T is a user defined threshold. The SPM 118 checks if this probability P is greater than a defined probabilistic bound (confidence level) ε, which can be user defined. If this probability P is higher than the probabilistic bound ε this guarantees that the threshold T will be satisfied by the associated service provider with ε probability. The SPM 118 identifies the service provider that gives the satisfaction level that exceeds the threshold with the highest confidence and, therefore, maximum probability (i.e., the satisfaction level with the highest probability P over ε. This maximum can be represented as follows:
MaxK{(P(actual satisfaction>T|predicted satisfaction j,Service Provider K)>ε} (EQ 6).
The corresponding service provider associated with this maximum satisfaction level is selected by the service selector 222. The SPM 118 then deploys an instance of the service request to the selected service provider, as discussed above.
The following is one non-limiting example illustrating the above process for selecting at least one optimum service provider under uncertainty. In this example, the SPM 118 receives a service request and predicts its satisfaction level with respect to each of a plurality of service providers, as discussed above. The SPM 118 generates a confusion matrix for each satisfaction level that has been predicted. In this example, there are five service providers. Therefore, five satisfaction levels have been predicted for the received request. The following only discusses the operations performed with respect to one of these service providers for simplicity. However, the same process/operations are performed for the remaining service providers.
In this example, the predicted satisfaction level for the request in service provider SP_1 is 1. The SPM 118 calculates the probability of this satisfaction level being greater than a given threshold. The SPM then checks if this probability is greater than or equal to a defined confidence. For example, the SPM 118 generates a confusion matrix 700 for the prediction model 226 build for service provider SP_1, as shown in
Once the confusion matrix 700 is generated for the service provider SP_1, the SPM 118 calculates the distributions of predicted satisfaction levels from the service confusion matrices. For example, based on the confusion matrix 800 in
The SPM 118 utilizes the cumulative distribution functions of the actual satisfaction level for the given predicted satisfaction level to calculate the following probability:
P
J(u>T|u′) (EQ 7),
which is the probability that the actual satisfaction level u will be more than the user threshold T when the predicted satisfaction level is u′ for a service provider J. In the example above, if the user defined threshold T is set to 0.6 and the user defined confidence level ε is set to 0.75, the following probability is satisfied only when the predicted value is 1 for service provider SP_1:
P
1(u>0.6|u′=1)=0.78>0.75.
Now, assume that P(u>0.6|u′=0.75)=0.95 for service provider SP_2; P(u>0.6|u′=0.5)=0.7 for service provider SP_3; and P(u>0.6|u′=0.5)=0.75 for service provider SP_4. Here, for a given service request, the probability that the actual satisfaction level is greater than 0.6 is predicted as 0.78, 0.75, 0.7, and 0.5 for services provider SP_1, SP_2, SP_3, and SP_4, respectively. Among these four service provider, service provider SP_3 is discarded since its probability does not satisfy the confidence level of 0.75. From the remaining three service providers, a maximum is achieved in service provider SP_3, a probability of 0.95. Based on the above, the SPM 118 determines that the satisfaction level will be more than 0.6 with 95% confidence if service provider SP_2 is selected. Therefore, the SPM 118 selects service provider SP_2 since its confidence level is maximum, and deploys the service request to SP_2.
Operational Flow Diagrams
The SPM 118, at step 1006, selects one of the service providers based on receiving the user's request. The SPM 118, at step 1008, deploys an instance of the request to the user at the selected service provider. As discussed above, this deployment comprises provisioning a set of computing services (e.g., computing resources) for the user at the selected service provider that satisfy the requirements in the request. The SPM 118, at step 1010, obtains measurements for the selected service provider with respect to the requirements of the user's request. These measurements comprise data including (but are not limited to) the architecture of a node on which the instance was deployed, notifications of its failure and recovery, and QoS parameters (e.g., runtime performance measurements such as throughput of various resources, delays, etc.).
The SPM 118, at step 1012, analyzes the obtained measurements and determines a satisfaction level (i.e., utility function) of the service provider with respect to the requirements of the user's request. The SPM 118, at step 1014, stores the calculated utility function as a set of training data 224 for the service provider. The SPM 118, at step 1016, determines if a sufficient number of training samples has been obtained. The result of this determination is negative, the control flows back to step 1104. If the result of this determination is positive, the SPM 118, at step 1018, generates a prediction model 226 based on the set of training data 224. The control flow exits at step 1020.
The SPM 118, at step 1210, calculates a cumulative probability distribution from the confusion matrix of the actual satisfaction levels with respect to the historical set of predicted satisfaction levels. The SPM 118, at step 1212, calculates the probability of an actual satisfaction level being greater than a user specified threshold for every service provider based on the cumulative probability distributions. The SPM 118, at step 1214, determines if the probability associated with a predicted satisfaction level satisfies the threshold with a probabilistic bound (confidence level). If the result of this determination is negative, the service provider associated with the probability is removed from consideration, at step 1216. The SPM 118, at step 1218, determines if all service providers have been considered. If the result of this determination is positive, the control flows to step 1222. If the result of this determination is negative, the flow returns to step 1214.
If the result of step 1214 is positive, the control flows to step 1220 where the SPM 118 adds the service provider associated with the probability being consider to the consideration pool. The SPM 118, at step 1222, compares each of the probabilities associated with the service providers in the consideration pool and identifies the service provider with the highest confidence level. The SPM 118, at step 1224, selects this service provider and deploys an instance of the service request to the provider. The control flow then exits at step 1226.
Cloud Computing
It should be understood that although the following includes a detailed discussion on cloud computing, implementation of the teachings recited herein are not limited to a cloud computing environment. Rather, embodiments of the present disclosure are capable of being implemented in conjunction with any other type of computing environment now known or later developed, including client-server and peer-to-peer computing environments. For example, various embodiments of the present disclosure are applicable to any computing environment with a virtualized infrastructure or any other type of computing environment.
For convenience, this discussion includes the following definitions which have been derived from the “Draft NIST Working Definition of Cloud Computing” by Peter Mell and Tim Grance, dated Oct. 11, 2009, which is cited in an IDS filed herewith, and a copy of which is attached thereto. However, it should be noted that cloud computing environments that are applicable to one or more embodiments of the present disclosure are not required to correspond to the following definitions and characteristics given below or in the “Draft NIST Working Definition of Cloud Computing” publication. It should also be noted that the following definitions, characteristics, and discussions of cloud computing are given as non-limiting examples.
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. A cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
Cloud characteristics may include: on-demand self-service; broad network access; resource pooling; rapid elasticity; and measured service. Cloud service models may include: software as a service (SaaS); platform as a service (PaaS); and infrastructure as a service (IaaS). Cloud deployment models may include: private cloud; community cloud; public cloud; and hybrid cloud.
With on-demand self-service a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with a service provider. With broad network access capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and personal digital assistants (PDAs)). With resource pooling computing resources of a provider are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to demand. In resource pooling there is a sense of location independence in that the consumer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter).
With rapid elasticity capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale-out and be rapidly released to quickly scale-in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. With measured service cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction that is appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported providing transparency for both the provider and consumer of the utilized service.
In a SaaS model the capability provided to the consumer is to use applications of a provider that are running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based e-mail). In the SaaS model, the consumer does not manage or control the underlying cloud infrastructure (including networks, servers, operating systems, storage, or even individual application capabilities), with the possible exception of limited user-specific application configuration settings.
In a PaaS model a cloud consumer can deploy consumer-created or acquired applications (created using programming languages and tools supported by the provider) onto the cloud infrastructure. In the PaaS model, the consumer does not manage or control the underlying cloud infrastructure (including networks, servers, operating systems, or storage), but has control over deployed applications and possibly application hosting environment configurations.
In an IaaS service model a cloud consumer can provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software (which can include operating systems and applications). In the IaaS model, the consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
In a private cloud deployment model the cloud infrastructure is operated solely for an organization. The cloud infrastructure may be managed by the organization or a third party and may exist on-premises or off-premises. In a community cloud deployment model the cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). The cloud infrastructure may be managed by the organizations or a third party and may exist on-premises or off-premises. In a public cloud deployment model the cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
In a hybrid cloud deployment model the cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds). In general, a cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
A cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes.
Referring now to
In cloud computing node 1300 there is a computer system/server 1302, which is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with computer system/server 1302 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like.
Computer system/server 1302 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. Computer system/server 1302 may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.
As shown in
Bus 1308 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.
Computer system/server 1302 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 1302, and it includes both volatile and non-volatile media, removable and non-removable media.
System memory 1306, in one embodiment, comprises the SPM 118, the training data 224, and the prediction models 226 discussed above. The SPM 118 can also be implemented in hardware as well. The system memory 1306 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 1310 and/or cache memory 1312. Computer system/server 1302 may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system 1314 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus 1308 by one or more data media interfaces. As will be further depicted and described below, memory 1306 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of various embodiments of the invention.
Program/utility 1316, having a set (at least one) of program modules 1318, may be stored in memory 1306 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules 1318 generally carry out the functions and/or methodologies of various embodiments of the invention as described herein.
Computer system/server 1302 may also communicate with one or more external devices 1320 such as a keyboard, a pointing device, a display 1322, etc.; one or more devices that enable a user to interact with computer system/server 1302; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 1302 to communicate with one or more other computing devices. Such communication can occur via I/O interfaces 1324. Still yet, computer system/server 1302 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 1326. As depicted, network adapter 1326 communicates with the other components of computer system/server 1302 via bus 1308. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 1302. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
Referring now to
Referring now to
Hardware and software layer 1502 includes hardware and software components. Examples of hardware components include mainframes, in one example IBM® zSeries® systems; RISC (Reduced Instruction Set Computer) architecture based servers, in one example IBM pSeries® systems; IBM xSeries® systems; IBM BladeCenter® systems; storage devices; networks and networking components. Examples of software components include network application server software, in one example IBM WebSphere® application server software; and database software, in one example IBM DB2® database software. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, and DB2 are trademarks of International Business Machines Corporation registered in many jurisdictions worldwide).
Virtualization layer 1504 provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers; virtual storage; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients.
In one example, management layer 1506 may provide the functions described below. Resource provisioning provides dynamic procurement of computing resources and other resources that are utilized to perform tasks within the cloud computing environment. Metering and Pricing provide cost tracking as resources are utilized within the cloud computing environment, and billing or invoicing for consumption of these resources. In one example, these resources may comprise application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal provides access to the cloud computing environment for consumers and system administrators. Service level management provides cloud computing resource allocation and management such that required service levels are met. Service Level Agreement (SLA) planning and fulfillment provide pre-arrangement for, and procurement of, cloud computing resources for which a future requirement is anticipated in accordance with an SLA.
Workloads layer 1508 provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation; software development and lifecycle management; virtual classroom education delivery; data analytics processing; transaction processing; and prediction-based service provider selection.
As will be appreciated by one skilled in the art, aspects of the present disclosure may be embodied as a system, method, or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit”,” “module”, or “system.”
The present invention may be a system, a method, and/or a computer program product. 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.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.