Large-scale networked systems in a cloud computing environment are commonplace systems employed in a variety of settings for running service applications and maintaining data for business and operational functions. For instance, a data center within an enterprise networked system may support operation of a variety of differing resource provider services (e.g., virtual machines, web applications, email services, search engine services, etc.) in a cloud computing environment. In a cloud computing environment where new types of resource provider services are added and removed from the environment at a rapid pace, it is difficult to manage and enforce quotas on the various types of resource provider services.
Furthermore, where there are multiple system administrators creating plans for tenants using of the various resource provider services in the cloud computing environment, quota enforcement and adjustment for the tenants across the various resource provider services cannot be solved using conventional techniques. Conventional techniques for quota management are designed specifically for particular types(s) of resource provider services and are not extensible to a cloud environment that is rapidly evolving. The distributed nature and unique structure of the cloud computing environments makes detecting quota violations by each of the large number of tenants difficult.
This Summary is provided to introduce concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Embodiments of the present invention are directed to methods managing service quotas for resource provider services in a cloud-computing environment. Resource provider services may include virtual machines, websites, text messages and storage. Embodiments of the invention provide single, consistent and cohesive application programming interface to manage quotas across various resource provider services, administrators, billing applications and tenants. Options can be provided to administrators and tenants to adjust tenant plan subscriptions through adding additional resource provider services, creating subscriptions and deleting subscription. A quota management service using application programming interfaces provides feedback to the administrators and tenants on quota violations or inconsistencies with tenants or tenant plans. Embodiments of the present invention can be integrated with third party billing systems and services.
The detailed description is set forth with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates substantially similar or identical items.
The subject matter of embodiments of the present invention is described with specificity herein to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors have contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies.
Embodiments of the present invention relate to methods, systems, and computer-storage media having computer-executable instructions embodied thereon that, when executed, perform methods in accordance with embodiments hereof, for management of resource provider service quotas in a cloud-computing infrastructure.
Multiple and varied implementations and embodiments are described below. Having briefly described an overview of embodiments of the present invention, the following section describes an operating environment suitable for implementing embodiments of the present invention. The following sections describe illustrative aspects of the techniques for carrying out embodiments of the present invention.
Referring to the drawings in general, and initially to
The invention may be described in the general context of computer code or machine-useable instructions, including computer-executable instructions such as program components, being executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program components including routines, programs, objects, components, data structures, and the like, refer to code that performs particular tasks, or implement particular abstract data types. The invention may be practiced in a variety of system configurations, including hand-held devices, consumer electronics, general-purpose computers, specialty computing devices, etc. The invention may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network.
With continued reference to
Computing device 100 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by computing device 100 and includes both volatile and nonvolatile media, removable and nonremovable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media.
Computer storage media includes volatile and non-volatile, 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 include, but are not limited to, phase change random-access memory (PRAM), static random-access memory (SRAM), dynamic random-access memory (DRAM), other types of random-access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, compact disk read-only memory (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 non-transmission medium that can be used to store information for access by a computing device.
In contrast, communication media typically embody 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 include 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 include 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 any of the above should also be included within the scope of computer-readable media; however, as defined herein, computer storage media does not include communication media.
Memory 112 includes computer-storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, nonremovable, or a combination thereof. Exemplary hardware devices include solid-state memory, hard drives, optical-disk drives, etc. Computing device 100 includes one or more processors that read data from various entities such as memory 112 or I/O components 120. Presentation component(s) 116 present data indications to a user or other device. Exemplary presentation components include a display device, speaker, printing component, vibrating component, etc.
Ports 118 allow computing device 100 to be logically coupled to other devices including I/O components 120, some of which may be built in. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc.
Turning now to
Further, it will be understood and appreciated that the architecture 200 of the cloud-computing infrastructure shown in
The architecture 200 of the cloud-computing infrastructure includes an enterprise data center (not shown) configured to host and/or support operation of resource provider services 201, 202 and 203. It will be appreciated that while resource provider services 201, 202 and 203 are hosted by a data center. Resource provider services could include virtual machines, website, text messages, data storage and servers. Servers and data storage are usable to execute computer operations. For examples, servers are used to execute applications of administrator, such as private cloud applications. In one embodiment, administrator configures the technology for an entity, such as a business enterprise.
As used herein, the phrase “virtual machine” is not meant to be limiting, and may refer to any software, application, operating system, or program that is executed by a processing unit. Further, the virtual machines may include processing capacity, storage locations, and other assets. It will be understood and appreciated that the resource provider services 201, 202 and 203 shown in
A data center is also configured to host and/or support service applications. The phrase “service application,” as used herein, broadly refers to any software, or portions of software, that runs on top of, or accesses storage locations within, the data center. An exemplary service application that could be hosted is quota management service 220.
An on-premises private cloud-computing environment is a set of resource provider services such as hardware, networking, storage, services, applications, and interfaces owned and operated by an entity, such as an enterprise, for the use of its sub-entities, partners, employees and customers. An on-premises private cloud is controlled by an entity and is not available for public use. An on-premises private cloud may include a data center including resource provider services 201-203. A private cloud typically is located behind a firewall and not available for public use. In some embodiments, a private cloud can be created and managed by a third party for the use of the entity.
Embodiments of the present invention may also be utilized with a combination of a private cloud combined with the use of public cloud services where one or several touch points exist between the environments. The goal is to combine services and data from a variety of cloud models to create a unified, automated, and well-managed computing environment. For example, in a hybrid environment can use an on-premises data center of the private cloud and augment with resource provider services from the public cloud and vice versa. Embodiments of the present invention abstract the physical data center of a private enterprise or cloud such that both the private and public cloud can appear to work on the same network. A consistent platform is provided across private and public clouds such that administrators using administrator portal application 210 can provide and manage the resource provider services (private and public) for their tenants 205 (customers, employees, divisions and partners of the entity).
Administrators demand flexibility in a cloud computing environment to define plans, billing, services, cost, amounts quotas, and types (e.g., virtual machines vs. hardware). Using embodiments of the present invention, administrators utilize an administrator portal application 210 to configure and manage plans. Administrators can utilize embodiments of the present invention to create a cloud computing network to offer and manage plans and services to tenants 205 (or customers). A plan is a package comprising a list of offered resource provider services and quotas for the resource provider services. A service quota is a set of quotas for a particular resource provider service. A quota is the share or proportional part of a total resource provider service 201-203 that is allocated for a particular tenant plan subscription. The service quota for a subscription can be determined by a plan or add-on chosen by the tenant 205 and is used for quota synchronization.
Once configured by the administrator using the administrator portal application 210 a plan can be offered to tenants 205 with pricing information. A tenant 205 may be an employee, customer, partner, division or sub-entity of entity.
For example, an administrator may build, using the administrator portal application 210, a basic cloud environment hosting plan that includes two types of resource provider services 201-203, including three virtual machines and one website that can be purchased by a tenant 205. Furthermore an administrator using the administrator portal application 210 may build a premium plan hosting multiple resource provider services 201-203 including use of six virtual machines, three websites, text messages and one e-mail address.
A tenant portal allows a tenant 205 to choose plans, add resource provider services, and delete subscriptions as needed. Furthermore, a tenant portal for a tenant 205 to see what resource provider services they have and amount used. Tenants 205 can build and manage resource provider services locally in the private cloud or migrate to resource provider services on the public cloud through a single portal without require any change in coding.
Once a tenant 205 obtains a plan from an administrator portal application 210, the tenant 205 and the plan are registered with the quota management service 220. Entities, such as enterprises, typically track or charge divisions, partners or sub-entities based on usage of the entity's data center. Oftentimes this can be done as a charge back model or purchase model. Furthermore, customers of the entity may purchase usage of the entity's data center.
Once a plan is chosen by a tenant 205 the administrator portal application 210, communicates the tenant plan subscription information to quota management service 220. Quota management service 220 creates a subscription identifier for the tenant subscription plan. The subscription identifier for the tenant subscription plan is stored by the quota management service 220 and communicated to the administrator portal application 210, billing application 225 and resource provider services 201-203. The administrator portal application 210, quota management service 220, billing application 225 and resource provider services 201-203 can communicate with one another using a quota management session referencing the subscription identifier for managing the service quotas for the tenant plan subscription.
After purchase and establishment of the tenant subscription, the administrator using the administrator portal application 210 may offer additional resource provider services or larger service quotas (add-ons) to the tenant. The administrator portal application 210 the tenant may be offered additional resource provider services or additional service quotas (add-ons) for resource provider services 201-203. In one embodiment, add-ons may be offered to all tenants or tenants who subscribe to a particular resource provider service. In another embodiment, add-ons may be offered based on a live event notification for real time approval. For example, a tenant 205 may be exceeding use of virtual machines 201-203 for the basic plan purchased from the administrator portal application 210. A quota management synchronization worker 315 (
For example, with reference to
In addition making changes (such as add-ons) to a single tenant plan subscription, the administrator, using the administrator portal application 210, may make a global update a plan and all subscriptions are updated. Using the administrator portal application 210, the administrator may add additional resource provider services or service quotas (add-ons) the administrator's basic plan and all subscriptions to the plan are updated with the add-ons. For example, the administrator may add resource provider services, change service quota changes or others changes to the administrator's basic plan. This information is communicated via the quota management layer to the quota management service 220. The quota management service 220 the updates all the tenant plan subscriptions for the administrator's basic plan with added resource provider services, quota changes or other changes made by the administrator.
In another embodiment, the administrator makes changes to add-ons that have been offered or made to plans. Using the administrator portal application 210, the administrator may make changes to the add-on and all subscriptions using that have the add-on are updated with the changes by the quota management service 220.
Furthermore, the quota management service 220 creates an audit trail of the usage, quota enforcement and offer of add-ons is created such that the billing system 225 when the tenant 205 is later billed for the plan and any add-ons can correctly formulate the invoice and provide a tracking system rebuild a historical trail. As discussed in more detail below, an event API will know about the potential add-on resource provider services that may be available based in the cloud-computing environment.
Embodiments of the present invention provide a single, consistent and cohesive application programming interface to manage quotas across various resource provider service types, administrators and tenants. Options can be provided to tenants 205 in real-time to adjust the tenant plan quotas as needed. The quota management service 220 provides feedback to the administrator portal application 210 and tenants 205 on quota violations or inconsistencies with tenants or tenant plans. Embodiments of the present invention can be integrated with third party billing systems and services 225.
New resource provider services 201-203 can be seamlessly added to the cloud computing environment 200 and offered to existing tenants 205 in real-time. The administrator using administrator portal application 210 can manage the quota of new resource provider services and existing resource provider services using the same quota management service 220. The quota management service 220 provides an interface to external billing systems 215, which will be notified of quota change events such as subscriptions, add-ons and deletions.
Referring to
The quota management API frontend component 305 exposes a set of unified subscription and quota management API to either administrator portal application 210 or tenants 205 via a tenant portal. The API frontend component 305 is stateless and can be replicated. API frontend component 305 allows administrators 210 to incrementally add new features to existing plans (add-ons), which in turn, will allow existing tenants 205 to access new resource provider services 201-203. This is accomplished by an asynchronous long-running API support that can modify N number of existing tenant plan subscriptions at the resource provider services 201-203 (the time required to update each subscription by different resource provider service providers also varies). The plan and add-ons are in the quota management messaging layer.
The quota management database 310 stores information about all entities in the system, administrators 210, tenants 205, resource provider services 201-203, their relationships configuration, commands and states. Quota management database 310 stores subscription identifiers, tenant plan subscription information, data regarding resource provider service and service quota information. Quota management database 310 also stores real-time quota data for audit-trail purpose.
Quota synchronization worker component 315 constantly monitors the state of each resource provider service 201-203, validates it against the configured quotas for each tenant plan subscription and reports violations and inconsistencies detected.
The resource provider service provider communication component 320 provides contracts to be implemented by resource provider services 201-203 such that the monitoring and reporting of quotas can be performed by the quota management service 220. Resource provider service provider communication component 320 is responsible for propagating quota information to the resource provider service providers 201-203 (via the internal quota API interface). Using information provided by resource provider service provider communication module 320, resource provider services 201-203 implement internal API contracts so the resource provider service quota of each resource provider service 201-203 can be managed by the quota management service 220 in a unified fashion. Each resource provider service 201-203 is registered with the quota management service 220 one time and then can receive and implement the internal API contracts so that resource provider service quota can be managed.
In one embodiment of the present invention, resource provider service provider communication component 320 provides asynchronous long-running application program interface (API). The asynchronous long-running API modifies N number of existing tenant plan subscriptions in each of the resource provider services 201-203 (the time required to update each subscription by different resource provider service providers also varies). The long-running API support keeps the complexity away from each resource provider service 201-203 and makes it easier for each resource provider service 201-203.
Billing service communication component 330 is responsible for notifying the billing service 215 on any quota changes so that tenants 205 will be billed accordingly. The billing service 215 may be an internal or external system to the data center. It also is integrated with the quota management service 220 via a one-time registration process utilizing the billing service communication module 330 and will be notified of any quota changes. The quota management service 220 treats this notification as first class and will not commit to further changes in tenant plan subscription unless it receives an acknowledgement from the billing application 225.
In yet another embodiment, live event notification is provided to the quota management service 220 to provide a full history of all metadata events over time and to be able to reconstruct a correct metadata snapshot at any time. Metadata event component 330 lists for events from the different resource provider services and stores these events for history maintenance to provide administrators and tenants live feed notification. The metadata event component 330 receives information from stateless worker synchronization components 315 who pull data from all resource provider service providers 201-203. The worker synchronization component 315 pulls usage information from resource provider service providers, sequentially and in an endless loop. The information is then stored in quota management database 310, such as SQL bulk copy operations. For every event, the quota management service 220 simultaneously and automatically registers the event data in the centralized storage 310 and delivers the live event notification to administrators 210 and/or tenants 205.
Administrator 210 creates plans that include resource provider services from the cloud computing environment 200. Administrator 210 loads a frontend resource provider service management API provided by Quota Management Service 220 using administrator portal to create plans and quotas to provide to resource provider service users 205. Plans may then be obtained by tenants 205. The plans and resource provider services utilized by the tenant's plan can be centrally managed and enforced by the Quota Management Service 220.
Exemplary methods for resource provider service quota management are described with reference to
The exemplary methods are illustrated as a collection of blocks in a logical flow graph representing a sequence of operations that can be implemented in hardware, software, firmware, or a combination thereof. The order in which the methods are described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the methods, or alternate methods. Additionally, individual operations may be omitted from the methods without departing from the spirit and scope of the subject matter described herein. In the context of software, the blocks represent computer instructions that, when executed by one or more processors, perform the recited operations.
Turning to
Initially, the method 500 receives messages from an administrator portal application and resource provider services for initialization of a quota management session at block 505. The administrator portal application and resource provider services register with the quota management service and at block 510 connect with the quota management service in order to start a quota management messaging session. The quota messaging service receives notification of one or more tenant plan subscriptions at block 515. At block 520, the quota management creates a subscription identifier for the tenant plan subscription and stores the subscription identifier and related tenant plan subscription information including amount of resource provider services to be allocated to the subscription.
At block 525, the subscription identifier is routed to the administrator portal application for the administrator portal application to subsequently communicate with the quota management service and resource provider services regarding quota management for the tenant plan subscription. Both the tenant administrator portal application and the quota management service store the subscription identifier and tenant plan subscription information at block 530.
Referring next to
At block 620, the subscription identifier is routed via the quota management session to the resource provider services that are part of the tenant plan subscription. The resource provider services can subsequently use the subscription identifier to communicate with the quota management service for quota management of the tenant plan subscription.
At block 625, the subscription identifier is routed to the administrator portal application for the administrator portal application to subsequently communicate with the quota management service and resource provider services regarding quota management for the tenant plan subscription. The tenant administrator portal application, quota management service and resource provider services store the subscription identifier and tenant plan subscription information.
Referring next to
At block 725, the subscription identifier is routed to the administrator portal application for the administrator portal application to subsequently communicate with the quota management service and resource provider services regarding quota management for the tenant plan subscription. The tenant administrator portal application, quota management service and resource provider services store the subscription identifier and tenant plan subscription information.
At blocks 730 and 735, the subscription identifier is routed via the quota management session to the resource provider services that are part of the tenant plan subscription. The resource provider services can subsequently use the subscription identifier to communicate with the quota management service for quota management of the tenant plan subscription.
At block 740, changes to the tenant plan subscriptions are received by the quota management service from the administrator portal application. The changes may include adding additional resource provider services or proportion of resource provider services (add-ons), changes to the resource provider services or deletion of the tenant plan subscription. The quota management service updates the subscription identifier and tenant plan subscription to reflect the changes to the tenant's plan and keeps an audit trail of the changes to the tenant plan subscription.
At blocks 745 and 750, the changes to the tenant plan subscriptions are routed to the first and second resource provider services. Using the tenant subscription identifier, the quota management service notifies the resource provider services of changes to the tenant plan subscription so that there is proper allocation of resource provider services for the tenant plan subscription.
Referring next to
The quota messaging service receives and maintains subscription identifiers for tenant plan subscriptions at block 815. At block 820, the quota management service pulls information from a first resource provider service of the amount of the resource provider serviced consumed by the tenant plan subscription. At block 825, the quota management service pulls information from a second resource provider service of the amount of resource provider service consumed by the tenant plan subscription.
At block 830, the quota management service creates a real-time audit trail of the resource provider services consumed by the tenant plan subscription. The audit trail information is maintained in the quota management service and provides a redundant copy of the resource provider service utilization for the tenant subscription in case it is needed by the billing service due to a data loss.
Referring next to
Any of the acts of any of the methods described herein may be implemented at least partially by a processor or other electronic device based on instructions stored on one or more computer-readable media.
With reference to
Although the invention has been described in language specific to structural features and/or methodological acts, it is to be understood that the invention is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the invention. That is, embodiments of the present invention have been described in relation to particular embodiments, which are intended in all respects to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill in the art to which embodiments of the present invention pertain without departing from its scope.
From the foregoing, it will be seen that this invention is one well adapted to attain all the ends and objects set forth above, together with other advantages which are obvious and inherent to the system and method. It will be understood that certain features and sub-combinations are of utility and may be employed without reference to other features and sub-combinations. This is contemplated by and is within the scope of the claims.