The present disclosure relates to computing systems, and, in particular, to application deployment in a cloud computing environment.
Software developers may use a variety of different services in developing a new software application. These services may come from different sources including cloud service providers. In some instances, a software developer may obtain all of the cloud services needed for a software application from a single cloud service provider. In other situations, however, a software developer may not be able to rely on a single cloud service provider to source all of the required cloud services for a particular application. Various tools exist that software developers may use to evaluate a service from a single cloud service provider. These tools may not be effective, however, when building an application with services from multiple cloud service providers. When an end user (e.g., an enterprise that makes use of software applications) intends to deploy an application that uses different cloud services, it may be faced with the challenge of the selection of cloud services in a way that meets its business and technical requirements. As described above, considering the variety of features offered by different vendors for many types of services, as well as the multiple types of services that may be provided, the end user may desire to use a set of services from different vendors to meet its requirements, e.g., legal, organizational, technical, financial, etc. As a result, there may be a two-fold, challenge for end users: the selection of cloud services meeting their demands and the consequences that the selection of these services may have in the future in a multi-cloud environment. As used herein, a multi-cloud environment is one in which a software application may use multiple cloud services that may be hosted by different cloud service providers. Deploying a software application in a multi-cloud environment with different cloud service(s) providers may entail many advantages, but may also increase the number of aspects that are user may take into account when selecting a particular cloud service. For example, it may be important to understand whether a user selects a cloud service that can be easily replaced by another cloud service from a different provider, for example, in case the original provider fails to fulfill Service Level Agreements (SLAs) or the requirements of a particular application change (e.g., scalability requirements) and the current service and provider cannot successfully meet the new requirements. Moreover, it is generally desirable that any such changes or migration between service providers be done with fewer disruption of services, preservation of desired features, etc. These in which a cloud service may be replaced, i.e., migrated from one cloud service provider to another cloud service provider, may depend on many different factors. As the number of services and providers grows, a comparison among a large number of services based on different criteria and taking into account the ease of migration of each service may make the selection of cloud services and cloud service providers more intricate.
In some embodiments of the inventive subject matter, a method comprises performing by a processor: receiving a requirement description of a service for a software application, generating a migration graph that comprises vertices representing candidate service providers for the service, respectively, identifying migration capability information between the vertices of the migration graph by connecting a portion of the vertices with edges, generating a centrality metric for each of the vertices of the migration graph based on the migration capability information and a number of edges terminating at the respective vertex, grading the candidate service providers based on one of the migration capability information and the centrality metric, and deploying the service using one of the candidate service providers responsive to grading the candidate service providers.
In other embodiments, a system comprises a processor and a memory coupled to the processor and comprising computer readable program code embodied in the memory that is executable by the processor to perform: receiving a requirement description of a service for a software application, generating a migration graph that comprises vertices representing candidate service providers for the service, respectively, identifying migration capability information between the vertices of the migration graph by connecting a portion of the vertices with edges, generating a centrality metric for each of the vertices of the migration graph based on the migration capability information and a number of edges terminating at the respective vertex, generating a migration metric based on the migration capability information, grading the candidate service providers based on each of the centrality metric, the migration metric, and a price metric, and deploying the service using one of the candidate service providers responsive to grading the candidate service providers.
In further embodiments, a computer program product, comprises a tangible computer readable storage medium comprising computer readable program code embodied in the medium that is executable by a processor to perform: receiving a requirement description of a service for a software application, generating a migration graph that comprises vertices representing candidate service providers for the service, respectively, identifying migration capability information between the vertices of the migration graph by connecting a portion of the vertices with edges, generating a centrality metric for each of the vertices of the migration graph based on the migration capability information and a number of edges terminating at the respective vertex, the centrality metric being generated using one of PageRank and Hyperlink-Induced Topic Search (HITS), generating a migration metric based on the migration capability information, grading the candidate service providers based on each of the centrality metric, the migration metric, and a price metric, and deploying the service using one of the candidate service providers responsive to grading the candidate service providers.
It is noted that aspects described with respect to one embodiment may be incorporated in different embodiments although not specifically described relative thereto. That is, all embodiments and/or features of any embodiments can be combined in any way and/or combination. Moreover, other methods, systems, articles of manufacture, and/or computer program products according to embodiments of the inventive subject matter will be or become apparent to one with skill in the art upon review of the following drawings and detailed description. It is intended that all such additional systems, methods, articles of manufacture, and/or computer program products be included within this description, be within the scope of the present inventive subject matter, and be protected by the accompanying claims. It is further intended that all embodiments disclosed herein can be implemented separately or combined in any way and/or combination.
Other features of embodiments will be more readily understood from the following detailed description of specific embodiments thereof when read in conjunction with the accompanying drawings, in which:
In the following detailed description, numerous specific details are set forth to provide a thorough understanding of embodiments of the present disclosure. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In some instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the present disclosure. It is intended that all embodiments disclosed herein can be implemented separately or combined in any way and/or combination. Aspects described with respect to one embodiment may be incorporated in different embodiments although not specifically described relative thereto. That is, all embodiments and/or features of any embodiments can be combined in any way and/or combination.
As used herein, a “service” includes, but is not limited to, a software and/or hardware service, such as cloud services in which software, platforms, and infrastructure are provided remotely through, for example, the Internet. A service may be provided using Software as a Service (SaaS), Platform as a Service (PaaS), and/or Infrastructure as a Service (IaaS) delivery models. In the SaaS model, customers generally access software residing in the cloud using a thin client, such as a browser, for example. In the PaaS model, the customer typically creates and deploys the software in the cloud sometimes using tools, libraries, and routines provided through the cloud service provider. The cloud service provider may provide the network, servers, storage, and other tools used to host the customer's application(s). In the IaaS model, the cloud service provider provides physical and/or virtual machines along with hypervisor(s). The customer installs operating system images along with application software on the physical and/or virtual infrastructure provided by the cloud service provider.
As used herein, the term “data processing facility” includes, but it not limited to, a hardware element, firmware component, and/or software component. A data processing system may be configured with one or more data processing facilities.
As used herein, data are raw, unorganized facts that need to be processed. Data can be something simple and seemingly random and useless until it is organized. When data are processed, organized, structured or presented in a given context so as to make it useful, it is called content or information. Examples of content or information include, but are not limited to, word processing files, slide presentation program files, spreadsheet files, video files, audio files, picture files, and document exchange files.
Some embodiments of the inventive subject matter stem from a realization that a consumer of cloud services may have numerous criteria to consider when selecting a service provider for a cloud service including, but not limited to, how easy it may be to migrate between services provided by different service providers. According to some embodiments of the inventive subject matter, a MultiCloud decision support system (DSS) may receive a requirement description of a service for a software application and use graph analytics to generate a migration graph that comprises vertices that represent candidate service providers for the service and edges that represent migration capability information. One or more metrics may be generated based on the migration graph information to grade the candidate service providers. These grades can then be used to select one of the candidate service providers to deploy the service. In some embodiments of the inventive subject matter, the grades for the candidate service providers may be generated by using a Multi-Criteria Decision Model Algorithm (MCDMA) to process the metrics.
A software application deployed in an enterprise may involve the deployment of one or more cloud services from one or more cloud service providers based on the requirements of the software application as explained above. When deploying a software application, an enterprise may foresee, for example, significant changes in the current requirements that may foreshadow a future need to replace one or more cloud services used by the software application to comply with the evolving requirements. As will be described in detail below, the MultiCloud DSS server 105 may be used to evaluate cloud service providers using graph analytic techniques to assess various metrics including, but not limited to, migration ability, price, and the like. An enterprise may, therefore, evaluate cloud service providers in terms of how easy it is to migrate services between service providers while taking into account other metrics like cost, performance, efficiency, etc.
As shown in
Although
Referring now to
As shown in
The architecture and requirement description module 325 may be configured to receive and process requirement description for the software application. In some embodiments of the inventive subject matter, the architecture and requirement description module 325 may provide a user interface by which a user may input the requirement description. The requirement description includes the desired specifications (e.g., features, performance capabilities, etc.) of cloud service(s) for the cloud service(s) to be compatible or fulfill the needs of one or more software application(s). For example, a software application may require a cloud database as a service that is based on MySQL version 5.0 and above. The requirement description information may be obtained from a variety of sources including, but not limited to, manuals, knowledge from users, and information repositories, such as online information resources available via the Internet. As user interface may be provided to allow a user, such as a system administrator, to enter manually the requirement description information that may be obtained, for example from sources, such as users, manuals, and the like.
The compatibility graph generation module 330 may generate a compatibility graph for one or more software applications based on the requirement descriptions obtained via the architecture and requirement description module 325. The compatibility graph comprises vertices that represent candidate service providers for a service along with the software application(s). An edge is defined between a software application and a candidate service provider when the service provided by the candidate service provider satisfies the requirement description corresponding to the service for the software application. Thus, an edge in the compatibility graph conveys technical capability information that the service provided by the candidate service provider fulfills the technical requirements of the software application.
The migration graph generation module 335 may generate a migration graph from the compatibility for a particular software application that comprises vertices containing the candidate service providers that were connected by edges to the software application in the compatibility graph. The vertices representing the candidate service providers are connected by edges, which represent migration capability information between the services provided by the candidate service providers. Any candidate service provider connected to the software application vertex in the capability graph that is not capable of supporting a migration to service provided by another candidate service provider or is not capable of being migrated to from a service provided by another candidate service provider is not included in the migration graph.
The metric generation module 340 may be configured to generate one or more metrics based on the information contained in the migration graph. For example, the metric generation module 340 may generate a centrality metric for each of the vertices contained in the migration graph, which correspond go candidate service providers. In accordance with various embodiments of the inventive subject matter, the centrality metric may be generated using PageRank and/or Hyperlink-Induced Topic Search (HITS). The centrality metric may be indicative of the “popularity” of each node or vertex in that it is able to provide features that may be required of many applications and are offered by many different cloud services. As a result, a service provided by a candidate service provider with a higher centrality metric score may be viewed as easier to migrate from or to another candidate service provider. In addition to the centrality metric, other metrics may also be derived from the migration graph and/or generated from other information associated with the candidate service providers. For example,
The metric processing module 345 may be configured to grade the candidate service providers based on the one or more metrics obtained via the metric generation module 340. In some embodiments of the inventive subject matter, the metric processing module 345 may use a Multi-Criteria Decision Model Algorithm (MCDMA) to grade the various candidate service providers based on the one or more metrics.
The cloud service proposal module 350 may process the output of the metric processing module 345 in which the candidate service providers are graded with respect to the one or more metrics. The cloud service proposal module 350 may allow the end user to rank the metrics in level of importance so that the grades assigned to the candidate service providers reflect the priorities of the enterprise. A candidate service provider for a service can be selected based on the grades generated by the metric processing module 345 and deployed as a service for one or more of the software applications of the enterprise.
Although
Computer program code for carrying out operations of data processing systems discussed above with respect to
Moreover, the functionality of the MultiCloud DSS server 105 of
The data processing apparatus of
Operations continue at block 410 where migration capability information is identified by connecting those candidate service provider vertices with edges indicating that it is possible to migrate between the two candidate service providers.
Returning to
The metric generation module 340 may also generate other metrics in addition to the centrality metric in accordance with various embodiments of the inventive subject matter. One such metric may be maximum ease of migration, which may be defined as the maximum ease of migration value, which may be normalized, outgoing from a given node in the migration graph. Maximum ease of migration characterizes how easy it is to migrate out from a service provided by a candidate service provider according to their compatibilities in the best case scenario, i.e., when a candidate service provider is replaced by another with the highest ease of migration value. The metric generation module 340 may also generate a price or cost metric for the various candidate service providers.
Returning to
In some embodiments of the inventive concept, Analytic Hierarchy Process (AHP) may be used to aggregate the metric information for the various candidate service providers to generate a final score for each of the candidate service providers.
The embodiments of methods, systems, and computer program products described herein may provide a DSS for use in a multi-cloud environment to evaluate cloud service providers using graph analytic techniques to assess various metrics including, but not limited to, migration ability, price, and the like. Because of the complexity of evaluating multiple cloud service providers across multiple metrics, the embodiments of the DSS may save enterprises time and cost in performing such analyses and may increase the effectiveness of the services purchased by an enterprise by choosing service providers for deployment that better satisfy those metrics that are more important to the enterprise. Moreover, by including a metric, such as migration feasibility, in the analysis, an enterprise can reduce the risk of being locked into a particular service provider as the enterprise's needs evolve over time. Thus, embodiments of the present inventive subject matter provide a mechanism that allows a system administrator or architect to select service providers that may provide the greatest long term flexibility in deploying a service via a service provider for a software application that can be easily migrated from or to, which may reduce costs in the long term by reducing the number of additional resources that may be required to change service providers, e.g., processor(s), memory, network elements, and the like, even if the service provider may not be the lowest cost alternative initially.
In the above-description of various embodiments of the present disclosure, aspects of the present disclosure may be illustrated and described herein in any of a number of patentable classes or contexts including any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof. Accordingly, aspects of the present disclosure may be implemented entirely hardware, entirely software (including firmware, resident software, micro-code, etc.) or combining software and hardware implementation that may all generally be referred to herein as a “circuit,” “module,” “component,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product comprising one or more computer readable media having computer readable program code embodied thereon.
Any combination of one or more computer readable media may be used. The computer readable media may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include 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), an appropriate optical fiber with a repeater, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, C#, VB.NET, Python or the like, conventional procedural programming languages, such as the “C” programming language, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, dynamic programming languages such as Python, Ruby and Groovy, or other programming languages. The program code 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) or in a cloud computing environment or offered as a service such as a Software as a Service (SaaS).
Aspects of the present disclosure 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 disclosure. 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 program instructions. These computer 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 instruction execution apparatus, create a mechanism for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that when executed can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing 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 aspects of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, 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 combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular aspects only and is not intended to be limiting of the disclosure. 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. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items. Like reference numbers signify like elements throughout the description of the figures.
The corresponding structures, materials, acts, and equivalents of any means or step plus function elements in the claims below are intended to include any disclosed structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. 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 disclosure 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 disclosure. The aspects of the disclosure herein were chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand the disclosure with various modifications as are suited to the particular use contemplated.