Increasingly, businesses and enterprises are migrating away from privately-owned servers and storage to the Cloud for accessing IT resources via the Internet, thereby reducing capital costs and accelerating start-up time for running a user application. Each cloud service provider (“service provider” or “SP”) offers a different user interface (UI) for provisioning a user cloud configuration of cloud resources for running the user application. The services offering and provider pricing differ as well, each service provider often using different metrics for specifying resources for compute, storage, and memory, for example.
Analyzing the price and performance of a configuration of cloud computing resources may be performed manually with the aid of spreadsheets. However, with potentially millions of combinations of input configurations possible across numerous service providers, the time and labor required to choose an SP may be impractically high, and potentially inaccurate. Price and performance analysis may also be performed using IT consulting services. Unfortunately, IT services can be very expensive, even prohibitive for a start-up enterprise having a small budget.
Alternatively, price calculators, such as those provided online by service providers, allow a user to select discrete values and descriptors from dozens of pull-down menus. However, the result is an estimated price that does not consider actual or aggregate performance of the user application in a ‘real world’ scenario. Additionally, many of the descriptors are cryptic, or ‘provider-centric’, for example, for specifying an instance type or allocating CPU. Another resource for determining which service provider has the best price-performance offering is word of mouth. However, given the fast changing SP landscape and the variability in user needs and discernment, word of mouth alone is insufficient for deciding which SP platform to use. Lastly, each service provider will have unique performance characteristics, some of which can not be directly provisioned, such as the consistency of read/write time in a storage device, or such as actual platform up-time (availability).
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key aspects or essential aspects of the claimed subject matter. Moreover, this Summary is not intended for use as an aid in determining the scope of the claimed subject matter.
In an embodiment, there is disclosed a cloud solutions generator for optimizing pricing and performance in a configuration of cloud resources and which may comprise a front-end processor having a user interface and a back-end processor running asynchronously from the front-end processor. Provider pricing and a services offering are retrieved by the back-end processor from at least one service provider and normalized into a normalized provider metrics for comparing multiple service providers and for describing at least one of the type, amount, price and quality of the cloud resources. One or more benchmarking test cases periodically characterize a performance of the services offering of the at least one service provider. The back-end processor stores benchmarking metrics resulting from the executed one or more benchmarking test cases. A user interface receives, from a user, business-level user requirements for running a user application having a user application performance. The business-level user requirements include specifying a user cloud configuration of the cloud resources provisionable from the at least one service provider. The front-end processor normalizes the business-level user requirements into normalized user requirements for mapping the normalized provider metrics to the business-level user requirements. The cloud resources comprise at least one of compute, storage, and memory resources. A solutions calculator connected to the back-end processor scales the normalized provider metrics by the benchmarking metrics to calculate a potential configuration performance for each of at least one potential user configurations of cloud resources specifiable in the business-level user requirements and provisionable by the at least one service provider. The solutions calculator stories a finite solution set for the at least one service provider. The finite solution set comprises at least one service provider having the best potential configuration performance and price for at least one potential user configuration. An optimizer receives the normalized user requirements and selects the at least one potential user configuration in the finite solution set whose potential configuration performance best matches the user application performance. The optimizer stores the selected at least one potential user configuration as an optimized solution for recommending to the user.
In another embodiment, there is disclosed a method for generating a cloud solution optimizing the pricing and performance in a configuration of cloud resources and which may comprise interfacing with a user via a user interface and retrieving a provider pricing and a services offering from at least one cloud service provider. The method may further comprise normalizing the provider pricing and the services offering into a normalized provider metrics for directly comparing multiple cloud service providers. The method may further comprise the normalized provider metrics describing at least one of the type, amount, price and quality of the cloud resources. The method may further comprise benchmarking the at least one cloud service provider for periodically characterizing a performance of the services offering, and storing a benchmarking metrics resulting from the executed one or more benchmarking test cases. The method may further comprise inputting business-level user requirements from the user interface for running a user application having a user application performance. The method may further comprise the business-level user requirements specifying a user cloud configuration of the cloud resources directly provisionable from the at least one cloud service provider, where the cloud resources comprise at least one of compute, storage, and memory resources. The method may further comprise normalizing the business-level user requirements into normalized user requirements for mapping the normalized provider metrics to the business-level user requirements. The method may further comprise scaling the normalized provider metrics by the benchmarking metrics to calculate a potential configuration performance for at least one potential user configuration of cloud resources specifiable in the business-level user requirements and provisionable by the at least one service provider. The method may further comprise storing a finite solution set for the at least one service provider, the finite solution set comprising the at least one service provider having the best potential configuration performance and price for the at least one potential user configuration. The method may further comprise receiving by an optimizer the normalized user requirements and selecting the at least one potential user configuration in the finite solution set whose potential configuration performance best matches the user application performance. The method may further comprise storing the selected at least one potential user configuration as an optimized solution for recommending to the user.
Additional objects, advantages and novel features of the technology will be set forth in part in the description which follows, and in part will become more apparent to those skilled in the art upon examination of the following, or may be learned from practice of the technology.
Non-limiting and non-exhaustive embodiments of the present invention, including the preferred embodiment, are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified. Illustrative embodiments of the invention are illustrated in the drawings, in which:
Embodiments are described more fully below in sufficient detail to enable those skilled in the art to practice the system and method. However, embodiments may be implemented in many different forms and should not be construed as being limited to the embodiments set forth herein. The following detailed description is, therefore, not to be taken in a limiting sense.
When elements are referred to as being “connected” or “coupled,” the elements can be directly connected or coupled together or one or more intervening elements may also be present. In contrast, when elements are referred to as being “directly connected” or “directly coupled,” there are no intervening elements present.
The subject matter may be embodied as devices, systems, methods, and/or computer program products. Accordingly, some or all of the subject matter may be embodied in hardware and/or in software (including firmware, resident software, micro-code, state machines, gate arrays, etc.) Furthermore, the subject matter may take the form of a computer program product on a computer-usable or computer-readable storage medium having computer-usable or computer-readable program code embodied in the medium for use by or in connection with an instruction execution system. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media.
Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by an instruction execution system. Note that the computer-usable or computer-readable medium could be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, of otherwise processed in a suitable manner, if necessary, and then stored in a computer memory.
Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
When the subject matter is embodied in the general context of computer-executable instructions, the embodiment may comprise program modules, executed by one or more systems, computers, or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
In an embodiment, referring to
Continuing with
Back-end processor 120 may operate asynchronously from front-end processor 121 and may thereby partition the background tasks of collecting service provider data from the front-end tasks of calculating cloud solutions for a user application and interfacing with user 171. This partitioning may aggregate the computational intensity of mining service provider data for the benefit of all users who don't have to “reinvent the wheel” for each new user application, thereby reducing costs to the user and providing a quick solution for a user. Alternately, back-end processor 120 and front-end processor 121 may be synchronized for determining optimized solutions 104 spontaneously. For example, a sudden and drastic change in the services offering of a service provider may alert a client-user to request an immediate assessment of the user cloud configuration for a critical user application.
Continuing with
Referring still to
Referring to
Continuing with the flowchart in
Additionally, in an embodiment, normalization and categorization block 206 may assign a ‘consistency score’, based on the statistical analysis of benchmarking data over time, to a particular service provider for a resource such as ‘response time’, and the service provider may be categorized in a tier of performance. Normalization and categorization data 206 may then pass benchmarking metrics 175 to SP landscape database 112. In an embodiment, benchmarking metrics 175 may be categorized into a plurality of performance tiers for each service provider 116. For example, three performance tiers—Gold, Silver and Bronze—may be used to categorize the performance of the service provider. If, for example, the consistency of ‘response time’ in a storage device is high (low standard deviation) for service provider 117, then service provider 117 may be assigned to a Gold tier for storage. A similar process may be applied to compute resources, in terms of measuring CPU and RAM efficacy.
Continuing with
Referring now to
Continuing, in various embodiments, since benchmarked performance may not match the quoted performance and pricing, solutions calculator 113 may scale normalized provider metrics by the benchmarking metrics to calculate a potential configuration performance and price for each potential user configuration. Such scaling may effectively calculate a “handicap” factor for a service provider's offering such that the user will know how much of the offering they will need to buy to satisfy the user's requirement. This scaling is also crucial for accurate price comparison between service providers since one provider's offering rate may look good on the surface but end up costing more than another service provider's because more is required. For some cloud resources that are benchmarked, for instance, for abstracted performance results/requirements, there may be no provider pricing because the cloud resource is not provisionable. In the case of abstracted performance results, the solutions calculator 113 may import and associate the benchmarked performance with the provider pricing for the underlying provisionable cloud resources and with the potential user configuration. Solutions calculator 113 may then store a finite solution set 185 in finite solution set database 109 where at least one service provider may have the best potential configuration performance and price for each potential user configuration.
Referring now to
Continuing with
Continuing with
Referring now to
Referring still to
Referring to
(402) Duration—time in months that the user requires cloud resources;
(403) Platform—for example, the Infrastructure-as-a-Service (IaaS), operating system (e.g. Windows, Linux), Platform-as-a-Service (PaaS);
(404) Minimum instances—the minimum number of compute instances;
(405) Security group—for protecting all compute instances in this group;
(406) Load balancers—for balancing the incoming traffic load into the compute instances;
(407) Multi-zone—protection for compute instance at the metro level;
(408) Multi-region—protection for compute instance at the region level;
(409) Growth—growth pattern applied to all requirements in the group;
(410) Monitor selection—a cloud solutions maintenance service 411 (
Referring to
(413) Aggregate CPU—the total amount of computing power needed;
(414) Aggregate Memory—the total amount of memory needed;
(415) Internet Traffic Transactions—the total number of application-level transactions that flow inbound to and outbound from this requirements module;
(416) Inter-zone Traffic Transactions—the total number of application-level transactions that flow between this requirements module and its paired local/metro availability zone;
(417) Inter-region Traffic Transactions—the total number of application-level transactions that flow between this requirements module and its paired regional availability zone.
In an embodiment, storage tier requirements parameters 218 may be included as a requirements level parameter for entering storage requirements that may be abstracted from provider offerings and benchmarking data or both. In an embodiment, the user may define these 4 parameters (419-422) for multiple performance tiers. For example, 3 service tiers may be available to the user:
(419) Quantity—the storage required in the service tiers (Gigabytes);
(420) Input/Output (I/O) Rate—total rate of data inbound from and outbound to the storage defined in (419), in I/O per second (IOPS);
(421) Workload Profile—a set of parameters that defines the business profile and size of the workload that exploits the storage in this service tier;
(422) Read/Write Ratio—the ratio between read operations (outbound from storage) and write operations (inbound to storage).
In an embodiment, performance tiers may have 3 tiers, and may be defined for storage accordingly:
In an embodiment, referring to
(423) Transactional—maps to a small block I/O traffic profile in the block storage realm;
(424) Batch—maps to a large block I/O traffic profile in the block storage realm;
(425) Small Object—maps to a small I/O traffic profile in the object storage realm;
(426) Large Object—maps to a large I/O traffic profile in the object storage realm.
Referring now to
Referring now to
Monitor alert profile 705 and group level inputs 704 may also be entered via an API data feed 110. When monitor alert 715 triggers a re-evaluation of the optimized solution 190, monitor trigger 703 may begin the optimization process 108. Optimization 108 may proceed as before when a user is setting up a solution set for the first time. The optimization process 108 may select at least one potential user configuration from finite solution set 109 whose potential configuration performance satisfies the user application performance requirements. The potential configuration performance may be tested 708 against the application performance requirements to determine if the difference exceeds an alert threshold. The monitoring service may stay with the pre-alert optimized solution 709 if the answer is NO or advise the user of a better solution 707 if YES.
Although the above embodiments have been described in language that is specific to certain structures, elements, compositions, and methodological steps, it is to be understood that the technology defined in the appended claims is not necessarily limited to the specific structures, elements, compositions and/or steps described. Rather, the specific aspects and steps are described as forms of implementing the claimed technology. Since many embodiments of the technology can be practiced without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
Various embodiments of the present systems and methods may be used as a tool internally by a cloud consultant as input into a final report for a client.
Various embodiments of the present systems and methods may be integrated into upstream or downstream supply chain or provisioning systems in the form of OEM.
Various embodiments of the present systems and methods may be the foundation for a cloud marketplace resource trading or bidding system.
The foregoing description of the subject matter has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the subject matter to the precise form disclosed, and other modifications and variations may be possible in light of the above teachings. The embodiment was chosen and described in order to best explain the principles of the invention and its practical application to thereby enable others skilled in the art to best utilize the invention in various embodiments and various modifications as are suited to the particular use contemplated. It is intended that the appended claims be construed to include other alternative embodiments except insofar as limited by the prior art.
The present application claims priority to U.S. Provisional Application No. 61/980,917 filed on Apr. 17, 2014 and entitled CLOUD COMPUTING SOLUTION GENERATION SYSTEMS AND METHODS, the entire contents of Application 61/980,917 being expressly incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
61980917 | Apr 2014 | US |