US20220385663A1 - Self-serve appliances for cloud services platform - Google Patents
Self-serve appliances for cloud services platform Download PDFInfo
- Publication number
- US20220385663A1 US20220385663A1 US17/818,195 US202217818195A US2022385663A1 US 20220385663 A1 US20220385663 A1 US 20220385663A1 US 202217818195 A US202217818195 A US 202217818195A US 2022385663 A1 US2022385663 A1 US 2022385663A1
- Authority
- US
- United States
- Prior art keywords
- appliance
- resource
- vendor
- customer
- cloud
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 46
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 44
- 238000009877 rendering Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 abstract description 10
- 238000007726 management method Methods 0.000 description 67
- 230000015654 memory Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000010354 integration Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000013024 troubleshooting Methods 0.000 description 3
- 230000002155 anti-virotic effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003339 best practice Methods 0.000 description 1
- 235000000332 black box Nutrition 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0641—Shopping interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/084—Configuration by using pre-existing information, e.g. using templates or copying from other elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/18—Delegation of network management function, e.g. customer network management [CNM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
- H04L41/5045—Making service definitions prior to deployment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Definitions
- Cloud computing is a type of Internet-based computing that provides shared computer processing resources and data to computers and other devices on demand. It is a model for enabling ubiquitous, on-demand access to a shared pool of configurable computing resources (e.g., computer networks, servers, storage) and applications and services built thereon, which can be rapidly provisioned and released with minimal management effort.
- Cloud computing and storage solutions provide users and enterprises with various capabilities to store and process their data in third-party data centers that may be located far from the user—ranging in distance from across a city to across the world.
- a utility e.g., an electrical grid
- cloud computing relies on the sharing of resources to achieve coherence and economy of scale.
- deploying the appliance to the customer account comprises deploying resources specified by the template as part of an appliance resource group within the customer account, the specified resources including an appliance management resource that is configured to expose control features of the appliance to the customer.
- access to the appliance resource group is provided to the vendor via a vendor account associated with the vendor within the cloud services platform.
- FIG. 1 is a block diagram of an example cloud services platform upon which embodiments may be implemented.
- FIG. 2 is a block diagram that illustrates the use of templates to deploy a cloud service within the cloud services platform of FIG. 1 .
- FIG. 3 is a block diagram of an example cloud services platform that is configured to support the self-service deployment of appliances in accordance with an embodiment.
- FIG. 4 is a block diagram that illustrates a deployment of a Platform as a Service (PaaS) appliance within the cloud services platform of FIG. 3 .
- PaaS Platform as a Service
- FIG. 5 is a block diagram that illustrates a deployment of a Software as a Service (SaaS) appliance within the cloud services platform of FIG. 3 .
- SaaS Software as a Service
- FIG. 6 illustrates a manner in which an appliance resource provider connects resources representing appliances to a cloud resource manager within the cloud services platform of FIG. 3 .
- FIG. 7 depicts a flowchart of a method performed by a cloud services platform in accordance with an embodiment.
- FIG. 8 is a block diagram of an example processor-based computer system that may be used to implement various embodiments.
- references in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” or the like, indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of persons skilled in the relevant art(s) to implement such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
- adjectives such as “substantially” and “about” modifying a condition or relationship characteristic of a feature or features of an embodiment of the disclosure are understood to mean that the condition or characteristic is defined to within tolerances that are acceptable for operation of the embodiment for an application for which it is intended.
- FIG. 1 is a block diagram of an example cloud services platform 100 upon which embodiments described herein may be implemented.
- cloud services platform 100 comprises part of the Microsoft® Azure® cloud computing platform, owned by Microsoft Corporation of Redmond, Wash., although this is only an example and not intended to be limiting.
- cloud services platform 100 includes a cloud resource manager 102 , a plurality of resource providers including a resource provider A 104 , a resource provider B 106 , and a resource provider C 108 , and a cloud service deployment 110 . Each of these components will now be described.
- Cloud resource manager 102 comprises a collection (or “framework”) of software-based tools and/or services that can be invoked programmatically or by a user to deploy, update, or delete resources that are themselves utilized to support a cloud service deployment.
- cloud service deployment generally refers to any application or service that is deployed on or otherwise implemented by a cloud infrastructure and includes but is not limited to both Platform as a Service (PaaS) applications and Software as a Service (SaaS) applications.
- cloud resource manager 102 has deployed exemplary cloud service deployment 110 .
- cloud resource manager 102 comprises the Microsoft® Azure® Resource Manager, although this is only an example and is not intended to be limiting.
- cloud service vendor or “vendor” is used to broadly refer to any entity that is capable of providing a cloud service (e.g., a PaaS or SaaS application), and may include persons and/or organizations.
- cloud service customer or “customer” is used to broadly refer to any consumer of a cloud service, and may include persons and/or organizations.
- a vendor and/or a customer may be the same entity that provides cloud services platform 100 , may be employed by or affiliated with such entity, or may be a different entity entirely (e.g., a third party) with respect thereto.
- cloud service deployment 110 includes a cloud service 112 that is configured to utilize a plurality of resources including a resource A 114 , a resource B 116 , and a resource C 118 .
- resources broadly refers to any deployable and/or manageable item that is made available via a cloud services platform such as cloud services platform 100 .
- a resource may comprise, for example and without limitation, a virtual machine, a storage account, a Web application, a database, or a virtual network. Persons skilled in the relevant art(s) will appreciate that a wide variety of other resource types may be made available by cloud services platform 100 .
- Such resources can be used to implement cloud services such as cloud service 112 .
- cloud resource manager 102 is operable to invoke resource provider A 104 to provide and subsequently manage resource A 114 , to invoke resource provider B 106 to provide and subsequently manage resource B 116 , and to invoke resource provider C 108 to provide and subsequently manage resource C 118 .
- each resource provider is registered with cloud resource manager 102 and establishes a resource provider contract (RPC) therewith (e.g., a Hypertext Transfer Protocol Secure (HTTPS) Representational State Transfer (REST) API contract, although this is only an example).
- RPC resource provider contract
- HTTPS Hypertext Transfer Protocol Secure
- REST Representational State Transfer
- Non-limiting examples of resource providers within the Microsoft® Azure® cloud services platform include Microsoft.Compute, which can provide a virtual machine resource, Microsoft.Storage, which can provide a storage account resource, and Microsoft.Web, which can provide resources related to Web applications.
- Cloud resource manager 102 comprises several features that further facilitate the deployment, management and monitoring of resources for cloud service deployments.
- cloud resource manager 102 exposes a set of APIs 122 .
- APIs 122 may be utilized to request and manage resources from a variety of different resource providers (e.g., resource provider A 104 , resource provider B 106 , and resource provider C 108 ).
- resource providers e.g., resource provider A 104 , resource provider B 106 , and resource provider C 108 .
- such APIs 122 may include REST APIs, although this is only a non-limiting example.
- Cloud resource manager 102 also includes management tools 124 .
- Management tools 124 may include a variety of user interfaces (UIs) that an administrator or other user may interact with to deploy, manage and monitor resources via cloud resource manager 102 .
- UIs user interfaces
- each of these UIs may be configured to interact with APIs 122 to invoke various features thereof.
- UIs may include but are not limited to a Web-based portal (e.g., Microsoft® Azure® Portal), a command line interface (CLI), an interactive command environment with scripting features (e.g., Microsoft® PowerShell®), and a development tool (e.g., Microsoft® Visual Studio®).
- cloud resource manager 124 also supports the deployment of one or more cloud services and the resources that support them via a template.
- Cloud resource manager 102 also includes resource group functionality 126 .
- Resource group functionality 126 is configured to enable resources for a cloud service to be grouped together for the purposes of deployment, management and monitoring.
- a resource group can be defined to include all the resources allocated to a given cloud service deployment or only a subset of such resources that a user wishes to manage as a group.
- Cloud resource manager 102 still further includes role-based access control (RBAC) functionality 128 .
- RBAC functionality 128 may be used to ensure that only persons assigned to certain roles within an organization are able to manage resources or resource groups associated with a given cloud service deployment. Thus, for example, only certain roles may be enabled to interact with cloud resource manager 102 for the purposes of adding, deleting, modifying or configuring certain resources or resource groups associated with a given cloud service deployment.
- each of cloud resource manager 102 , resource provider A 104 , resource provider B 106 , and resource provider C 108 may represent software executing on a computer or on one or more interconnected computers.
- each of these components may be running as software on a collection of networked physical or virtual machines within one or more data centers that comprise cloud services platform 100 .
- cloud service 112 may comprise software and resource A 114 , resource B 116 and resource C 118 may comprise computing resources used to support the execution of such software (e.g., a virtual machine, a storage account, a Web application, a database, or a virtual network).
- FIG. 2 is a block diagram that illustrates the use of templates to deploy a cloud service within cloud services platform 100 .
- a template comprises a file (or other suitable container) that includes information that describes how a cloud service should be deployed within cloud services platform 100 .
- the template may specify resources of cloud services platform 100 that must be allocated in support of a given cloud service and how such resources should be configured.
- the template may further specify how the cloud service should be deployed on top of (i.e., in a manner that utilizes) such resources and how the cloud service should be configured.
- the template may be text-based, and may further be composed using a declarative syntax rather than imperative commands.
- the template is composed using a text-based data exchange format such as JavaScript Object Notation (JSON), although this is only an example.
- JSON JavaScript Object Notation
- a cloud service vendor can utilize its own vendor computing system 204 to publish a template 212 1 to an online marketplace 202 , wherein such template 212 1 provides information necessary for a customer to deploy the vendor's cloud service to the customer's own account (i.e., to the customer's own set of resources) within cloud services platform 100 .
- Template 212 1 may be made available along with a variety of other templates 212 2 - 212 n for consumption by one or more customers of cloud services.
- Each template made available in online marketplace 202 may be published by a variety of different cloud service vendors, by a proprietor of cloud services platform 100 , or by other entities.
- Online marketplace 202 may offer hundreds or even thousands of templates.
- online marketplace 202 comprises the Microsoft® Azure® Marketplace, a Web site published by Microsoft Corporation of Redmond, Wash., although this is only an example.
- Template 212 1 includes information necessary to deploy a vendor's cloud service offering within the customer's account. For example, if the vendor's cloud service is a PaaS or SaaS application, template 212 1 may declare that a certain number of virtual machines, storage accounts, databases, network connections, and/or the like, each having a specified configuration, must first be allocated within the customer's account by customer services platform 100 before deploying the PaaS/SaaS application. Template 212 1 may further declare that after such resources have been allocated, that certain specified code comprising the PaaS/SaaS application should be downloaded and installed on one or more of the resources (e.g., one or more virtual machines). Thus, templates may provide for a staged deployment of the cloud service, with certain deployment steps being dependent on the successful execution of certain previous deployment steps.
- the vendor's cloud service is a PaaS or SaaS application
- template 212 1 may declare that a certain number of virtual machines, storage accounts, databases, network connections, and/or the like, each having a specified
- a template, such as template 212 1 may also declare that certain information, such as resource deployment settings, cloud service deployment settings, or the like, should be obtained from the customer during the deployment process. Accordingly, a deployment service that is utilized to manage the deployment process may present a UI for obtaining such information from the customer as part of the deployment process. Content of the UI and/or the information to be obtained via the UI may be specified by the vendor via a file (or other suitable container) that may be published along with a template and packaged therewith.
- a customer using a customer computing system 206 may browse online marketplace 202 via a graphical UI (GUI) thereof and select template 212 1 for deployment to the customer's account within cloud services platform 100 , denoted customer account 222 .
- GUI graphical UI
- the customer may then initiate the deployment of template 212 1 via interaction with the aforementioned GUI.
- a marketplace service (which may comprise, for example, part of online marketplace 202 ) will deploy template 212 1 , thereby causing an instance of the vendor's cloud service and the resources utilized thereby to be deployed within customer account 222 .
- this deployment within customer account 222 is denoted cloud service deployment 224 .
- the deployment process may be staged in that certain resources may be allocated before other resources, and some or all resources may be allocated before the cloud service itself is installed. Also, as noted above, this deployment process may involve presenting a UI to the customer (e.g., via customer computing system 206 ) via which the customer can specify certain deployment settings for the resources to be allocated and for the cloud service itself.
- cloud services deployment system 200 enables vendors of SaaS and PaaS applications to publish templates in an online marketplace (e.g., the Microsoft® Azure® Marketplace), and for customers to deploy such applications into their accounts. This can facilitate the creation of an ecosystem of self-service multi-resource applications.
- vendors can share best-practice configurations of complex PaaS and SaaS offerings, and customers can provision them in minutes. While the foregoing enables customers to use applications that previously would have required application-specific expertise and time-consuming set up, cloud services deployment system 200 still does not address certain issues and shortcomings associated with the deployment of a vendor's cloud service by a customer.
- the customer after initial provisioning, the customer is typically solely responsible for the ongoing maintenance and update of the application that resides in their accounts.
- the customer must learn of vendor-created updates out-of-band and manually apply them. If the application fails, the customer must diagnose and fix the problem, or contact the vendor out-of-band and grant the vendor ad-hoc access to their account for troubleshooting.
- vendors typically have no way of preventing customers from tampering with application resources once those resources are deployed within the customer account, nor of preventing access to the intellectual property (e.g., the deployment resource requirements and configuration) that makes up the application.
- the intellectual property e.g., the deployment resource requirements and configuration
- Vendors that want a more controlled and managed experience than that offered by cloud service deployment system 200 must sell their cloud service offering directly and either build a fully multi-tenant service, or deploy single-tenant applications into their own account within cloud services platform 100 .
- the complexity of managing tenancy tracking, resource governance and isolation puts robust multitenant applications out of reach of many developers.
- the vendor is also responsible for tracking and charging customers directly for the underlying resources of cloud services platform 100 that they consume, which also requires them to implement customer billing systems. Vendors are also left to create an application provisioning experience, rather than being able to take advantage of the above-described template-based deployment technique, APIs 122 , and management tools 124 (e.g., command-line and Web portal functionality) provided by cloud services platform 100 .
- This model also prevents customers from easily leveraging RBAC functionality 128 to control access to application management endpoints.
- customers cannot directly manage the networking configuration of the application's endpoints, for example by connecting the application's virtual network to their own on-premises
- a cloud resource manager e.g., a modified version of cloud resource manager 102 of FIG. 1
- a cloud resource manager e.g., a modified version of cloud resource manager 102 of FIG. 1
- an appliance-like experience in a cloud services platform that is aimed at making it easy for vendors to sell fully-managed cloud services (e.g., SaaS and PaaS applications) and for customers to self-service deploy and use them.
- the system described in the following Section advantageously enables vendors to bill customers using a billing system provided by the proprietor of the cloud services platform, that uses templates to manage the lifecycle of deployed applications, and that enables customers to automatically acquire updates and pay for support.
- a billing system provided by the proprietor of the cloud services platform, that uses templates to manage the lifecycle of deployed applications, and that enables customers to automatically acquire updates and pay for support.
- Such a system may be used to create a cloud-application “app store” ecosystem in the cloud services platform for PaaS and SaaS vendors, corporate central platform teams, as well as system integrators that wish to package and resell their solutions.
- the described system can holistically support arbitrarily complex applications.
- cloud services platform providing common application lifecycle management and billing services, even small vendors can sell fully-managed SaaS and PaaS applications, and customers can find in such a cloud services platform a marketplace of easy-to-consume applications provided by such vendors that don't come associated with a large infrastructure management tax.
- Appliance embodiments described herein are designed to meet the requirements of a range of appliance-like experiences.
- an online marketplace of templates such as that described in the previous Section
- the customer can self-service deploy an application, but is subsequently responsible for maintenance, and any billing for the use of the appliance must be arranged with a vendor directly or billed in association with the deployed resources.
- SaaS vendors A small company selling dentist office management software might be an example of a SaaS vendor.
- PaaS vendors who want to make available a PaaS service as a self-contained application that customers can deploy themselves. While such vendors may want the application's management interface to integrate deeply with the cloud service platform to which the application is deployed for a unified experience, they wish to allow customer access to the appliance's underlying resources, while still being able to update and optionally charge for the use of the service.
- This type of appliance allows customers the opportunity to customize the appliance's internal operation, for example by installing their preferred antivirus into the appliance's virtual machines, or by configuring network security groups to the networking of the appliance in accordance with the customer's security policies. This capability is highly desirable for services that will be part of a larger customer application to which such policies and management standards apply.
- the appliance model described herein enables many features which are designed to make it easier for vendors to publish applications and for customers to consume them. As will be seen, the features can satisfy the needs of “black box” SaaS appliances and may be a superset of those needed for the more “open-box” PaaS experiences.
- These features may include one or more of but are not limited to: (i) vendors can self-service publish appliances to an online marketplace; (ii) customers can self-service deploy appliances from the online marketplace; (iii) customers can self-service enable enhanced appliance functionality and support levels; (iv) customer access to an appliance may be via an interface that is integrated with RBAC functionality of a cloud resource manager; (v) vendors can specify feature-specific billing and support billing charges; (vi) vendors have full access to an appliance's resources for diagnostics and troubleshooting that's integrated with the RBAC functionality of the cloud resource manager; (vii) vendors can self-service update deployed appliances; (viii) vendors can query information about the provisioned instances of their appliances, including the customers that have deployed them and the version; (ix) vendors can query usage information, customer information, and detect trends to improve their application; and (x) vendors can solicit customer feedback and ratings on their application to improve and share the score.
- cloud resource manager e.g., cloud resource manager 102 of FIG. 1
- an online marketplace e.g., online marketplace 202 of FIG. 2
- a billing system associated with a cloud services platform e.g., cloud services platform 100 of FIG. 1 to provide the foregoing features and to accommodate the full spectrum of appliance scenarios.
- FIG. 3 is a block diagram of an example cloud services platform 300 that is configured to support the self-service deployment of appliances in accordance with an embodiment.
- cloud services platform 300 includes a cloud resource manager 302 , a plurality of resource providers including a resource provider A 304 , a resource provider B 306 , a resource provider C 308 , and an appliance resource provider 332 , and an appliance deployment 310 .
- a cloud resource manager 302 a plurality of resource providers including a resource provider A 304 , a resource provider B 306 , a resource provider C 308 , and an appliance resource provider 332 , and an appliance deployment 310 .
- Cloud resource manager 302 is substantially similar to cloud resource manager 102 as described above with respect to FIG. 1 , except that appliance support functionality 330 has been added thereto. Consequently, APIs 322 , management tools 324 , resource group functionality 326 , and RBAC functionality 328 may each be configured to operate in a like manner respectively to APIs 122 , management tools 124 , resource group functionality 126 , and RBAC functionality 128 , as previously described with respect to FIG. 1 , with some modification to these components to support the deployment and management of appliances.
- cloud resource manager 302 can be invoked programmatically or by a user to deploy, update, or delete resources that are themselves utilized to support a cloud service deployment, which in this case can include an appliance.
- cloud resource manager 302 has deployed exemplary appliance deployment 310 .
- cloud resource manager 302 comprises the Microsoft® Azure® Resource Manager, although this is only an example and is not intended to be limiting.
- appliance deployment 310 includes a cloud service 312 that is implemented as an appliance resource group (via resource group functionality 326 ), wherein the appliance resource group comprises a plurality of resources that support cloud service 312 .
- the resources include a resource A 314 , a resource B 316 , a resource C 318 , and an appliance management resource 320 .
- Each of resource A 314 , resource B 316 , and resource C 318 may comprise resources that are globally available to any customer of cloud services platform 100 , wherein such resources may include, for example and without limitation, virtual machines, storage accounts, Web applications, databases, or virtual networks. As was described above with respect to FIG.
- each of these resources may be made available by a corresponding resource provider, which in this case includes resource provider A 304 , resource provider B 306 , and resource provider C 308 .
- Resource provider A 304 , resource provider B 306 and resource provider C 308 may be termed “static” resource providers in the sense that they are continuously registered with cloud resource manager 302 to provide resource allocation and management services across time and across different customer deployments.
- appliance management resource 320 comprises a resource that is available only to the customer that deployed the appliance associated therewith, wherein such resource is provided by corresponding appliance resource provider 332 .
- appliance resource provider 332 is registered with cloud resource manager 302 at the time of appliance deployment and if the deployment is deleted, then appliance resource provider 332 is deleted with it.
- appliance resource provider 332 may be termed a “dynamic” resource provider.
- appliance management resource 320 may comprise a set of appliance-specific APIs that can be used to monitor and/or manage various aspects of appliance deployment 310 . This enables the vendor to extend the resource management feature set for appliance deployment 310 to include management features other than those normally provided by cloud resource manager 302 .
- Such appliance-specific APIs may be registered into a same namespace as the other resource management APIs made available by cloud resource manager 302 . In this way, the appliance-specific APIs can be accessed using the same management tools 324 already made available by cloud resource manager 302 for the other resource management APIs. This can help provide customers with a seamless and consistent user experience when managing appliance deployment 310 along with their other cloud service deployments within cloud services platform 300 .
- cloud resource manager 302 (via appliance support functionality 330 ) may be configured to treat appliance deployment 310 differently than cloud service deployment 110 as described above with respect to FIG. 1 .
- cloud resource manager 302 may prohibit the customer from viewing or managing various constituent resources that make up the appliance resource group that defines cloud service 312 .
- cloud resource manager 302 may make only appliance management resource 320 visible to the customer.
- embodiments can prevent customers from tampering with appliance resources once those resources are deployed within the customer account, and can also prevent customers from accessing the intellectual property (e.g., the deployment resource requirements and configuration) that makes up the appliance.
- the intellectual property e.g., the deployment resource requirements and configuration
- cloud resource manager 302 may grant access to appliance deployment 310 to the vendor that published the appliance.
- Such access (referred to elsewhere herein as a “projection”) may be granted via a vendor account in cloud services platform 300 .
- Such access may advantageously enable the vendor to manage appliance deployment 310 on behalf of the customer.
- vendors may be provided with full access to an appliance's resources for diagnostics and troubleshooting and may self-service update the deployed appliance.
- vendors can query information about provisioned instances of their appliances, including the customers that have deployed them and the version, and can query usage information, customer information, and detect trends to improve their application.
- cloud services platform 300 supports a template-based deployment feature that enables an appliance to be self-service published to an online marketplace by a vendor and then self-service deployed therefrom by a customer.
- templates are a convenient way to define a cloud service (e.g., an application) that can be customized for individual deployments and that can be used to apply updates.
- templates can define resource groups and since resource group access can be controlled via RBAC functionality 328 , templates can be used to integrate the cloud services they create with RBAC functionality 328 and policy management of cloud resource manager 302 .
- templates, resource groups, resource providers and an online marketplace may provide a foundation of a self-service appliance model.
- each of cloud resource manager 302 , resource provider A 304 , resource provider B 306 , resource provider C 308 , and appliance resource provider 332 may represent software executing on a computer or on one or more interconnected computers.
- each of these components may be running as software on a collection of networked physical or virtual machines within one or more data centers that comprise cloud services platform 300 .
- cloud service 312 may comprise software and resource A 314 , resource B 316 , resource C 318 and appliance management resource 320 may comprise computing resources used to support and/or manage the execution of such software.
- FIG. 4 is a block diagram of a deployment system 400 that illustrates a deployment of a PaaS appliance to cloud services platform 300 in accordance with an embodiment.
- the PaaS appliance implements a database cluster.
- an appliance vendor can utilize its own vendor computing system 404 to publish an appliance 412 1 to an online marketplace 402 (e.g., via a first UI thereof), wherein such appliance 412 1 includes a template that provides information necessary for a customer to deploy the vendor's appliance to the customer's own account (i.e., to the customer's own set of resources) within cloud services platform 300 .
- Appliance 412 1 may be made available along with a variety of other appliances 412 2 - 412 n for consumption by one or more customers.
- Each appliance made available in online marketplace 402 may published by a variety of different appliance vendors, by a proprietor of cloud services platform 300 , or by other entities.
- Online marketplace 402 may offer hundreds or even thousands of appliances.
- online marketplace 402 comprises the Microsoft® Azure® Marketplace, a Web site published by Microsoft Corporation of Redmond, Wash., although this is only an example.
- a template associated with appliance 212 1 includes information necessary to deploy a vendor's appliance within the customer's account.
- the vendor's appliance is a PaaS or SaaS application
- the template may declare that a certain number of virtual machines, storage accounts, databases, network connections, and/or the like, each having a specified configuration, must first be allocated within the customer's account by customer services platform 300 before deploying the PaaS/SaaS application.
- the template associated with appliance 412 1 may further declare that after such resources have been allocated, that certain specified code comprising the PaaS/SaaS application should be downloaded and installed on one or more of the resources (e.g., one or more virtual machines).
- the template associated with appliance 412 1 may also declare that certain information, such as resource deployment settings, appliance deployment settings, or the like, should be obtained from the customer during the deployment process. Accordingly, a service that is utilized to manage the deployment process (e.g., a marketplace service 450 ) may present a UI for obtaining such information from the customer as part of the deployment process.
- a service that is utilized to manage the deployment process e.g., a marketplace service 450
- Other information may be packaged or otherwise included with the template to facilitate the deployment of the appliance.
- such other information may include UI definition information that can be used to obtain deployment parameters from the customer as part of the deployment process.
- UI definition information can be used to obtain deployment parameters from the customer as part of the deployment process.
- other information may also include vendor identification information, billing metadata, or the like.
- a customer using a customer computing system 406 may browse online marketplace 402 (via a second UI thereof) and select appliance 412 1 for deployment to the customer's account within cloud services platform 300 , denoted customer account 422 . The customer may then initiate the deployment of appliance 412 1 via interaction with the aforementioned GUI.
- marketplace service 450 (which comprises part of online marketplace 402 ) will deploy appliance 212 1 within customer account 422 in accordance with the template associated with appliance 212 1 .
- this deployment within customer account 422 is denoted appliance resource group 424 .
- the deployment process may be staged in that certain resources may be allocated before other resources, and some or all resources may be allocated before the cloud service provided by the appliance itself is installed. Also, as noted above, this deployment process may involve presenting a UI to the customer (e.g., via customer computing system 406 ) via which the customer can specify certain deployment settings for the resources to be allocated and for the cloud service itself.
- the template within appliance 412 1 deploys a database cluster within customer account 422 , where the database cluster functionality is constructed from a virtual machine scale set (VMSS) 426 and a storage account 428 .
- VMSS virtual machine scale set
- database clients can connect to the database cluster via a database cluster endpoint 430 , which may comprise an Internet Protocol (IP) address (although this example is not intended to be limiting).
- IP Internet Protocol
- template 412 1 also deploys three appliance-related resources: an appliance resource provider 432 that registers a resource type and its schema with cloud resource manager 302 , a Web application 434 that implements a resource provider contract (RPC) associated with appliance resource provider 432 via an appliance resource provider endpoint 436 , and a marketplace resource 438 that implements an API for the customer to query appliance billing information, as well as enabling billed appliance functionality and features.
- an appliance resource provider 432 that registers a resource type and its schema with cloud resource manager 302
- a Web application 434 that implements a resource provider contract (RPC) associated with appliance resource provider 432 via an appliance resource provider endpoint 436
- RPC resource provider contract
- marketplace resource 438 that implements an API for the customer to query appliance billing information, as well as enabling billed appliance functionality and features.
- templates allow for the declarative modelling of complex, multi-resource applications.
- Each resource declared in a template is of a specific resource type, and resource types are implemented by resource providers.
- a vendor must implement an RPC, which is necessary for cloud resource manager 302 to include the resource types it implements in a control plane and template system of cloud resource manager 302 .
- appliance control planes As resources gives appliances a deep integration with cloud computing platform 300 .
- resource providers are global in nature, however, requiring PaaS and SaaS vendors to create multitenant services to implement them.
- the appliance model described herein removes the need for a vendor to create a central management service, and enables customer self-service provisioning, by using the concept of an appliance resource provider.
- Appliance resource providers enable seamless integration of an appliance into the ecosystem of APIs and tooling provided by cloud services platform 300 .
- resource providers have a global scope and appliance resource providers are more narrowly scoped.
- resource providers have a global scope and appliance resource providers are more narrowly scoped.
- only one resource provider can register for a global resource type (i.e., a resource type available to all customers of cloud services platform 300 ).
- the scope of an appliance resource provider determines the namespace in which it operates, as well as its visibility. Possible scopes to which an appliance resource provider may be limited include account, tenant, and resource group.
- an appliance resource provider that is scoped to an account defines the resource types it registers for an entire account. If an appliance resource provider registers the resource type CompanyX.DatabaseCluster for an account, that definition overrides any global definition so that resources of that type specified by a call to that account by cloud resource manager 302 —whether via REST API or a template—will use the implementation of the type provided by the appliance resource provider.
- an appliance resource provider is the same as a global resource provider in all other ways.
- the implementation of an appliance resource provider is hidden behind its endpoint and its implementation of the RPC with cloud resource manager 302 . In fact, nothing prevents an appliance resource provider from being implemented outside of cloud services platform 300 —even on a cloud services platform provided by a different enterprise.
- Web application 434 implements the appliance resource provider in the example of FIG. 4 , as pointed out, appliance resource providers can be implemented by any compute host accessible to cloud resource manager 302 via, for example, an IP address.
- appliance resource group 424 Once appliance resource group 424 is deployed, the customer can create an application resource group 442 in customer account 422 that makes use of appliance resource provider 432 .
- the customer may do so by including an appliance management resource 444 that specifies that it is implemented by appliance resource provider 432 by referencing the name of appliance resource provider 432 in appliance resource group 424 .
- cloud resource manager 302 determines how to find endpoint 436 of appliance resource provider 432 .
- the output parameters of appliance management resource 444 can include any information that the appliance needs to make available to applications, including database cluster endpoint 430 .
- application resource group 442 includes a Web application 446 that has an input parameter that receives database cluster endpoint 430 from appliance management resource 444 , as well as an associated cache 448 .
- cloud resource manager 302 projects appliance resource groups into the account of the appliance vendor.
- appliance resource group 424 is projected into a vendor account 450 within cloud services platform 300 .
- the projection results in an appliance-type resource group appearing in the vendor's resource group namespace with RBAC rules that gives the vendor full access to appliance resources.
- the vendor can use this access to monitor and troubleshoot the operation of the appliance software on behalf of the customer.
- projected resource groups have account-unique identifiers
- cloud resource manager 302 implements an API that lets a vendor query the name the customer assigned to the resource group.
- the vendor has no access to any other aspect of the customer's resources, other resource groups, RBAC policy, management policy, or account; they only have access to the appliance's resources.
- a vendor can “seal” an entire appliance, or specific resources in the appliance.
- a sealed appliance resource group only exposes marketplace resource 438 and appliance resource provider resources, whereas all others are hidden from the customer's view. If a vendor wants to hide only some of the appliance's resources, they can seal just those resources. Sealed resources are visible in the vendor's projection of appliance resource groups. Note that sealing, which makes an appliance a black box from the perspective of a customer, is no different than the experience customers have when they access resources via API endpoints published by a vendor that implements a multitenant service.
- PaaS appliances are characterized by the fact that they implement service endpoints for use by applications.
- Customers include the appliance management resource type so that the application can obtain information about the appliance via the appliance resource provider.
- the obtained information may be database cluster endpoint 430 that appliance resource provider 432 returns as an output parameter of appliance management resource 444 of application resource group 442 .
- SaaS appliances also implement appliance resource providers so that the customers can interact with the SaaS appliance control plane, but they may also include a resource of the type implemented by the appliance resource provider in the appliance resource group itself.
- FIG. 5 is a block diagram of a deployment system 500 that shows the deployment of a SaaS appliance within cloud services platform 300 of FIG. 3 .
- the SaaS appliance implements dentist office software.
- an appliance vendor utilizes its own vendor computing system 404 to publish an appliance 512 to online marketplace 402 , and a customer using customer computing system 406 selects and initiates deployment of appliance 512 to customer account 422 within cloud services platform 300 .
- online marketplace may include any number of appliances for self-service deployment.
- a template associated with appliance 512 deploys dentist office software within customer account 422 , where the dentist office software functionality is constructed from a VMSS 526 and a storage account 528 .
- template 512 also deploys three appliance-related resources: an appliance resource provider 532 that registers a resource type and its schema with cloud resource manager 302 , a Web application 534 that implements an RPC associated with appliance resource provider 532 via an appliance resource provider endpoint 536 , and a marketplace resource 538 that implements an API for the customer to query appliance billing information, as well as enabling billed appliance functionality and features.
- cloud resource manager 302 projects appliance resource group 424 into vendor account 450 within cloud services platform 300 .
- the SaaS appliance of FIG. 5 includes an appliance resource provider 532 that enables customers to interact with its control plane via cloud resource manager 302 .
- appliance management resource 544 of the type implemented by appliance resource provider 532 is included in application resource group 524 itself.
- Appliance resource group 524 may be a sealed appliance, such that only appliance management resource 544 and marketplace resource 538 are visible to the customer.
- FIG. 5 Another aspect of the appliance model shown in FIG. 5 is the extension of the RPC with cloud resource manager 302 to include optional integration with a Web portal 540 of cloud services platform 300 .
- Web portal 540 can provide a basic experience for customers to manage an appliance.
- the RPC can be extended to provide a richer portal experience so that vendors can customize the portal view. Vendors that want full control over the experience, or that want to display an existing portal, can use the RPC to opt out of basic integration so that Web portal 540 embeds the appliance portal within an iframe.
- This Section will provide exemplary and non-limiting implementation details concerning various aspects of appliances and the appliance lifecycle, including mechanisms that may be introduced so that an appliance can expose a management interface that integrates with cloud resource manager 302 , how a vendor has access to manage appliances on behalf of its customers, how a vendor specifies appliance billing charges, and how a vendor can keep appliance resources hidden from customers.
- a vendor registers an appliance with online marketplace 402 by submitting an appliance resource group template along with the appliance name to marketplace service 450 .
- the vendor also supplies metadata that may include an appliance icon and description that can be displayed to customers via a GUI of online marketplace 402 , as well information that identifies the vendor and billing instructions.
- the vendor may be identified as a Microsoft® Azure® Active Directory® (AAD) principal.
- An appliance template may be used to deploy a marketplace resource (e.g., marketplace resource 438 or marketplace resource 538 ) within the appliance resource group, whose presence may serve two purposes: one is so that marketplace service 450 can be automatically notified when the appliance is deleted, and the second is so that marketplace service 450 can present information directly to the user via the resource about the appliance, including billing information, vendor contact information, and vendor upsell offers such as enhanced support and appliance functionality.
- marketplace service 450 can pass a vendor information about a customer using the same channel.
- marketplace service 450 deploys the appliance's template to the customer account and includes the appliance billing metadata, which will be described later. If the appliance deployment is programmatic, the customer specifies the appliance template's parameter values, and if interactive, a Web portal or other UI prompts a user to specify parameter values. This flow leverages all the functionality developed for template deployment with only minor modifications to accommodate appliance templates, which can include the user enabling features advertised via the billing metadata.
- appliances deploy directly into customer accounts, customers have a range of customization opportunities, starting with the parameters exposed by the template. That customization allows them to place appliance networking endpoints into customer virtual networks. Customers can also install antivirus into appliance virtual machines if the vendor allows, configure Web application firewalls, apply RBAC and management policy to control access to the appliance, and more.
- the customer only has access to the resources in the appliance that the vendor allows, plus the ability to delete the appliance. All other access may be blocked even from account and tenant administrators.
- RBAC functionality 328 may be configured to support deny rules, or cloud resource manager 302 may be configured to implement special case logic for appliance resource groups.
- the vendor is provided with full access to the resources within the appliance resource group, and the vendor can allow the customer to manage only specific resources via RBAC functionality 328 .
- the customer may still retain the ability to delete the appliance resource group, but may be prohibited from deleting even the individual resources within the appliance resource group that a vendor allows them to access.
- cloud resource manager 302 supports a property that marketplace service 450 supplies at the time of resource group creation to specify that the resource group is an appliance.
- the property includes information about the appliance vendor's account. The presence of the appliance property may cause cloud resource manager 302 to project the appliance resource group into the vendor's account, and prevent the customer from deleting individual resources of the appliance resource group (though not the resource group itself).
- vendors can seal an appliance or individual appliance resources.
- the hidden seal causes cloud resource manager 302 to omit all appliance resources except for the marketplace resource from enumeration and access, whereas resources with the read-only seal are visible but cannot be modified by the customer.
- all appliance resources are visible in the vendor's projection, and the vendor has full access to the resources.
- the vendor can control access using RBAC functionality 328 in the context of their own account.
- vendors may know of all deployed instances of their appliances without having to write any special code to achieve this. Vendors may obtain appliance-specific billing information and feature enablement via an appliance's marketplace resource (e.g., marketplace resource 438 or marketplace resource 538 ) the same way that a customer does.
- an appliance's marketplace resource e.g., marketplace resource 438 or marketplace resource 538
- Embodiments described herein minimize special case behavior specific to appliances, allow customers fine-grained access to appliance visible resources, while enabling an appliance vendor to block access to appliance resources to prevent misconfiguration and to protect intellectual property.
- the appliance model described herein can enable customers to manage appliances using a Web portal, CLI and APIs of cloud resource manager 302 , as well as to have the management plane integrate with RBAC functionality 328 thereof.
- appliances implement an appliance resource provider that defines a resource type that represents the appliance's control plane.
- the appliance resource provider is not a globally-registered resource provider, but rather one that can be scoped to a specific resource group (or account).
- the appliance resource provider defines an appliance management resource type, complete with its own schema.
- every appliance template includes an instance of its appliance management resource type, and appliance templates use parameters to configure the resource in the same way as for other resources.
- the only difference between an appliance resource provider and a global resource provider from the perspective of the template is that an appliance resource provider must specify the resource provider endpoint and schema in the template.
- cloud resource manager 302 When cloud resource manager 302 deploys an appliance template it will see the presence of the appliance management resource (which marketplace service 450 will ensure is not sealed). If the appliance management resource is implemented from within the appliance resource group that is being created, the appliance management resource specifies the relevant dependencies, as well as a Universal Resource Identifier (URI) that will be available after the appliance resource provider initializes. For example, if the appliance resource provider is hosted in a Web application that is part of the appliance resource group, the appliance management resource will list the Web site as a dependency, and list its URI as the Web application's URI output parameter. Alternatively, if a vendor implements a multitenant resource provider as a central service, the URI will point at the global (or regional, if location is supported) endpoint.
- URI Universal Resource Identifier
- An appliance resource provider can implement appliance management APIs including ones that modify the behavior of the appliance, for example by scaling it or changing its configuration, as well as ones to query the status of the appliance, obtain log files (for example via returned SAS keys of storage objects containing diagnostic output). Appliances desiring integration with a Web portal of cloud resource manager 302 can also implement RPC extensions that the Web portal uses to inject appliance user experience (UX) into the Web portal.
- appliance management APIs including ones that modify the behavior of the appliance, for example by scaling it or changing its configuration, as well as ones to query the status of the appliance, obtain log files (for example via returned SAS keys of storage objects containing diagnostic output).
- Appliances desiring integration with a Web portal of cloud resource manager 302 can also implement RPC extensions that the Web portal uses to inject appliance user experience (UX) into the Web portal.
- UX appliance user experience
- example application resource group 442 shown earlier in FIG. 4 is depicted in FIG. 6 .
- Management tools 324 e.g., Web portal, CLI
- Cloud resource manager 302 routes the request to appliance management resource 434 that is implemented in appliance resource group 424 , specifically in Web application 434 .
- appliance resource provider core implementations that are configured to handle authentication with cloud resource manager 302 , API decoding, and other common resource provider aspects are made available to appliance vendors so that their work to implement an appliance resource provider can be reduced.
- Resources that make up an appliance resource group can emit billing meters directly to the customer's account. These charges can show up on a customer bill broken down by charges aggregated for the appliance resource group as well as broken down by the cost of each resource. It may be desirable to obfuscate the internals of an appliance from even billing information. If so, one way that can be accomplished is for cloud resource manager 302 to tag all resources in an appliance resource group with an appliance tag. Billing reports would omit the reporting of resources with the tag, and only show the overall cost of the resource group.
- the appliance model can support several different charges for the use of the appliance: one-time provisioning charge; per-minute runtime charge; and appliance-specific charges, such as one applied per appliance user, per appliance operation (e.g. data transaction), and ones for specific feature enablement.
- marketplace service 450 may pass billing metadata provided by the vendor at the time of appliance registration to its marketplace resource instance hosted in the appliance resource group. This resource emits the one-time provisioning charge, as well as per-minute costs using billing meters associated with cloud services platform 300 to the customer's account.
- the resource provider can emit vendor-supplied text for each additional charge that identifies its source and that the billing system can report in an itemized breakdown of the cost of the appliance. For example, in the first bill after an appliance is provisioned, a customer bill might look like this:
- billing metadata line items can include a flag that indicates whether the item is active.
- a Web portal associated with cloud service platform 300 can display billing metadata line items for appliances in online marketplace 402 , as well as for deployed appliances, it serves as an advertisement of the enhanced capabilities of the appliance.
- the marketplace resource provider can implement an API that activates line items, triggering the emission of the associated charges. This API support can enable customers to use the Web portal and scripts to configure the appliance's for-cost features.
- vendors may wish to hide the charges for the appliance's resources. Any charges for sealed resources, which would be all of them for a sealed appliance, can be rolled up as a charge for the appliance itself. Further, a vendor can opt to charge a fixed cost for the appliance and have a raw resource cost come out of that charge (which requires the charge for the appliance to be higher than that accrued by its resources). This effectively hides the cost of the raw resources for when the vendor truly wants to make the appliance opaque.
- a sealed-appliance bill that hides the resource costs might look like this:
- Appliances can be made aware of customer self-service feature enablement in a timely manner, and optionally, notify the vendor. In an embodiment, this is achieved by configuring appliance resource providers to implement APIs that marketplace service 450 can use to notify it of billing line-item updates.
- the same design used by resource providers to authenticate cloud resource manager 302 can be used for appliance resource providers authenticating marketplace service 450 (which knows of changes via the marketplace resource in the appliance resource group).
- cloud resource manager 302 can publish metadata about an endpoint that resource providers query to obtain client-side certificate public keys that they use to validate requests to cloud resource manager 302 , and marketplace service 450 publishes a similar API. Appliance resource providers can notify a vendor of changes, if desired, via a vendor-specific mechanism.
- marketplace service 450 handles appliance updates.
- a vendor has a new version of an appliance, they simply publish it via marketplace service 450 .
- Marketplace service 450 then enumerates the deployed instances of the appliance and submits the revised template to cloud resource manager 302 .
- Marketplace service 450 update functionality may also provide support for gradual rollout protocols, as well as give the vendor explicit control so that they can update specific appliance instances.
- marketplace service 450 enables this level of control by allowing vendors to specify update deadlines when they submit an update. When there's a future deadline, marketplace service 450 will notify appliance customers of the pending update via the marketplace resource, which will surface update status (e.g., via a Web portal) and be accessible via APIs. A customer then can on-demand apply the update, but if they don't, the update applies automatically when the deadline arrives.
- FIG. 7 depicts a flowchart 700 of a method that may be implemented by a cloud services platform, such as cloud services platform 300 described above with respect to FIG. 3 .
- a cloud services platform such as cloud services platform 300 described above with respect to FIG. 3 .
- the present application embodies a variety of other methods than that shown in flowchart 700 , which is merely exemplary of some aspects the innovative systems, methods and computer program products described herein.
- the method of flowchart 300 will now be described with continued reference to embodiments described above with respect to FIGS. 3 - 5 . However, the method is by no means limited to those embodiments.
- the method of flowchart 700 begins at step 702 , in which marketplace service 450 receives a template associated with an appliance that has been published to online marketplace 402 by a vendor and that has been selected therefrom by a customer, the template specifying resources to be allocated to deploy the appliance.
- the appliance comprises one of a PaaS application or a SaaS application.
- marketplace service 450 deploys the appliance to customer account 422 associated with the customer within cloud services platform 300 in accordance with the template, the deploying including deploying the resources specified by the template as part of an appliance resource group (e.g., appliance resource group 424 or appliance resource group 524 ) within the customer account, the specified resources including an appliance management resource (e.g., appliance management resource 444 or appliance management resource 544 ) that is configured to expose control features of the appliance to the customer.
- an appliance management resource e.g., appliance management resource 444 or appliance management resource 544
- cloud resource manager 302 provides access to the appliance resource group to the vendor via a vendor account 450 associated with the vendor within cloud services platform 300 .
- the method further includes cloud services platform 300 rendering at least one of the resources in the appliance resource group other than the appliance management resource inaccessible or read-only to the customer.
- step 706 comprises cloud resource manager 302 rendering all the resources in the appliance resource group accessible to the vendor in the vendor account.
- step 704 of deploying the appliance further comprises registering an appliance resource provider (e.g., appliance resource provider 432 or appliance resource provider 532 ) with cloud resource manager 302 within cloud services platform 300 , the appliance resource provider providing a set of APIs for controlling the appliance via cloud resource manager 302 and the appliance management resource (e.g., appliance management resource 444 or appliance manager resource 544 ).
- the set of APIs for controlling the appliance may be registered into a same namespace as other APIs exposed by the cloud resource manager.
- the specified resources include a marketplace resource (e.g., marketplace resource 438 or marketplace resource 538 ) that facilitates providing billing features to the customer relating to the appliance.
- a marketplace resource e.g., marketplace resource 438 or marketplace resource 538
- FIG. 8 depicts an example processor-based computer system 800 that may be used to implement various embodiments described herein, such as any of the embodiments described above with respect to FIGS. 1 - 7 .
- system 800 may be used to implement or execute any of the elements of cloud services platform 300 as described above with respect to FIGS. 3 - 5 , any of the elements of deployment system 400 as described above with respect to FIG. 4 , and any elements of deployment system 500 as described above with respect to FIG. 5 .
- System 800 may also be used to implement or execute the method of flowchart 700 as described above with respect to FIG. 7 .
- the description of system 800 provided herein is provided for purposes of illustration, and is not intended to be limiting. Embodiments may be implemented in further types of computer systems, as would be known to persons skilled in the relevant art(s).
- system 800 includes a processing circuit 802 , a system memory 804 , and a bus 806 that couples various system components including system memory 804 to processing circuit 802 .
- Processing circuit 802 may comprise one or more microprocessors or microprocessor cores.
- Bus 806 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.
- System memory 804 includes read only memory (ROM) 808 and random access memory (RAM) 810 .
- ROM read only memory
- RAM random access memory
- a basic input/output system 812 (BIOS) is stored in ROM 808 .
- System 800 also has one or more of the following drives: a hard disk drive 814 for reading from and writing to a hard disk, a magnetic disk drive 816 for reading from or writing to a removable magnetic disk 818 , and an optical disk drive 820 for reading from or writing to a removable optical disk 822 such as a CD ROM, DVD ROM, BLU-RAYTM disk or other optical media.
- Hard disk drive 814 , magnetic disk drive 816 , and optical disk drive 820 are connected to bus 806 by a hard disk drive interface 824 , a magnetic disk drive interface 826 , and an optical drive interface 828 , respectively.
- the drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer.
- a hard disk a removable magnetic disk and a removable optical disk
- other types of computer-readable memory devices and storage structures can be used to store data, such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like.
- program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These program modules include an operating system 830 , one or more application programs 832 , other program modules 834 , and program data 836 . In accordance with various embodiments, the program modules may include computer program logic that is executable by processing unit 802 to implement any of the embodiments described in Section II above and with respect to FIGS. 1 - 7 .
- a user may enter commands and information into system 800 through input devices such as a keyboard 838 and a pointing device 840 (e.g., a mouse).
- Other input devices may include a microphone, joystick, game controller, scanner, or the like.
- a touch screen is provided in conjunction with a display 844 to allow a user to provide user input via the application of a touch (as by a finger or stylus for example) to one or more points on the touch screen.
- These and other input devices are often connected to processing unit 802 through a serial port interface 842 that is coupled to bus 806 , but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). Such interfaces may be wired or wireless interfaces.
- Display 844 is connected to bus 806 via an interface, such as a video adapter 846 .
- system 800 may include other peripheral output devices (not shown) such as speakers and printers.
- System 800 is connected to a network 848 (e.g., a local area network or wide area network such as the Internet) through a network interface 850 , a modem 852 , or other suitable means for establishing communications over the network.
- a network 848 e.g., a local area network or wide area network such as the Internet
- modem 852 or other suitable means for establishing communications over the network.
- Modem 852 which may be internal or external, is connected to bus 806 via serial port interface 842 .
- computer program medium As used herein, the terms “computer program medium,” “computer-readable medium,” and “computer-readable storage medium” are used to generally refer to memory devices or storage structures such as the hard disk associated with hard disk drive 814 , removable magnetic disk 818 , removable optical disk 822 , as well as other memory devices or storage structures such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. Such computer-readable storage media are distinguished from and non-overlapping with communication media (do not include communication media). Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave.
- 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.
- communication media includes wireless media such as acoustic, RF, infrared and other wireless media. Embodiments are also directed to such communication media.
- computer programs and modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. Such computer programs may also be received via network interface 850 , serial port interface 842 , or any other interface type. Such computer programs, when executed or loaded by an application, enable system 800 to implement features of embodiments discussed herein. Accordingly, such computer programs represent controllers of the system 800 .
- Embodiments are also directed to computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing devices, causes a data processing device(s) to operate as described herein. Embodiments may employ any computer-useable or computer-readable medium, known now or in the future. Examples of computer-readable mediums include, but are not limited to memory devices and storage structures such as RAM, hard drives, floppy disks, CD ROMs, DVD ROMs, zip disks, tapes, magnetic storage devices, optical storage devices, MEMs, nanotechnology-based storage devices, and the like.
- a method implemented by a cloud services platform includes: receiving a template associated with an appliance that has been published to an online marketplace by a vendor and that has been selected therefrom by a customer, the template specifying resources to be allocated to deploy the appliance; deploying the appliance to a customer account associated with the customer within the cloud services platform in accordance with the template, the deploying including deploying the resources specified by the template as part of an appliance resource group within the customer account, the specified resources including an appliance management resource that is configured to expose control features of the appliance to the customer; and providing access to the appliance resource group to the vendor via a vendor account associated with the vendor within the cloud services platform.
- the appliance comprises one of a PaaS application or a SaaS application.
- the method further includes rendering at least one of the resources in the appliance resource group other than the appliance management resource inaccessible or read-only to the customer.
- providing access to the appliance resource group to the vendor comprises rendering all the resources in the appliance resource group accessible to the vendor in the vendor account.
- deploying the appliance further comprises registering an appliance resource provider with a cloud resource manager within the cloud services platform, the appliance resource provider providing a set of APIs for controlling the appliance via the cloud resource manager and the appliance management resource.
- the set of APIs for controlling the appliance may be registered into a same namespace as other APIs exposed by the cloud resource manager.
- the specified resources include a marketplace resource that facilitates providing billing features to the customer relating to the appliance.
- a system for deploying appliances to a cloud services platform includes: a computer-implemented online marketplace to which a vendor publishes a template for deploying an appliance associated with the vendor and via which a customer selects the template for deployment; a computer-implemented service that, in response to the selection of the template by the customer, deploys the appliance to a customer account associated with customer within the cloud services platform in accordance with the template, the deploying including deploying resources specified by the template as part of an appliance resource group within the customer account, the specified resources including an appliance management resource that is configured to expose control features of the appliance to the customer; and a cloud resource manager within the cloud services platform that provides access to the appliance resource group to the vendor via a vendor account associated with the vendor within the cloud services platform.
- the appliance comprises one of a PaaS application or a SaaS application.
- the cloud resource manager renders at least one of the resources in the appliance resource group other than the appliance management resource inaccessible or read-only to the customer.
- the cloud resource manager renders all the resources in the appliance resource group accessible to the vendor in the vendor account.
- the deploying the appliance further comprises registering an appliance resource provider with the cloud resource manager, the appliance resource provider providing a set of APIs for controlling the appliance via the cloud resource manager and the appliance management resource.
- the set of APIs for controlling the appliance may be registered into a same namespace as other APIs exposed by the cloud resource manager.
- the specified resources include a marketplace resource that facilitates providing billing features to the customer relating to the appliance.
- a computer-implemented online marketplace for self-service publication and deployment of appliances for a cloud services platform comprises: a first user interface via which a vendor can publish a template for deploying an appliance associated with the vendor; and a second user interface via which a customer can select the template for deployment of the appliance to a customer account associated with the customer within the cloud services platform, the deployment including deploying resources specified by the template as part of an appliance resource group within the customer account, the specified resources including an appliance management resource that is configured to expose control features of the appliance to the customer, and providing access to the appliance resource group to the vendor via a vendor account associated with the vendor within the cloud services platform.
- the appliance comprises one of a PaaS application or a SaaS application.
- the deployment further includes rending at least one of the resources in the appliance resource group other than the appliance management resource inaccessible or read-only to the customer.
- providing access to the appliance resource group to the vendor includes rendering all the resources in the appliance resource group accessible to the vendor in the vendor account.
- the deployment further includes registering an appliance resource provider with a cloud resource manager within the cloud services platform, the appliance resource provider providing a set of APIs for controlling the appliance via the cloud resource manager and the appliance management resource.
- the specified resources include a marketplace resource that facilitates providing billing features to the customer relating to the appliance.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
- This application is a continuation of U.S. application Ser. No. 15/637,030, filed Jun. 29, 2017, and titled “Self-Service Appliances for Cloud Services Platform,” which claims priority to U.S. Provisional Patent Application No. 62/394,620, filed Sep. 14, 2016, and titled “Cloud Resource Manager Appliances,” the entireties of which are incorporated by reference herein.
- Cloud computing is a type of Internet-based computing that provides shared computer processing resources and data to computers and other devices on demand. It is a model for enabling ubiquitous, on-demand access to a shared pool of configurable computing resources (e.g., computer networks, servers, storage) and applications and services built thereon, which can be rapidly provisioned and released with minimal management effort. Cloud computing and storage solutions provide users and enterprises with various capabilities to store and process their data in third-party data centers that may be located far from the user—ranging in distance from across a city to across the world. Like a utility (e.g., an electrical grid), cloud computing relies on the sharing of resources to achieve coherence and economy of scale.
- 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 features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
- Methods, systems, apparatuses, and computer program products are described herein that enable a vendor to publish a template to a network-accessible marketplace and that enable a customer to selectively utilize the templates to deploy an appliance to a customer account associated with the customer within a cloud services platform. In an embodiment, deploying the appliance to the customer account comprises deploying resources specified by the template as part of an appliance resource group within the customer account, the specified resources including an appliance management resource that is configured to expose control features of the appliance to the customer. In further accordance with the techniques described herein, access to the appliance resource group is provided to the vendor via a vendor account associated with the vendor within the cloud services platform.
- Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with respect to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
- The accompanying drawings, which are incorporated herein and form part of the specification, illustrate embodiments of the application and, together with the description, further explain the principles of the embodiments and to enable a person skilled in the relevant art(s) to make and use the embodiments.
-
FIG. 1 is a block diagram of an example cloud services platform upon which embodiments may be implemented. -
FIG. 2 is a block diagram that illustrates the use of templates to deploy a cloud service within the cloud services platform ofFIG. 1 . -
FIG. 3 is a block diagram of an example cloud services platform that is configured to support the self-service deployment of appliances in accordance with an embodiment. -
FIG. 4 is a block diagram that illustrates a deployment of a Platform as a Service (PaaS) appliance within the cloud services platform ofFIG. 3 . -
FIG. 5 is a block diagram that illustrates a deployment of a Software as a Service (SaaS) appliance within the cloud services platform ofFIG. 3 . -
FIG. 6 illustrates a manner in which an appliance resource provider connects resources representing appliances to a cloud resource manager within the cloud services platform ofFIG. 3 . -
FIG. 7 depicts a flowchart of a method performed by a cloud services platform in accordance with an embodiment. -
FIG. 8 is a block diagram of an example processor-based computer system that may be used to implement various embodiments. - The features and advantages of the embodiments described herein will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
- The following detailed description discloses numerous example embodiments. The scope of the present patent application is not limited to the disclosed embodiments, but also encompasses combinations of the disclosed embodiments, as well as modifications to the disclosed embodiments.
- References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” or the like, indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of persons skilled in the relevant art(s) to implement such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
- In the discussion, unless otherwise stated, adjectives such as “substantially” and “about” modifying a condition or relationship characteristic of a feature or features of an embodiment of the disclosure, are understood to mean that the condition or characteristic is defined to within tolerances that are acceptable for operation of the embodiment for an application for which it is intended.
- Numerous exemplary embodiments are described as follows. It is noted that any section/subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and any type of embodiment may be included under any section/subsection. Furthermore, embodiments disclosed in any section/subsection may be combined with any other embodiments described in the same section/subsection and/or a different section/subsection in any manner.
-
FIG. 1 is a block diagram of an examplecloud services platform 100 upon which embodiments described herein may be implemented. In accordance with at least one embodiment,cloud services platform 100 comprises part of the Microsoft® Azure® cloud computing platform, owned by Microsoft Corporation of Redmond, Wash., although this is only an example and not intended to be limiting. As shown inFIG. 1 ,cloud services platform 100 includes acloud resource manager 102, a plurality of resource providers including a resource provider A 104, a resource provider B 106, and a resource provider C 108, and acloud service deployment 110. Each of these components will now be described. - Cloud
resource manager 102 comprises a collection (or “framework”) of software-based tools and/or services that can be invoked programmatically or by a user to deploy, update, or delete resources that are themselves utilized to support a cloud service deployment. As used herein the term “cloud service deployment” generally refers to any application or service that is deployed on or otherwise implemented by a cloud infrastructure and includes but is not limited to both Platform as a Service (PaaS) applications and Software as a Service (SaaS) applications. InFIG. 1 ,cloud resource manager 102 has deployed exemplarycloud service deployment 110. In one embodiment,cloud resource manager 102 comprises the Microsoft® Azure® Resource Manager, although this is only an example and is not intended to be limiting. As used herein, the term “cloud service vendor” or “vendor” is used to broadly refer to any entity that is capable of providing a cloud service (e.g., a PaaS or SaaS application), and may include persons and/or organizations. As used herein, the term “cloud service customer” or “customer” is used to broadly refer to any consumer of a cloud service, and may include persons and/or organizations. A vendor and/or a customer may be the same entity that providescloud services platform 100, may be employed by or affiliated with such entity, or may be a different entity entirely (e.g., a third party) with respect thereto. - As further shown in
FIG. 1 ,cloud service deployment 110 includes acloud service 112 that is configured to utilize a plurality of resources including a resource A 114, aresource B 116, and a resource C 118. As used herein, the term “resource” broadly refers to any deployable and/or manageable item that is made available via a cloud services platform such ascloud services platform 100. A resource may comprise, for example and without limitation, a virtual machine, a storage account, a Web application, a database, or a virtual network. Persons skilled in the relevant art(s) will appreciate that a wide variety of other resource types may be made available bycloud services platform 100. Such resources can be used to implement cloud services such ascloud service 112. - In
cloud services platform 100, the resources that are used to support a given cloud service deployment are programmatically allocated or provided by a corresponding resource provider. The resource provider may also facilitate monitoring and management of a resource after it is allocated. In the example shown inFIG. 1 ,cloud resource manager 102 is operable to invoke resource provider A 104 to provide and subsequently manageresource A 114, to invoke resource provider B 106 to provide and subsequently manage resource B 116, and to invoke resource provider C 108 to provide and subsequently manage resource C 118. To facilitate interaction betweencloud resource manager 102 and the resource providers, each resource provider is registered withcloud resource manager 102 and establishes a resource provider contract (RPC) therewith (e.g., a Hypertext Transfer Protocol Secure (HTTPS) Representational State Transfer (REST) API contract, although this is only an example). Non-limiting examples of resource providers within the Microsoft® Azure® cloud services platform include Microsoft.Compute, which can provide a virtual machine resource, Microsoft.Storage, which can provide a storage account resource, and Microsoft.Web, which can provide resources related to Web applications. - Cloud
resource manager 102 comprises several features that further facilitate the deployment, management and monitoring of resources for cloud service deployments. For example, as shown inFIG. 1 ,cloud resource manager 102 exposes a set ofAPIs 122.APIs 122 may be utilized to request and manage resources from a variety of different resource providers (e.g.,resource provider A 104,resource provider B 106, and resource provider C 108). In one implementation,such APIs 122 may include REST APIs, although this is only a non-limiting example. -
Cloud resource manager 102 also includesmanagement tools 124. -
Management tools 124 may include a variety of user interfaces (UIs) that an administrator or other user may interact with to deploy, manage and monitor resources viacloud resource manager 102. For example, each of these UIs may be configured to interact withAPIs 122 to invoke various features thereof. For example, such UIs may include but are not limited to a Web-based portal (e.g., Microsoft® Azure® Portal), a command line interface (CLI), an interactive command environment with scripting features (e.g., Microsoft® PowerShell®), and a development tool (e.g., Microsoft® Visual Studio®). As will be discussed below with respect toFIG. 2 ,cloud resource manager 124 also supports the deployment of one or more cloud services and the resources that support them via a template. -
Cloud resource manager 102 also includesresource group functionality 126.Resource group functionality 126 is configured to enable resources for a cloud service to be grouped together for the purposes of deployment, management and monitoring. A resource group can be defined to include all the resources allocated to a given cloud service deployment or only a subset of such resources that a user wishes to manage as a group. -
Cloud resource manager 102 still further includes role-based access control (RBAC)functionality 128.RBAC functionality 128 may be used to ensure that only persons assigned to certain roles within an organization are able to manage resources or resource groups associated with a given cloud service deployment. Thus, for example, only certain roles may be enabled to interact withcloud resource manager 102 for the purposes of adding, deleting, modifying or configuring certain resources or resource groups associated with a given cloud service deployment. - With respect to the foregoing description of
cloud services platform 100, it is to be understood that each ofcloud resource manager 102,resource provider A 104,resource provider B 106, andresource provider C 108 may represent software executing on a computer or on one or more interconnected computers. For example, and without limitation, each of these components may be running as software on a collection of networked physical or virtual machines within one or more data centers that comprisecloud services platform 100. Furthermore, with respect tocloud service deployment 110,cloud service 112 may comprise software andresource A 114,resource B 116 andresource C 118 may comprise computing resources used to support the execution of such software (e.g., a virtual machine, a storage account, a Web application, a database, or a virtual network). -
FIG. 2 is a block diagram that illustrates the use of templates to deploy a cloud service withincloud services platform 100. A template comprises a file (or other suitable container) that includes information that describes how a cloud service should be deployed withincloud services platform 100. For example, the template may specify resources ofcloud services platform 100 that must be allocated in support of a given cloud service and how such resources should be configured. The template may further specify how the cloud service should be deployed on top of (i.e., in a manner that utilizes) such resources and how the cloud service should be configured. The template may be text-based, and may further be composed using a declarative syntax rather than imperative commands. In one implementation, the template is composed using a text-based data exchange format such as JavaScript Object Notation (JSON), although this is only an example. - As shown in
FIG. 2 , a cloud service vendor can utilize its ownvendor computing system 204 to publish a template 212 1 to anonline marketplace 202, wherein such template 212 1 provides information necessary for a customer to deploy the vendor's cloud service to the customer's own account (i.e., to the customer's own set of resources) withincloud services platform 100. Template 212 1 may be made available along with a variety of other templates 212 2-212 n for consumption by one or more customers of cloud services. Each template made available inonline marketplace 202 may be published by a variety of different cloud service vendors, by a proprietor ofcloud services platform 100, or by other entities.Online marketplace 202 may offer hundreds or even thousands of templates. In one implementation,online marketplace 202 comprises the Microsoft® Azure® Marketplace, a Web site published by Microsoft Corporation of Redmond, Wash., although this is only an example. - Template 212 1 includes information necessary to deploy a vendor's cloud service offering within the customer's account. For example, if the vendor's cloud service is a PaaS or SaaS application, template 212 1 may declare that a certain number of virtual machines, storage accounts, databases, network connections, and/or the like, each having a specified configuration, must first be allocated within the customer's account by
customer services platform 100 before deploying the PaaS/SaaS application. Template 212 1 may further declare that after such resources have been allocated, that certain specified code comprising the PaaS/SaaS application should be downloaded and installed on one or more of the resources (e.g., one or more virtual machines). Thus, templates may provide for a staged deployment of the cloud service, with certain deployment steps being dependent on the successful execution of certain previous deployment steps. - A template, such as template 212 1 may also declare that certain information, such as resource deployment settings, cloud service deployment settings, or the like, should be obtained from the customer during the deployment process. Accordingly, a deployment service that is utilized to manage the deployment process may present a UI for obtaining such information from the customer as part of the deployment process. Content of the UI and/or the information to be obtained via the UI may be specified by the vendor via a file (or other suitable container) that may be published along with a template and packaged therewith.
- As shown in the example of
FIG. 2 , a customer using acustomer computing system 206 may browseonline marketplace 202 via a graphical UI (GUI) thereof and select template 212 1 for deployment to the customer's account withincloud services platform 100, denotedcustomer account 222. The customer may then initiate the deployment of template 212 1 via interaction with the aforementioned GUI. - In response to this initiation step, a marketplace service (which may comprise, for example, part of online marketplace 202) will deploy template 212 1, thereby causing an instance of the vendor's cloud service and the resources utilized thereby to be deployed within
customer account 222. InFIG. 2 , this deployment withincustomer account 222 is denotedcloud service deployment 224. As noted above, the deployment process may be staged in that certain resources may be allocated before other resources, and some or all resources may be allocated before the cloud service itself is installed. Also, as noted above, this deployment process may involve presenting a UI to the customer (e.g., via customer computing system 206) via which the customer can specify certain deployment settings for the resources to be allocated and for the cloud service itself. - Thus, as can be seen from the foregoing description, cloud
services deployment system 200 enables vendors of SaaS and PaaS applications to publish templates in an online marketplace (e.g., the Microsoft® Azure® Marketplace), and for customers to deploy such applications into their accounts. This can facilitate the creation of an ecosystem of self-service multi-resource applications. Through the above-described publication of templates, vendors can share best-practice configurations of complex PaaS and SaaS offerings, and customers can provision them in minutes. While the foregoing enables customers to use applications that previously would have required application-specific expertise and time-consuming set up, cloudservices deployment system 200 still does not address certain issues and shortcomings associated with the deployment of a vendor's cloud service by a customer. - For example, in the scenario depicted in
FIG. 2 , after initial provisioning, the customer is typically solely responsible for the ongoing maintenance and update of the application that resides in their accounts. The customer must learn of vendor-created updates out-of-band and manually apply them. If the application fails, the customer must diagnose and fix the problem, or contact the vendor out-of-band and grant the vendor ad-hoc access to their account for troubleshooting. - From the vendor perspective, there is no way to charge customers for the use of an application beyond virtual-machine-image billing, an industry practice in which the cost of the cloud service is tied to the number of virtual machines deployed to implement it. Such practice removes an opportunity for customer-vendor relationship building, and leaves only an antiquated licensing and billing mechanism that is similar to existing on-premises mechanisms, and reduces customer agility. Some PaaS applications may not even utilize virtual machines and typical SaaS application billing models are based on support levels, scale, and abstract usage metrics such as provisioned users and data transactions.
- Furthermore, in the scenario depicted in
FIG. 2 , vendors typically have no way of preventing customers from tampering with application resources once those resources are deployed within the customer account, nor of preventing access to the intellectual property (e.g., the deployment resource requirements and configuration) that makes up the application. - Vendors that want a more controlled and managed experience than that offered by cloud
service deployment system 200 must sell their cloud service offering directly and either build a fully multi-tenant service, or deploy single-tenant applications into their own account withincloud services platform 100. The complexity of managing tenancy tracking, resource governance and isolation puts robust multitenant applications out of reach of many developers. The vendor is also responsible for tracking and charging customers directly for the underlying resources ofcloud services platform 100 that they consume, which also requires them to implement customer billing systems. Vendors are also left to create an application provisioning experience, rather than being able to take advantage of the above-described template-based deployment technique,APIs 122, and management tools 124 (e.g., command-line and Web portal functionality) provided bycloud services platform 100. This model also prevents customers from easily leveragingRBAC functionality 128 to control access to application management endpoints. Finally, customers cannot directly manage the networking configuration of the application's endpoints, for example by connecting the application's virtual network to their own on-premises network. - The following Section will describe a collection of features, provided by a cloud resource manager (e.g., a modified version of
cloud resource manager 102 ofFIG. 1 ) that together create an appliance-like experience in a cloud services platform that is aimed at making it easy for vendors to sell fully-managed cloud services (e.g., SaaS and PaaS applications) and for customers to self-service deploy and use them. - Furthermore, the system described in the following Section advantageously enables vendors to bill customers using a billing system provided by the proprietor of the cloud services platform, that uses templates to manage the lifecycle of deployed applications, and that enables customers to automatically acquire updates and pay for support. Such a system may be used to create a cloud-application “app store” ecosystem in the cloud services platform for PaaS and SaaS vendors, corporate central platform teams, as well as system integrators that wish to package and resell their solutions. The described system can holistically support arbitrarily complex applications. With the cloud services platform providing common application lifecycle management and billing services, even small vendors can sell fully-managed SaaS and PaaS applications, and customers can find in such a cloud services platform a marketplace of easy-to-consume applications provided by such vendors that don't come associated with a large infrastructure management tax.
- A. Appliance Features
- Appliance embodiments described herein are designed to meet the requirements of a range of appliance-like experiences. At one end of the spectrum of experiences is an online marketplace of templates (such as that described in the previous Section) where the customer can self-service deploy an application, but is subsequently responsible for maintenance, and any billing for the use of the appliance must be arranged with a vendor directly or billed in association with the deployed resources. On the other end is an experience desired by SaaS vendors. A small company selling dentist office management software might be an example of a SaaS vendor. They may desire to sell their application as a black-box, have the application's management seamlessly integrate into the API and management systems of the cloud services platform to which the application is deployed, use a billing pipeline associated with the cloud services platform, easily push updates, and allow customers to self-service enable enhanced features and support levels, all while tracking customer usage and sentiment using their application and their own APIs.
- In the middle are many PaaS vendors, who want to make available a PaaS service as a self-contained application that customers can deploy themselves. While such vendors may want the application's management interface to integrate deeply with the cloud service platform to which the application is deployed for a unified experience, they wish to allow customer access to the appliance's underlying resources, while still being able to update and optionally charge for the use of the service. This type of appliance allows customers the opportunity to customize the appliance's internal operation, for example by installing their preferred antivirus into the appliance's virtual machines, or by configuring network security groups to the networking of the appliance in accordance with the customer's security policies. This capability is highly desirable for services that will be part of a larger customer application to which such policies and management standards apply.
- The appliance model described herein enables many features which are designed to make it easier for vendors to publish applications and for customers to consume them. As will be seen, the features can satisfy the needs of “black box” SaaS appliances and may be a superset of those needed for the more “open-box” PaaS experiences. These features may include one or more of but are not limited to: (i) vendors can self-service publish appliances to an online marketplace; (ii) customers can self-service deploy appliances from the online marketplace; (iii) customers can self-service enable enhanced appliance functionality and support levels; (iv) customer access to an appliance may be via an interface that is integrated with RBAC functionality of a cloud resource manager; (v) vendors can specify feature-specific billing and support billing charges; (vi) vendors have full access to an appliance's resources for diagnostics and troubleshooting that's integrated with the RBAC functionality of the cloud resource manager; (vii) vendors can self-service update deployed appliances; (viii) vendors can query information about the provisioned instances of their appliances, including the customers that have deployed them and the version; (ix) vendors can query usage information, customer information, and detect trends to improve their application; and (x) vendors can solicit customer feedback and ratings on their application to improve and share the score.
- The following sub-sections will describe enhancements to the functionality of a cloud resource manager (e.g.,
cloud resource manager 102 ofFIG. 1 ), an online marketplace (e.g.,online marketplace 202 ofFIG. 2 ), and a billing system associated with a cloud services platform (e.g., cloud services platform 100) ofFIG. 1 to provide the foregoing features and to accommodate the full spectrum of appliance scenarios. - B. Appliance Model Overview
-
FIG. 3 is a block diagram of an examplecloud services platform 300 that is configured to support the self-service deployment of appliances in accordance with an embodiment. As shown inFIG. 3 ,cloud services platform 300 includes acloud resource manager 302, a plurality of resource providers including aresource provider A 304, aresource provider B 306, aresource provider C 308, and anappliance resource provider 332, and anappliance deployment 310. Each of these components will now be described. -
Cloud resource manager 302 is substantially similar tocloud resource manager 102 as described above with respect toFIG. 1 , except thatappliance support functionality 330 has been added thereto. Consequently,APIs 322,management tools 324,resource group functionality 326, andRBAC functionality 328 may each be configured to operate in a like manner respectively toAPIs 122,management tools 124,resource group functionality 126, andRBAC functionality 128, as previously described with respect toFIG. 1 , with some modification to these components to support the deployment and management of appliances. - The features of
cloud resource manager 302 can be invoked programmatically or by a user to deploy, update, or delete resources that are themselves utilized to support a cloud service deployment, which in this case can include an appliance. InFIG. 3 ,cloud resource manager 302 has deployedexemplary appliance deployment 310. In one embodiment,cloud resource manager 302 comprises the Microsoft® Azure® Resource Manager, although this is only an example and is not intended to be limiting. - As further shown in
FIG. 3 ,appliance deployment 310 includes acloud service 312 that is implemented as an appliance resource group (via resource group functionality 326), wherein the appliance resource group comprises a plurality of resources that supportcloud service 312. The resources include aresource A 314, aresource B 316, aresource C 318, and anappliance management resource 320. Each ofresource A 314,resource B 316, andresource C 318 may comprise resources that are globally available to any customer ofcloud services platform 100, wherein such resources may include, for example and without limitation, virtual machines, storage accounts, Web applications, databases, or virtual networks. As was described above with respect toFIG. 1 , each of these resources may be made available by a corresponding resource provider, which in this case includesresource provider A 304,resource provider B 306, andresource provider C 308.Resource provider A 304,resource provider B 306 andresource provider C 308 may be termed “static” resource providers in the sense that they are continuously registered withcloud resource manager 302 to provide resource allocation and management services across time and across different customer deployments. - In contrast,
appliance management resource 320 comprises a resource that is available only to the customer that deployed the appliance associated therewith, wherein such resource is provided by correspondingappliance resource provider 332. In an embodiment,appliance resource provider 332 is registered withcloud resource manager 302 at the time of appliance deployment and if the deployment is deleted, thenappliance resource provider 332 is deleted with it. Thus,appliance resource provider 332 may be termed a “dynamic” resource provider. - The resources provided by
appliance resource provider 332 may include vendor-defined management (“control plane”) functions that may not be offered bycloud services platform 300 for other types of resources. For example,appliance management resource 320 may comprise a set of appliance-specific APIs that can be used to monitor and/or manage various aspects ofappliance deployment 310. This enables the vendor to extend the resource management feature set forappliance deployment 310 to include management features other than those normally provided bycloud resource manager 302. Such appliance-specific APIs may be registered into a same namespace as the other resource management APIs made available bycloud resource manager 302. In this way, the appliance-specific APIs can be accessed using thesame management tools 324 already made available bycloud resource manager 302 for the other resource management APIs. This can help provide customers with a seamless and consistent user experience when managingappliance deployment 310 along with their other cloud service deployments withincloud services platform 300. - In an embodiment, cloud resource manager 302 (via appliance support functionality 330) may be configured to treat
appliance deployment 310 differently thancloud service deployment 110 as described above with respect toFIG. 1 . For example, even thoughappliance deployment 310 is deployed to a customer's account withincloud services platform 300,cloud resource manager 302 may prohibit the customer from viewing or managing various constituent resources that make up the appliance resource group that definescloud service 312. For example, by exploitingRBAC functionality 328,cloud resource manager 302 may make onlyappliance management resource 320 visible to the customer. By limiting the customer's ability to observe and manage an appliance's underlying resources in the foregoing manner, embodiments can prevent customers from tampering with appliance resources once those resources are deployed within the customer account, and can also prevent customers from accessing the intellectual property (e.g., the deployment resource requirements and configuration) that makes up the appliance. - In a further embodiment, cloud resource manager 302 (e.g., via
RBAC functionality 328 or some other manner) may grant access toappliance deployment 310 to the vendor that published the appliance. Such access (referred to elsewhere herein as a “projection”) may be granted via a vendor account incloud services platform 300. Such access may advantageously enable the vendor to manageappliance deployment 310 on behalf of the customer. Via this projection feature, vendors may be provided with full access to an appliance's resources for diagnostics and troubleshooting and may self-service update the deployed appliance. Via projections into multiple customer accounts, vendors can query information about provisioned instances of their appliances, including the customers that have deployed them and the version, and can query usage information, customer information, and detect trends to improve their application. - Also, as will be discussed below in more detail with respect to
FIG. 4 andFIG. 5 ,cloud services platform 300 supports a template-based deployment feature that enables an appliance to be self-service published to an online marketplace by a vendor and then self-service deployed therefrom by a customer. As discussed above with respect toFIG. 1 , templates are a convenient way to define a cloud service (e.g., an application) that can be customized for individual deployments and that can be used to apply updates. Furthermore, since templates can define resource groups and since resource group access can be controlled viaRBAC functionality 328, templates can be used to integrate the cloud services they create withRBAC functionality 328 and policy management ofcloud resource manager 302. Thus, in accordance with an embodiment, templates, resource groups, resource providers and an online marketplace may provide a foundation of a self-service appliance model. - With respect to the foregoing description of
cloud services platform 300, it is to be understood that each ofcloud resource manager 302,resource provider A 304,resource provider B 306,resource provider C 308, andappliance resource provider 332 may represent software executing on a computer or on one or more interconnected computers. For example, and without limitation, each of these components may be running as software on a collection of networked physical or virtual machines within one or more data centers that comprisecloud services platform 300. Furthermore, with respect toappliance deployment 310,cloud service 312 may comprise software andresource A 314,resource B 316,resource C 318 andappliance management resource 320 may comprise computing resources used to support and/or manage the execution of such software. -
FIG. 4 is a block diagram of adeployment system 400 that illustrates a deployment of a PaaS appliance tocloud services platform 300 in accordance with an embodiment. In this example, the PaaS appliance implements a database cluster. - As shown in
FIG. 4 , an appliance vendor can utilize its ownvendor computing system 404 to publish an appliance 412 1 to an online marketplace 402 (e.g., via a first UI thereof), wherein such appliance 412 1 includes a template that provides information necessary for a customer to deploy the vendor's appliance to the customer's own account (i.e., to the customer's own set of resources) withincloud services platform 300. Appliance 412 1 may be made available along with a variety of other appliances 412 2-412 n for consumption by one or more customers. Each appliance made available inonline marketplace 402 may published by a variety of different appliance vendors, by a proprietor ofcloud services platform 300, or by other entities.Online marketplace 402 may offer hundreds or even thousands of appliances. In one implementation,online marketplace 402 comprises the Microsoft® Azure® Marketplace, a Web site published by Microsoft Corporation of Redmond, Wash., although this is only an example. - A template associated with appliance 212 1 includes information necessary to deploy a vendor's appliance within the customer's account. For example, if the vendor's appliance is a PaaS or SaaS application, the template may declare that a certain number of virtual machines, storage accounts, databases, network connections, and/or the like, each having a specified configuration, must first be allocated within the customer's account by
customer services platform 300 before deploying the PaaS/SaaS application. The template associated with appliance 412 1 may further declare that after such resources have been allocated, that certain specified code comprising the PaaS/SaaS application should be downloaded and installed on one or more of the resources (e.g., one or more virtual machines). - The template associated with appliance 412 1 may also declare that certain information, such as resource deployment settings, appliance deployment settings, or the like, should be obtained from the customer during the deployment process. Accordingly, a service that is utilized to manage the deployment process (e.g., a marketplace service 450) may present a UI for obtaining such information from the customer as part of the deployment process.
- Other information may be packaged or otherwise included with the template to facilitate the deployment of the appliance. For example, such other information may include UI definition information that can be used to obtain deployment parameters from the customer as part of the deployment process. As will be discussed herein, such other information may also include vendor identification information, billing metadata, or the like.
- As shown in the example of
FIG. 4 , a customer using acustomer computing system 406 may browse online marketplace 402 (via a second UI thereof) and select appliance 412 1 for deployment to the customer's account withincloud services platform 300, denotedcustomer account 422. The customer may then initiate the deployment of appliance 412 1 via interaction with the aforementioned GUI. - In response to this initiation step, marketplace service 450 (which comprises part of online marketplace 402) will deploy appliance 212 1 within
customer account 422 in accordance with the template associated with appliance 212 1. InFIG. 4 , this deployment withincustomer account 422 is denotedappliance resource group 424. As noted above, the deployment process may be staged in that certain resources may be allocated before other resources, and some or all resources may be allocated before the cloud service provided by the appliance itself is installed. Also, as noted above, this deployment process may involve presenting a UI to the customer (e.g., via customer computing system 406) via which the customer can specify certain deployment settings for the resources to be allocated and for the cloud service itself. - In the example shown in
FIG. 4 , the template within appliance 412 1 deploys a database cluster withincustomer account 422, where the database cluster functionality is constructed from a virtual machine scale set (VMSS) 426 and astorage account 428. Once deployed, database clients can connect to the database cluster via adatabase cluster endpoint 430, which may comprise an Internet Protocol (IP) address (although this example is not intended to be limiting). In the example shown inFIG. 4 , template 412 1 also deploys three appliance-related resources: anappliance resource provider 432 that registers a resource type and its schema withcloud resource manager 302, aWeb application 434 that implements a resource provider contract (RPC) associated withappliance resource provider 432 via an applianceresource provider endpoint 436, and amarketplace resource 438 that implements an API for the customer to query appliance billing information, as well as enabling billed appliance functionality and features. - As previously discussed, templates allow for the declarative modelling of complex, multi-resource applications. Each resource declared in a template is of a specific resource type, and resource types are implemented by resource providers. To be a resource provider, a vendor must implement an RPC, which is necessary for
cloud resource manager 302 to include the resource types it implements in a control plane and template system ofcloud resource manager 302. - Because of the support for command-line tooling, REST APIs, templates, RBAC, tagging, billing, and other functionality that comes from the representation as a resource type in
cloud resource manager 302, implementing appliance control planes as resources gives appliances a deep integration withcloud computing platform 300. Today, resource providers are global in nature, however, requiring PaaS and SaaS vendors to create multitenant services to implement them. The appliance model described herein removes the need for a vendor to create a central management service, and enables customer self-service provisioning, by using the concept of an appliance resource provider. Appliance resource providers enable seamless integration of an appliance into the ecosystem of APIs and tooling provided bycloud services platform 300. - One difference between resource providers and appliance resource providers is that resource providers have a global scope and appliance resource providers are more narrowly scoped. For example, in an embodiment, only one resource provider can register for a global resource type (i.e., a resource type available to all customers of cloud services platform 300). By contrast, the scope of an appliance resource provider determines the namespace in which it operates, as well as its visibility. Possible scopes to which an appliance resource provider may be limited include account, tenant, and resource group.
- For instance, an appliance resource provider that is scoped to an account defines the resource types it registers for an entire account. If an appliance resource provider registers the resource type CompanyX.DatabaseCluster for an account, that definition overrides any global definition so that resources of that type specified by a call to that account by
cloud resource manager 302—whether via REST API or a template—will use the implementation of the type provided by the appliance resource provider. - In an embodiment, an appliance resource provider is the same as a global resource provider in all other ways. The implementation of an appliance resource provider is hidden behind its endpoint and its implementation of the RPC with
cloud resource manager 302. In fact, nothing prevents an appliance resource provider from being implemented outside ofcloud services platform 300—even on a cloud services platform provided by a different enterprise. WhileWeb application 434 implements the appliance resource provider in the example ofFIG. 4 , as pointed out, appliance resource providers can be implemented by any compute host accessible tocloud resource manager 302 via, for example, an IP address. - Once
appliance resource group 424 is deployed, the customer can create anapplication resource group 442 incustomer account 422 that makes use ofappliance resource provider 432. The customer may do so by including anappliance management resource 444 that specifies that it is implemented byappliance resource provider 432 by referencing the name ofappliance resource provider 432 inappliance resource group 424. In this way,cloud resource manager 302 determines how to findendpoint 436 ofappliance resource provider 432. The output parameters ofappliance management resource 444 can include any information that the appliance needs to make available to applications, includingdatabase cluster endpoint 430. In the example ofFIG. 4 ,application resource group 442 includes aWeb application 446 that has an input parameter that receivesdatabase cluster endpoint 430 fromappliance management resource 444, as well as an associatedcache 448. - To enable a vendor to manage an appliance on behalf of its customers,
cloud resource manager 302 projects appliance resource groups into the account of the appliance vendor. Thus as shown inFIG. 4 ,appliance resource group 424 is projected into avendor account 450 withincloud services platform 300. The projection results in an appliance-type resource group appearing in the vendor's resource group namespace with RBAC rules that gives the vendor full access to appliance resources. The vendor can use this access to monitor and troubleshoot the operation of the appliance software on behalf of the customer. In an embodiment, to prevent namespace collisions in the vendor's account, projected resource groups have account-unique identifiers, andcloud resource manager 302 implements an API that lets a vendor query the name the customer assigned to the resource group. In a further embodiment, the vendor has no access to any other aspect of the customer's resources, other resource groups, RBAC policy, management policy, or account; they only have access to the appliance's resources. - In an embodiment, a vendor can “seal” an entire appliance, or specific resources in the appliance. A sealed appliance resource group only exposes
marketplace resource 438 and appliance resource provider resources, whereas all others are hidden from the customer's view. If a vendor wants to hide only some of the appliance's resources, they can seal just those resources. Sealed resources are visible in the vendor's projection of appliance resource groups. Note that sealing, which makes an appliance a black box from the perspective of a customer, is no different than the experience customers have when they access resources via API endpoints published by a vendor that implements a multitenant service. - PaaS appliances (such as the appliance deployed in
FIG. 4 ) are characterized by the fact that they implement service endpoints for use by applications. Customers include the appliance management resource type so that the application can obtain information about the appliance via the appliance resource provider. For example, the obtained information may bedatabase cluster endpoint 430 thatappliance resource provider 432 returns as an output parameter ofappliance management resource 444 ofapplication resource group 442. SaaS appliances also implement appliance resource providers so that the customers can interact with the SaaS appliance control plane, but they may also include a resource of the type implemented by the appliance resource provider in the appliance resource group itself. - This is illustrated by
FIG. 5 , which is a block diagram of adeployment system 500 that shows the deployment of a SaaS appliance withincloud services platform 300 ofFIG. 3 . In this example, the SaaS appliance implements dentist office software. - As shown in
FIG. 5 , an appliance vendor utilizes its ownvendor computing system 404 to publish anappliance 512 toonline marketplace 402, and a customer usingcustomer computing system 406 selects and initiates deployment ofappliance 512 tocustomer account 422 withincloud services platform 300. Although not shown in FIG. 5 for the sake of simplicity, online marketplace may include any number of appliances for self-service deployment. - In the example shown in
FIG. 5 , a template associated withappliance 512 deploys dentist office software withincustomer account 422, where the dentist office software functionality is constructed from aVMSS 526 and astorage account 528. In the example shown inFIG. 5 ,template 512 also deploys three appliance-related resources: anappliance resource provider 532 that registers a resource type and its schema withcloud resource manager 302, aWeb application 534 that implements an RPC associated withappliance resource provider 532 via an applianceresource provider endpoint 536, and amarketplace resource 538 that implements an API for the customer to query appliance billing information, as well as enabling billed appliance functionality and features. To enable the vendor to manage the appliance on behalf of the customer,cloud resource manager 302 projectsappliance resource group 424 intovendor account 450 withincloud services platform 300. - Like the PaaS appliance discussed above with respect to
FIG. 4 , the SaaS appliance ofFIG. 5 includes anappliance resource provider 532 that enables customers to interact with its control plane viacloud resource manager 302. However, in the example ofFIG. 5 ,appliance management resource 544 of the type implemented byappliance resource provider 532 is included inapplication resource group 524 itself.Appliance resource group 524 may be a sealed appliance, such that onlyappliance management resource 544 andmarketplace resource 538 are visible to the customer. - Another aspect of the appliance model shown in
FIG. 5 is the extension of the RPC withcloud resource manager 302 to include optional integration with aWeb portal 540 ofcloud services platform 300. For example, if the appliance includes suitable metadata along with the template,Web portal 540 can provide a basic experience for customers to manage an appliance. However, the RPC can be extended to provide a richer portal experience so that vendors can customize the portal view. Vendors that want full control over the experience, or that want to display an existing portal, can use the RPC to opt out of basic integration so thatWeb portal 540 embeds the appliance portal within an iframe. - C. Example Appliance Model Details
- This Section will provide exemplary and non-limiting implementation details concerning various aspects of appliances and the appliance lifecycle, including mechanisms that may be introduced so that an appliance can expose a management interface that integrates with
cloud resource manager 302, how a vendor has access to manage appliances on behalf of its customers, how a vendor specifies appliance billing charges, and how a vendor can keep appliance resources hidden from customers. - 1. Appliance Registration
- A vendor registers an appliance with
online marketplace 402 by submitting an appliance resource group template along with the appliance name tomarketplace service 450. The vendor also supplies metadata that may include an appliance icon and description that can be displayed to customers via a GUI ofonline marketplace 402, as well information that identifies the vendor and billing instructions. In one exemplary and non-limiting embodiment, the vendor may be identified as a Microsoft® Azure® Active Directory® (AAD) principal. - An appliance template may be used to deploy a marketplace resource (e.g.,
marketplace resource 438 or marketplace resource 538) within the appliance resource group, whose presence may serve two purposes: one is so thatmarketplace service 450 can be automatically notified when the appliance is deleted, and the second is so thatmarketplace service 450 can present information directly to the user via the resource about the appliance, including billing information, vendor contact information, and vendor upsell offers such as enhanced support and appliance functionality. Similarly,marketplace service 450 can pass a vendor information about a customer using the same channel. - 2. Appliance Provisioning
- When a customer provisions an appliance,
marketplace service 450 deploys the appliance's template to the customer account and includes the appliance billing metadata, which will be described later. If the appliance deployment is programmatic, the customer specifies the appliance template's parameter values, and if interactive, a Web portal or other UI prompts a user to specify parameter values. This flow leverages all the functionality developed for template deployment with only minor modifications to accommodate appliance templates, which can include the user enabling features advertised via the billing metadata. - Because appliances deploy directly into customer accounts, customers have a range of customization opportunities, starting with the parameters exposed by the template. That customization allows them to place appliance networking endpoints into customer virtual networks. Customers can also install antivirus into appliance virtual machines if the vendor allows, configure Web application firewalls, apply RBAC and management policy to control access to the appliance, and more.
- 3. Appliance Resource Access
- In one embodiment, the customer only has access to the resources in the appliance that the vendor allows, plus the ability to delete the appliance. All other access may be blocked even from account and tenant administrators. To facilitate this,
RBAC functionality 328 may be configured to support deny rules, orcloud resource manager 302 may be configured to implement special case logic for appliance resource groups. - In a further embodiment, the vendor is provided with full access to the resources within the appliance resource group, and the vendor can allow the customer to manage only specific resources via
RBAC functionality 328. The customer may still retain the ability to delete the appliance resource group, but may be prohibited from deleting even the individual resources within the appliance resource group that a vendor allows them to access. - In accordance with embodiments,
cloud resource manager 302 supports a property thatmarketplace service 450 supplies at the time of resource group creation to specify that the resource group is an appliance. The property includes information about the appliance vendor's account. The presence of the appliance property may causecloud resource manager 302 to project the appliance resource group into the vendor's account, and prevent the customer from deleting individual resources of the appliance resource group (though not the resource group itself). - As described earlier, vendors can seal an appliance or individual appliance resources. In an embodiment, there are at least two types of seal: a hidden-seal and a read-only seal. The hidden seal causes
cloud resource manager 302 to omit all appliance resources except for the marketplace resource from enumeration and access, whereas resources with the read-only seal are visible but cannot be modified by the customer. In an embodiment, all appliance resources are visible in the vendor's projection, and the vendor has full access to the resources. However, the vendor can control access usingRBAC functionality 328 in the context of their own account. - In accordance with foregoing embodiments, vendors may know of all deployed instances of their appliances without having to write any special code to achieve this. Vendors may obtain appliance-specific billing information and feature enablement via an appliance's marketplace resource (e.g.,
marketplace resource 438 or marketplace resource 538) the same way that a customer does. - Embodiments described herein minimize special case behavior specific to appliances, allow customers fine-grained access to appliance visible resources, while enabling an appliance vendor to block access to appliance resources to prevent misconfiguration and to protect intellectual property.
- 4. Appliance Resource Provider
- The appliance model described herein can enable customers to manage appliances using a Web portal, CLI and APIs of
cloud resource manager 302, as well as to have the management plane integrate withRBAC functionality 328 thereof. To help enable this, appliances implement an appliance resource provider that defines a resource type that represents the appliance's control plane. The appliance resource provider is not a globally-registered resource provider, but rather one that can be scoped to a specific resource group (or account). - The appliance resource provider defines an appliance management resource type, complete with its own schema. In an embodiment, every appliance template includes an instance of its appliance management resource type, and appliance templates use parameters to configure the resource in the same way as for other resources. The only difference between an appliance resource provider and a global resource provider from the perspective of the template is that an appliance resource provider must specify the resource provider endpoint and schema in the template.
- When
cloud resource manager 302 deploys an appliance template it will see the presence of the appliance management resource (whichmarketplace service 450 will ensure is not sealed). If the appliance management resource is implemented from within the appliance resource group that is being created, the appliance management resource specifies the relevant dependencies, as well as a Universal Resource Identifier (URI) that will be available after the appliance resource provider initializes. For example, if the appliance resource provider is hosted in a Web application that is part of the appliance resource group, the appliance management resource will list the Web site as a dependency, and list its URI as the Web application's URI output parameter. Alternatively, if a vendor implements a multitenant resource provider as a central service, the URI will point at the global (or regional, if location is supported) endpoint. - An appliance resource provider can implement appliance management APIs including ones that modify the behavior of the appliance, for example by scaling it or changing its configuration, as well as ones to query the status of the appliance, obtain log files (for example via returned SAS keys of storage objects containing diagnostic output). Appliances desiring integration with a Web portal of
cloud resource manager 302 can also implement RPC extensions that the Web portal uses to inject appliance user experience (UX) into the Web portal. - To illustrate how appliance resource providers connect resources representing appliances to cloud
resource manager 302 and the relationship between an appliance resource provider of a database appliance and resource group, exampleapplication resource group 442 shown earlier inFIG. 4 is depicted inFIG. 6 . Management tools 324 (e.g., Web portal, CLI) or even other resources inapplication resource group 442, can obtain the database cluster endpoint URI by queryingcloud resource manager 302 to get the output parameter of the database cluster resource.Cloud resource manager 302 routes the request toappliance management resource 434 that is implemented inappliance resource group 424, specifically inWeb application 434. - In an embodiment, appliance resource provider core implementations that are configured to handle authentication with
cloud resource manager 302, API decoding, and other common resource provider aspects are made available to appliance vendors so that their work to implement an appliance resource provider can be reduced. - 5. Appliance Billing and Feature Enablement
- Resources that make up an appliance resource group can emit billing meters directly to the customer's account. These charges can show up on a customer bill broken down by charges aggregated for the appliance resource group as well as broken down by the cost of each resource. It may be desirable to obfuscate the internals of an appliance from even billing information. If so, one way that can be accomplished is for
cloud resource manager 302 to tag all resources in an appliance resource group with an appliance tag. Billing reports would omit the reporting of resources with the tag, and only show the overall cost of the resource group. - The appliance model can support several different charges for the use of the appliance: one-time provisioning charge; per-minute runtime charge; and appliance-specific charges, such as one applied per appliance user, per appliance operation (e.g. data transaction), and ones for specific feature enablement.
- To enable vendors to bill customers for the use of the appliance software via a billing pipeline of
cloud services platform 300,marketplace service 450 may pass billing metadata provided by the vendor at the time of appliance registration to its marketplace resource instance hosted in the appliance resource group. This resource emits the one-time provisioning charge, as well as per-minute costs using billing meters associated withcloud services platform 300 to the customer's account. - In an embodiment, the resource provider can emit vendor-supplied text for each additional charge that identifies its source and that the billing system can report in an itemized breakdown of the cost of the appliance. For example, in the first bill after an appliance is provisioned, a customer bill might look like this:
-
Database Appliance from CompanyX Inc. Total cost: $1,153 VM #1 in appliance $343 VM #2 in appliance $343 VM #3 in appliance $121 Storage for appliance $80 Network Egress for appliance $32 One-time appliance charge $150 Basic functionality @ $0.30/min $360 Feature foo @ $0.15/min $180 Premier support @ $0.10/min $120 - Enabling vendors to customize appliance billing, and customers to turn on premium features or enlist higher support levels in a self-service manner, are desirable capabilities of an appliance billing system. To accomplish this, billing metadata line items can include a flag that indicates whether the item is active. Because a Web portal associated with
cloud service platform 300 can display billing metadata line items for appliances inonline marketplace 402, as well as for deployed appliances, it serves as an advertisement of the enhanced capabilities of the appliance. The marketplace resource provider can implement an API that activates line items, triggering the emission of the associated charges. This API support can enable customers to use the Web portal and scripts to configure the appliance's for-cost features. - In some cases, vendors may wish to hide the charges for the appliance's resources. Any charges for sealed resources, which would be all of them for a sealed appliance, can be rolled up as a charge for the appliance itself. Further, a vendor can opt to charge a fixed cost for the appliance and have a raw resource cost come out of that charge (which requires the charge for the appliance to be higher than that accrued by its resources). This effectively hides the cost of the raw resources for when the vendor truly wants to make the appliance opaque. A sealed-appliance bill that hides the resource costs might look like this:
-
Database Appliance from CompanyX Inc. Total cost: $2,120 Appliance cost $2000 Premier support @ $0.10/min $120 - Appliances can be made aware of customer self-service feature enablement in a timely manner, and optionally, notify the vendor. In an embodiment, this is achieved by configuring appliance resource providers to implement APIs that
marketplace service 450 can use to notify it of billing line-item updates. The same design used by resource providers to authenticatecloud resource manager 302 can be used for appliance resource providers authenticating marketplace service 450 (which knows of changes via the marketplace resource in the appliance resource group). In accordance with such a design,cloud resource manager 302 can publish metadata about an endpoint that resource providers query to obtain client-side certificate public keys that they use to validate requests to cloudresource manager 302, andmarketplace service 450 publishes a similar API. Appliance resource providers can notify a vendor of changes, if desired, via a vendor-specific mechanism. - 6. Appliance Updates
- Another part of the appliance lifecycle is receiving updates provided by the vendor. In one embodiment, so that work by a vendor is minimized,
marketplace service 450 handles appliance updates. When a vendor has a new version of an appliance, they simply publish it viamarketplace service 450.Marketplace service 450 then enumerates the deployed instances of the appliance and submits the revised template to cloudresource manager 302.Marketplace service 450 update functionality may also provide support for gradual rollout protocols, as well as give the vendor explicit control so that they can update specific appliance instances. - Some vendors may also want to give customers some control over when they install updates. This may be important if there will be appliance downtime during the update. It may also be deemed a desirable option for appliances that serve APIs, since there may be risk of application compatibility regression, and customers may wish to validate their applications against test deployments of new versions before updating appliance production deployments. In an embodiment,
marketplace service 450 enables this level of control by allowing vendors to specify update deadlines when they submit an update. When there's a future deadline,marketplace service 450 will notify appliance customers of the pending update via the marketplace resource, which will surface update status (e.g., via a Web portal) and be accessible via APIs. A customer then can on-demand apply the update, but if they don't, the update applies automatically when the deadline arrives. - D. Example Appliance-Related Method
-
FIG. 7 depicts aflowchart 700 of a method that may be implemented by a cloud services platform, such ascloud services platform 300 described above with respect toFIG. 3 . It will be understood that the present application embodies a variety of other methods than that shown inflowchart 700, which is merely exemplary of some aspects the innovative systems, methods and computer program products described herein. The method offlowchart 300 will now be described with continued reference to embodiments described above with respect toFIGS. 3-5 . However, the method is by no means limited to those embodiments. - As shown in
FIG. 7 , the method offlowchart 700 begins atstep 702, in whichmarketplace service 450 receives a template associated with an appliance that has been published toonline marketplace 402 by a vendor and that has been selected therefrom by a customer, the template specifying resources to be allocated to deploy the appliance. In an embodiment, the appliance comprises one of a PaaS application or a SaaS application. - At
step 704,marketplace service 450 deploys the appliance tocustomer account 422 associated with the customer withincloud services platform 300 in accordance with the template, the deploying including deploying the resources specified by the template as part of an appliance resource group (e.g.,appliance resource group 424 or appliance resource group 524) within the customer account, the specified resources including an appliance management resource (e.g.,appliance management resource 444 or appliance management resource 544) that is configured to expose control features of the appliance to the customer. - At
step 706,cloud resource manager 302 provides access to the appliance resource group to the vendor via avendor account 450 associated with the vendor withincloud services platform 300. - In one embodiment of the method of
flowchart 700, the method further includescloud services platform 300 rendering at least one of the resources in the appliance resource group other than the appliance management resource inaccessible or read-only to the customer. - In another embodiment of the method of
flowchart 700,step 706 comprisescloud resource manager 302 rendering all the resources in the appliance resource group accessible to the vendor in the vendor account. - In yet another embodiment of the method of
flowchart 700, step 704 of deploying the appliance further comprises registering an appliance resource provider (e.g.,appliance resource provider 432 or appliance resource provider 532) withcloud resource manager 302 withincloud services platform 300, the appliance resource provider providing a set of APIs for controlling the appliance viacloud resource manager 302 and the appliance management resource (e.g.,appliance management resource 444 or appliance manager resource 544). In further accordance with this embodiment, the set of APIs for controlling the appliance may be registered into a same namespace as other APIs exposed by the cloud resource manager. - In a further embodiment of the method of
flowchart 700, the specified resources include a marketplace resource (e.g.,marketplace resource 438 or marketplace resource 538) that facilitates providing billing features to the customer relating to the appliance. -
FIG. 8 depicts an example processor-basedcomputer system 800 that may be used to implement various embodiments described herein, such as any of the embodiments described above with respect toFIGS. 1-7 . For example,system 800 may be used to implement or execute any of the elements ofcloud services platform 300 as described above with respect toFIGS. 3-5 , any of the elements ofdeployment system 400 as described above with respect toFIG. 4 , and any elements ofdeployment system 500 as described above with respect toFIG. 5 .System 800 may also be used to implement or execute the method offlowchart 700 as described above with respect toFIG. 7 . The description ofsystem 800 provided herein is provided for purposes of illustration, and is not intended to be limiting. Embodiments may be implemented in further types of computer systems, as would be known to persons skilled in the relevant art(s). - As shown in
FIG. 8 ,system 800 includes aprocessing circuit 802, asystem memory 804, and abus 806 that couples various system components includingsystem memory 804 toprocessing circuit 802.Processing circuit 802 may comprise one or more microprocessors or microprocessor cores.Bus 806 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.System memory 804 includes read only memory (ROM) 808 and random access memory (RAM) 810. A basic input/output system 812 (BIOS) is stored inROM 808. -
System 800 also has one or more of the following drives: ahard disk drive 814 for reading from and writing to a hard disk, amagnetic disk drive 816 for reading from or writing to a removablemagnetic disk 818, and anoptical disk drive 820 for reading from or writing to a removableoptical disk 822 such as a CD ROM, DVD ROM, BLU-RAY™ disk or other optical media.Hard disk drive 814,magnetic disk drive 816, andoptical disk drive 820 are connected tobus 806 by a harddisk drive interface 824, a magneticdisk drive interface 826, and anoptical drive interface 828, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer. Although a hard disk, a removable magnetic disk and a removable optical disk are described, other types of computer-readable memory devices and storage structures can be used to store data, such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. - A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These program modules include an
operating system 830, one ormore application programs 832,other program modules 834, andprogram data 836. In accordance with various embodiments, the program modules may include computer program logic that is executable by processingunit 802 to implement any of the embodiments described in Section II above and with respect toFIGS. 1-7 . - A user may enter commands and information into
system 800 through input devices such as akeyboard 838 and a pointing device 840 (e.g., a mouse). Other input devices (not shown) may include a microphone, joystick, game controller, scanner, or the like. In one embodiment, a touch screen is provided in conjunction with adisplay 844 to allow a user to provide user input via the application of a touch (as by a finger or stylus for example) to one or more points on the touch screen. These and other input devices are often connected toprocessing unit 802 through aserial port interface 842 that is coupled tobus 806, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). Such interfaces may be wired or wireless interfaces. -
Display 844 is connected tobus 806 via an interface, such as avideo adapter 846. In addition todisplay 844,system 800 may include other peripheral output devices (not shown) such as speakers and printers. -
System 800 is connected to a network 848 (e.g., a local area network or wide area network such as the Internet) through anetwork interface 850, a modem 852, or other suitable means for establishing communications over the network. Modem 852, which may be internal or external, is connected tobus 806 viaserial port interface 842. - As used herein, the terms “computer program medium,” “computer-readable medium,” and “computer-readable storage medium” are used to generally refer to memory devices or storage structures such as the hard disk associated with
hard disk drive 814, removablemagnetic disk 818, removableoptical disk 822, as well as other memory devices or storage structures such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. Such computer-readable storage media are distinguished from and non-overlapping with communication media (do not include communication media). Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. 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 wireless media such as acoustic, RF, infrared and other wireless media. Embodiments are also directed to such communication media. - As noted above, computer programs and modules (including
application programs 832 and other program modules 834) may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. Such computer programs may also be received vianetwork interface 850,serial port interface 842, or any other interface type. Such computer programs, when executed or loaded by an application, enablesystem 800 to implement features of embodiments discussed herein. Accordingly, such computer programs represent controllers of thesystem 800. - Embodiments are also directed to computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing devices, causes a data processing device(s) to operate as described herein. Embodiments may employ any computer-useable or computer-readable medium, known now or in the future. Examples of computer-readable mediums include, but are not limited to memory devices and storage structures such as RAM, hard drives, floppy disks, CD ROMs, DVD ROMs, zip disks, tapes, magnetic storage devices, optical storage devices, MEMs, nanotechnology-based storage devices, and the like.
- A method implemented by a cloud services platform is described herein. The method includes: receiving a template associated with an appliance that has been published to an online marketplace by a vendor and that has been selected therefrom by a customer, the template specifying resources to be allocated to deploy the appliance; deploying the appliance to a customer account associated with the customer within the cloud services platform in accordance with the template, the deploying including deploying the resources specified by the template as part of an appliance resource group within the customer account, the specified resources including an appliance management resource that is configured to expose control features of the appliance to the customer; and providing access to the appliance resource group to the vendor via a vendor account associated with the vendor within the cloud services platform.
- In one embodiment of the foregoing method, the appliance comprises one of a PaaS application or a SaaS application.
- In another embodiment of the foregoing method, the method further includes rendering at least one of the resources in the appliance resource group other than the appliance management resource inaccessible or read-only to the customer.
- In yet another embodiment of the foregoing method, providing access to the appliance resource group to the vendor comprises rendering all the resources in the appliance resource group accessible to the vendor in the vendor account.
- In still another embodiment of the foregoing method, deploying the appliance further comprises registering an appliance resource provider with a cloud resource manager within the cloud services platform, the appliance resource provider providing a set of APIs for controlling the appliance via the cloud resource manager and the appliance management resource. In further accordance with this embodiment, the set of APIs for controlling the appliance may be registered into a same namespace as other APIs exposed by the cloud resource manager.
- In a further embodiment of the foregoing method, the specified resources include a marketplace resource that facilitates providing billing features to the customer relating to the appliance.
- A system for deploying appliances to a cloud services platform is described herein. The system includes: a computer-implemented online marketplace to which a vendor publishes a template for deploying an appliance associated with the vendor and via which a customer selects the template for deployment; a computer-implemented service that, in response to the selection of the template by the customer, deploys the appliance to a customer account associated with customer within the cloud services platform in accordance with the template, the deploying including deploying resources specified by the template as part of an appliance resource group within the customer account, the specified resources including an appliance management resource that is configured to expose control features of the appliance to the customer; and a cloud resource manager within the cloud services platform that provides access to the appliance resource group to the vendor via a vendor account associated with the vendor within the cloud services platform.
- In one embodiment of the foregoing system, the appliance comprises one of a PaaS application or a SaaS application.
- In another embodiment of the foregoing system, the cloud resource manager renders at least one of the resources in the appliance resource group other than the appliance management resource inaccessible or read-only to the customer.
- In yet another embodiment of the foregoing system, the cloud resource manager renders all the resources in the appliance resource group accessible to the vendor in the vendor account.
- In still another embodiment of the foregoing system, the deploying the appliance further comprises registering an appliance resource provider with the cloud resource manager, the appliance resource provider providing a set of APIs for controlling the appliance via the cloud resource manager and the appliance management resource. In further accordance with such an embodiment, the set of APIs for controlling the appliance may be registered into a same namespace as other APIs exposed by the cloud resource manager.
- In a further embodiment of the foregoing system, the specified resources include a marketplace resource that facilitates providing billing features to the customer relating to the appliance.
- A computer-implemented online marketplace for self-service publication and deployment of appliances for a cloud services platform is described herein. The computer-implemented online marketplace comprises: a first user interface via which a vendor can publish a template for deploying an appliance associated with the vendor; and a second user interface via which a customer can select the template for deployment of the appliance to a customer account associated with the customer within the cloud services platform, the deployment including deploying resources specified by the template as part of an appliance resource group within the customer account, the specified resources including an appliance management resource that is configured to expose control features of the appliance to the customer, and providing access to the appliance resource group to the vendor via a vendor account associated with the vendor within the cloud services platform.
- In one embodiment of the foregoing computer-implemented online marketplace, the appliance comprises one of a PaaS application or a SaaS application.
- In another embodiment of the foregoing computer-implemented online marketplace, the deployment further includes rending at least one of the resources in the appliance resource group other than the appliance management resource inaccessible or read-only to the customer.
- In yet another embodiment of the foregoing computer-implemented online marketplace, providing access to the appliance resource group to the vendor includes rendering all the resources in the appliance resource group accessible to the vendor in the vendor account.
- In still another embodiment of the foregoing computer-implemented online marketplace, the deployment further includes registering an appliance resource provider with a cloud resource manager within the cloud services platform, the appliance resource provider providing a set of APIs for controlling the appliance via the cloud resource manager and the appliance management resource.
- In a further embodiment of the foregoing computer-implemented online marketplace, the specified resources include a marketplace resource that facilitates providing billing features to the customer relating to the appliance.
- While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and details can be made therein without departing from the spirit and scope of the invention as defined in the appended claims. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/818,195 US20220385663A1 (en) | 2016-09-14 | 2022-08-08 | Self-serve appliances for cloud services platform |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662394620P | 2016-09-14 | 2016-09-14 | |
US15/637,030 US11973758B2 (en) | 2016-09-14 | 2017-06-29 | Self-serve appliances for cloud services platform |
US17/818,195 US20220385663A1 (en) | 2016-09-14 | 2022-08-08 | Self-serve appliances for cloud services platform |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/637,030 Continuation US11973758B2 (en) | 2016-09-14 | 2017-06-29 | Self-serve appliances for cloud services platform |
Publications (1)
Publication Number | Publication Date |
---|---|
US20220385663A1 true US20220385663A1 (en) | 2022-12-01 |
Family
ID=61560801
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/637,030 Active US11973758B2 (en) | 2016-09-14 | 2017-06-29 | Self-serve appliances for cloud services platform |
US17/818,195 Pending US20220385663A1 (en) | 2016-09-14 | 2022-08-08 | Self-serve appliances for cloud services platform |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/637,030 Active US11973758B2 (en) | 2016-09-14 | 2017-06-29 | Self-serve appliances for cloud services platform |
Country Status (1)
Country | Link |
---|---|
US (2) | US11973758B2 (en) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11973758B2 (en) * | 2016-09-14 | 2024-04-30 | Microsoft Technology Licensing, Llc | Self-serve appliances for cloud services platform |
US10581757B2 (en) * | 2016-11-22 | 2020-03-03 | Vmware, Inc. | Pooling public cloud resources from different subscriptions using reservations |
US10805232B2 (en) * | 2016-11-22 | 2020-10-13 | Vmware, Inc. | Content driven public cloud resource partitioning and governance |
US10587464B2 (en) * | 2017-07-21 | 2020-03-10 | Accenture Global Solutions Limited | Automatic provisioning of a software development environment |
US10860336B2 (en) * | 2017-10-27 | 2020-12-08 | Google Llc | Managing multi-single-tenant SaaS services |
US10979416B2 (en) * | 2018-03-26 | 2021-04-13 | Nicira, Inc. | System and method for authentication in a public cloud |
KR102093130B1 (en) * | 2018-06-11 | 2020-04-23 | 주식회사 티맥스에이앤씨 | Integrated managrment system for container-based cloud servers |
US11329930B2 (en) | 2019-05-29 | 2022-05-10 | Red Hat, Inc. | Generating scenarios for automated execution of resources in a cloud computing environment |
CN110430198B (en) * | 2019-08-08 | 2021-12-10 | 中国联合网络通信集团有限公司 | Identity verification method, edge server, and shopping management method and system |
US11528194B2 (en) * | 2019-09-06 | 2022-12-13 | Jpmorgan Chase Bank, N.A. | Enterprise control plane for data streaming service |
EP3809358A1 (en) * | 2019-10-18 | 2021-04-21 | Thales Dis France Sa | Security mechanism for namespaces used in electronic identification on mobile devices |
WO2021211906A1 (en) * | 2020-04-15 | 2021-10-21 | Gunuganta Ramakanth | Application-agnostic tenant onboarding onto a multi-tenant system |
CN112054912B (en) * | 2020-08-31 | 2023-06-13 | 北京易捷思达科技发展有限公司 | Resource charging system and method of OpenStack open source cloud platform |
CN113014424B (en) * | 2021-02-09 | 2023-08-01 | 中国银联股份有限公司 | Cloud platform management method and device, electronic equipment and storage medium |
Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110191485A1 (en) * | 2010-02-03 | 2011-08-04 | Os Nexus, Inc. | Role based access control utilizing scoped permissions |
US20120150912A1 (en) * | 2010-12-09 | 2012-06-14 | International Business Machines Corporation | Hierarchical multi-tenancy management of system resources in resource groups |
US20120278426A1 (en) * | 2011-04-28 | 2012-11-01 | Hitachi, Ltd. | Computer system and its management method |
US20120304189A1 (en) * | 2011-05-23 | 2012-11-29 | Hitachi, Ltd. | Computer system and its control method |
US20130185112A1 (en) * | 2012-01-13 | 2013-07-18 | International Business Machines Corporation | Optimizing benefits of community development with reference to resources through multiple time periods for multiple cooperating and competing entities with reference to multiple dimensions |
US8683103B2 (en) * | 2011-08-19 | 2014-03-25 | International Business Machines Corporation | Hierarchical multi-tenancy support for host attachment configuration through resource groups |
US9075788B1 (en) * | 2012-06-15 | 2015-07-07 | Amazon Technologies, Inc. | Account state simulation service for cloud computing environments |
US9077728B1 (en) * | 2012-03-15 | 2015-07-07 | Symantec Corporation | Systems and methods for managing access-control groups |
US9172621B1 (en) * | 2013-04-01 | 2015-10-27 | Amazon Technologies, Inc. | Unified account metadata management |
US20150355925A1 (en) * | 2014-06-09 | 2015-12-10 | International Business Machines Corporation | Adaptive virtual machine request approver |
US20160036905A1 (en) * | 2014-07-31 | 2016-02-04 | Corent Technology, Inc. | Partitioning and Mapping Workloads for Scalable SaaS Applications on Cloud |
US20160094403A1 (en) * | 2014-01-21 | 2016-03-31 | Oracle International Corporation | System and method for providing data sources for use in a multitenant application server environment |
US20160094407A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | System and method for transactions in a multitenant application server environment |
US20160092802A1 (en) * | 2014-09-25 | 2016-03-31 | Oracle International Corporation | Delegated privileged access grants |
US20160094627A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | System and method for protocol support in a multitenant application server environment |
US9531607B1 (en) * | 2012-06-20 | 2016-12-27 | Amazon Technologies, Inc. | Resource manager |
US20170034071A1 (en) * | 2015-01-21 | 2017-02-02 | Oracle International Corporation | System and method for traffic director support in a multitenant application server environment |
US9614737B1 (en) * | 2010-09-17 | 2017-04-04 | Amazon Technologies, Inc. | Appliance backnets in dedicated resource environment |
US20180039641A1 (en) * | 2016-08-02 | 2018-02-08 | Xerox Corporation | Method and system for information retrieval for a spatial region |
US20180075009A1 (en) * | 2016-09-14 | 2018-03-15 | Microsoft Technology Licensing, Llc | Self-serve appliances for cloud services platform |
US10104163B1 (en) * | 2015-07-28 | 2018-10-16 | Amazon Technologies, Inc. | Secure transfer of virtualized resources between entities |
US10318265B1 (en) * | 2015-10-09 | 2019-06-11 | Amazon Technologies, Inc. | Template generation for deployable units |
US10516667B1 (en) * | 2014-06-03 | 2019-12-24 | Amazon Technologies, Inc. | Hidden compartments |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7467212B2 (en) * | 2000-12-28 | 2008-12-16 | Intel Corporation | Control of access control lists based on social networks |
WO2003003177A2 (en) * | 2001-06-29 | 2003-01-09 | Bea Systems, Inc. | System for and methods of administration of access control to numerous resources and objects |
US9565275B2 (en) * | 2012-02-09 | 2017-02-07 | Rockwell Automation Technologies, Inc. | Transformation of industrial data into useful cloud information |
WO2004010249A2 (en) * | 2002-07-19 | 2004-01-29 | Synchrologic, Inc. | System and method for utilizing profile information |
US20040088563A1 (en) * | 2002-11-01 | 2004-05-06 | Hogan Dirk J. | Computer access authorization |
US7546607B2 (en) * | 2002-11-19 | 2009-06-09 | Microsoft Corporation | Native code exposing virtual machine managed object |
US7308498B1 (en) * | 2003-02-13 | 2007-12-11 | Microsoft Corporation | System and method for automating a request for access to a restricted computer accessible resource |
EP2176767A1 (en) * | 2005-06-14 | 2010-04-21 | Patrice Guichard | Data and a computer system protecting method and device |
GB0613275D0 (en) * | 2006-07-04 | 2006-08-16 | Codeplay Software Ltd | Distributed computer system |
US9009058B2 (en) * | 2008-01-10 | 2015-04-14 | At&T Intellectual Property I, L.P. | Aiding creation of service offers associated with a service delivery framework |
US8543998B2 (en) | 2008-05-30 | 2013-09-24 | Oracle International Corporation | System and method for building virtual appliances using a repository metadata server and a dependency resolution service |
US9489647B2 (en) * | 2008-06-19 | 2016-11-08 | Csc Agility Platform, Inc. | System and method for a cloud computing abstraction with self-service portal for publishing resources |
US7596620B1 (en) * | 2008-11-04 | 2009-09-29 | Aptana, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US9094292B2 (en) * | 2009-08-31 | 2015-07-28 | Accenture Global Services Limited | Method and system for providing access to computing resources |
US20110276490A1 (en) * | 2010-05-07 | 2011-11-10 | Microsoft Corporation | Security service level agreements with publicly verifiable proofs of compliance |
US8954564B2 (en) | 2010-05-28 | 2015-02-10 | Red Hat, Inc. | Cross-cloud vendor mapping service in cloud marketplace |
US8769704B2 (en) * | 2010-09-10 | 2014-07-01 | Salesforce.Com, Inc. | Method and system for managing and monitoring of a multi-tenant system |
US8775626B2 (en) * | 2010-09-17 | 2014-07-08 | Microsoft Corporation | Using templates to configure cloud resources |
US8260931B2 (en) * | 2010-10-02 | 2012-09-04 | Synopsys, Inc. | Secure provisioning of resources in cloud infrastructure |
US9235442B2 (en) * | 2010-10-05 | 2016-01-12 | Accenture Global Services Limited | System and method for cloud enterprise services |
US8949939B2 (en) * | 2010-10-13 | 2015-02-03 | Salesforce.Com, Inc. | Methods and systems for provisioning access to customer organization data in a multi-tenant system |
US20120109772A1 (en) | 2010-11-03 | 2012-05-03 | Microsoft Corporation | Integrated cloud based marketplace services |
US8699499B2 (en) * | 2010-12-08 | 2014-04-15 | At&T Intellectual Property I, L.P. | Methods and apparatus to provision cloud computing network elements |
US8677357B2 (en) | 2011-01-26 | 2014-03-18 | International Business Machines Corporation | Method and apparatus for distributing a composite software stack as a virtual machine image |
US9223632B2 (en) * | 2011-05-20 | 2015-12-29 | Microsoft Technology Licensing, Llc | Cross-cloud management and troubleshooting |
US8769622B2 (en) | 2011-06-30 | 2014-07-01 | International Business Machines Corporation | Authentication and authorization methods for cloud computing security |
US8407323B2 (en) * | 2011-07-12 | 2013-03-26 | At&T Intellectual Property I, L.P. | Network connectivity wizard to support automated creation of customized configurations for virtual private cloud computing networks |
US9477530B2 (en) * | 2011-07-29 | 2016-10-25 | Connectwise, Inc. | Automated provisioning and management of cloud services |
US8931041B1 (en) * | 2011-07-29 | 2015-01-06 | Symantec Corporation | Method and system for visibility and control over access transactions between clouds using resource authorization messages |
US10063430B2 (en) | 2011-09-09 | 2018-08-28 | Cloudon Ltd. | Systems and methods for workspace interaction with cloud-based applications |
US8495197B1 (en) * | 2011-09-29 | 2013-07-23 | Amazon Technologies, Inc. | Resource pooling and subletting from user to another user |
DE102012217202B4 (en) * | 2011-10-12 | 2020-06-18 | International Business Machines Corporation | Method and system for optimizing the placement of virtual machines in cloud computing environments |
US20130110675A1 (en) | 2011-10-31 | 2013-05-02 | Microsoft Corporation | Marketplace for Composite Application and Data Solutions |
US9081974B2 (en) | 2011-11-10 | 2015-07-14 | Microsoft Technology Licensing, Llc | User interface for selection of multiple accounts and connection points |
US8930541B2 (en) * | 2011-11-25 | 2015-01-06 | International Business Machines Corporation | System, method and program product for cost-aware selection of templates for provisioning shared resources |
KR101762876B1 (en) * | 2011-12-05 | 2017-07-31 | 인텔렉추얼디스커버리 주식회사 | Security System for Cloud Computing Service |
US20130173499A1 (en) | 2012-01-01 | 2013-07-04 | Bank Of America Corporation | Robust cloud computing e-discovery platform |
US8977741B1 (en) * | 2012-02-29 | 2015-03-10 | Google Inc. | Method and system for cloud computing service transparency |
US9213568B2 (en) * | 2012-03-01 | 2015-12-15 | Alex Huang | Assigning states to cloud resources |
US9319286B2 (en) * | 2012-03-30 | 2016-04-19 | Cognizant Business Services Limited | Apparatus and methods for managing applications in multi-cloud environments |
US20130290952A1 (en) * | 2012-04-25 | 2013-10-31 | Jerry W. Childers, JR. | Copying Virtual Machine Templates To Cloud Regions |
FR2990301A1 (en) * | 2012-05-03 | 2013-11-08 | St Microelectronics Crolles 2 | DEVICE FOR CONVERTING THERMAL ENERGY IN ELECTRIC ENERGY IN THE PRESENCE OF A HOT SOURCE |
US9378255B2 (en) | 2012-05-11 | 2016-06-28 | Sap Se | Cloud logistics |
US20130311597A1 (en) * | 2012-05-16 | 2013-11-21 | Apple Inc. | Locally backed cloud-based storage |
US9122552B2 (en) * | 2012-06-29 | 2015-09-01 | Bmc Software, Inc. | Hybrid cloud infrastructures |
US9747581B2 (en) * | 2012-07-02 | 2017-08-29 | International Business Machines Corporation | Context-dependent transactional management for separation of duties |
US9690925B1 (en) * | 2012-08-30 | 2017-06-27 | Symantec Corporation | Consumption control of protected cloud resources by open authentication-based applications in end user devices |
US9588820B2 (en) | 2012-09-04 | 2017-03-07 | Oracle International Corporation | Cloud architecture recommender system using automated workload instrumentation |
US9710664B2 (en) * | 2012-09-07 | 2017-07-18 | Amrita Vishwa Vidyapeetham | Security layer and methods for protecting tenant data in a cloud-mediated computing network |
WO2014088537A1 (en) * | 2012-12-03 | 2014-06-12 | Hewlett-Packard Development Company, L.P. | Binding of application and infrastructure blueprints |
US9130979B2 (en) | 2012-12-11 | 2015-09-08 | Microsoft Technology Licensing, Llc | Systems and methods for using virtual machines to sequence native applications into virtual packages and for reimaging virtual machines |
US10474502B2 (en) * | 2013-01-14 | 2019-11-12 | Microsoft Technology Licensing, Llc | Multi-tenant license enforcement across job requests |
US9418213B1 (en) | 2013-02-06 | 2016-08-16 | Amazon Technologies, Inc. | Delegated permissions in a distributed electronic environment |
CN103164286A (en) * | 2013-03-12 | 2013-06-19 | 无锡云动科技发展有限公司 | Implement method, resource manager and cloud calculating system of cloud computing platform arrangement |
US9832205B2 (en) * | 2013-03-15 | 2017-11-28 | International Business Machines Corporation | Cross provider security management functionality within a cloud service brokerage platform |
US9313203B2 (en) * | 2013-03-15 | 2016-04-12 | Symantec Corporation | Systems and methods for identifying a secure application when connecting to a network |
US10574748B2 (en) * | 2013-03-21 | 2020-02-25 | Infosys Limited | Systems and methods for allocating one or more resources in a composite cloud environment |
US20140351402A1 (en) | 2013-05-26 | 2014-11-27 | Connectloud, Inc. | Method and Apparatus to Choose a Best Match Cloud Provisioning Server |
US20140358710A1 (en) * | 2013-05-31 | 2014-12-04 | Hewlett-Packard Development Company, L.P. | Market for resources based on reusable usage points and usage periods |
US20140359127A1 (en) | 2013-06-03 | 2014-12-04 | Microsoft Corporation | Zero touch deployment of private cloud infrastructure |
WO2015009318A1 (en) * | 2013-07-19 | 2015-01-22 | Hewlett-Packard Development Company, L.P. | Virtual machine resource management system and method thereof |
KR20150011250A (en) * | 2013-07-22 | 2015-01-30 | 한국전자통신연구원 | Method and system for managing cloud center |
US9294482B2 (en) | 2013-07-25 | 2016-03-22 | Oracle International Corporation | External platform extensions in a multi-tenant environment |
US20150067171A1 (en) * | 2013-08-30 | 2015-03-05 | Verizon Patent And Licensing Inc. | Cloud service brokering systems and methods |
US9736159B2 (en) * | 2013-11-11 | 2017-08-15 | Amazon Technologies, Inc. | Identity pool bridging for managed directory services |
US10348822B2 (en) * | 2014-01-21 | 2019-07-09 | Oracle International Corporation | System and method for clustering in a multitenant application server environment |
US9733921B1 (en) | 2014-01-23 | 2017-08-15 | NetSuite Inc. | System and methods for management of cloud application extensions |
US9645805B2 (en) * | 2014-06-26 | 2017-05-09 | Vmware, Inc. | Application blueprints based on service templates to deploy applications in different cloud environments |
US10547562B2 (en) * | 2014-07-31 | 2020-01-28 | Hewlett Packard Enterprise Development Lp | Cloud resource pool |
US11107029B1 (en) * | 2014-11-20 | 2021-08-31 | Auctane, LLC | Systems and methods implementing automated shipment status tracking |
US10929812B2 (en) * | 2014-11-26 | 2021-02-23 | Adobe Inc. | Content creation, deployment collaboration, and subsequent marketing activities |
US10191860B2 (en) * | 2015-03-04 | 2019-01-29 | Schneider Electric Software, Llc | Securing sensitive historian configuration information |
JP2016167138A (en) * | 2015-03-09 | 2016-09-15 | 富士通株式会社 | Information processing apparatus, workflow creation method, and workflow creation program |
US9762585B2 (en) * | 2015-03-19 | 2017-09-12 | Microsoft Technology Licensing, Llc | Tenant lockbox |
US10187410B2 (en) * | 2015-06-30 | 2019-01-22 | Microsoft Technology Licensing, Llc | Automatically preventing and remediating network abuse |
US10298589B2 (en) | 2016-01-27 | 2019-05-21 | International Business Machines Corporation | User abstracted RBAC in a multi tenant environment |
US11223536B2 (en) * | 2016-04-04 | 2022-01-11 | At&T Intellectual Property I, L.P. | Model driven process for automated deployment of domain 2.0 virtualized services and applications on cloud infrastructure |
US10581757B2 (en) * | 2016-11-22 | 2020-03-03 | Vmware, Inc. | Pooling public cloud resources from different subscriptions using reservations |
US10587464B2 (en) * | 2017-07-21 | 2020-03-10 | Accenture Global Solutions Limited | Automatic provisioning of a software development environment |
US10834135B1 (en) * | 2017-11-07 | 2020-11-10 | Amazon Technologies, Inc. | Suggesting access policies for web services based on test mode data |
US10949406B1 (en) | 2019-03-25 | 2021-03-16 | Amazon Technologies, Inc. | Compliance lifecycle management for cloud-based resources |
US11102328B2 (en) * | 2019-05-09 | 2021-08-24 | Sap Se | Provisioning multi-tenant, microservice architecture-based integration service in a cloud computing environment |
US20210342196A1 (en) | 2020-04-30 | 2021-11-04 | Microsoft Technology Licensing, Llc | Multiple customer environment management in a cloud services platform |
-
2017
- 2017-06-29 US US15/637,030 patent/US11973758B2/en active Active
-
2022
- 2022-08-08 US US17/818,195 patent/US20220385663A1/en active Pending
Patent Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110191485A1 (en) * | 2010-02-03 | 2011-08-04 | Os Nexus, Inc. | Role based access control utilizing scoped permissions |
US9614737B1 (en) * | 2010-09-17 | 2017-04-04 | Amazon Technologies, Inc. | Appliance backnets in dedicated resource environment |
US20120150912A1 (en) * | 2010-12-09 | 2012-06-14 | International Business Machines Corporation | Hierarchical multi-tenancy management of system resources in resource groups |
US20120278426A1 (en) * | 2011-04-28 | 2012-11-01 | Hitachi, Ltd. | Computer system and its management method |
US20120304189A1 (en) * | 2011-05-23 | 2012-11-29 | Hitachi, Ltd. | Computer system and its control method |
US8683103B2 (en) * | 2011-08-19 | 2014-03-25 | International Business Machines Corporation | Hierarchical multi-tenancy support for host attachment configuration through resource groups |
US20130185112A1 (en) * | 2012-01-13 | 2013-07-18 | International Business Machines Corporation | Optimizing benefits of community development with reference to resources through multiple time periods for multiple cooperating and competing entities with reference to multiple dimensions |
US9077728B1 (en) * | 2012-03-15 | 2015-07-07 | Symantec Corporation | Systems and methods for managing access-control groups |
US9075788B1 (en) * | 2012-06-15 | 2015-07-07 | Amazon Technologies, Inc. | Account state simulation service for cloud computing environments |
US9531607B1 (en) * | 2012-06-20 | 2016-12-27 | Amazon Technologies, Inc. | Resource manager |
US9172621B1 (en) * | 2013-04-01 | 2015-10-27 | Amazon Technologies, Inc. | Unified account metadata management |
US20160094403A1 (en) * | 2014-01-21 | 2016-03-31 | Oracle International Corporation | System and method for providing data sources for use in a multitenant application server environment |
US10516667B1 (en) * | 2014-06-03 | 2019-12-24 | Amazon Technologies, Inc. | Hidden compartments |
US20150355925A1 (en) * | 2014-06-09 | 2015-12-10 | International Business Machines Corporation | Adaptive virtual machine request approver |
US20160036905A1 (en) * | 2014-07-31 | 2016-02-04 | Corent Technology, Inc. | Partitioning and Mapping Workloads for Scalable SaaS Applications on Cloud |
US20160092802A1 (en) * | 2014-09-25 | 2016-03-31 | Oracle International Corporation | Delegated privileged access grants |
US20160094407A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | System and method for transactions in a multitenant application server environment |
US20160094627A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | System and method for protocol support in a multitenant application server environment |
US20170034071A1 (en) * | 2015-01-21 | 2017-02-02 | Oracle International Corporation | System and method for traffic director support in a multitenant application server environment |
US10104163B1 (en) * | 2015-07-28 | 2018-10-16 | Amazon Technologies, Inc. | Secure transfer of virtualized resources between entities |
US10318265B1 (en) * | 2015-10-09 | 2019-06-11 | Amazon Technologies, Inc. | Template generation for deployable units |
US20180039641A1 (en) * | 2016-08-02 | 2018-02-08 | Xerox Corporation | Method and system for information retrieval for a spatial region |
US20180075009A1 (en) * | 2016-09-14 | 2018-03-15 | Microsoft Technology Licensing, Llc | Self-serve appliances for cloud services platform |
Non-Patent Citations (2)
Title |
---|
Marinescu, Dan, "Cloud Resource Management", 2018, Science Direct, https://www.sciencedirect.com/topics/computer-science/cloud-resource-management (Year: 2018) * |
Microsoft Learn, "Manage Azure resource groups by using the Azure portal", 3/2/22, https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-portal (Year: 2022) * |
Also Published As
Publication number | Publication date |
---|---|
US11973758B2 (en) | 2024-04-30 |
US20180075009A1 (en) | 2018-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220385663A1 (en) | Self-serve appliances for cloud services platform | |
US10212190B2 (en) | Context-based cloud security assurance system | |
US10250461B2 (en) | Migrating legacy non-cloud applications into a cloud-computing environment | |
US10691514B2 (en) | System and method for integration, testing, deployment, orchestration, and management of applications | |
US10318265B1 (en) | Template generation for deployable units | |
US11244261B2 (en) | Catalog service platform for deploying applications and services | |
US10033604B2 (en) | Providing compliance/monitoring service based on content of a service controller | |
US9588795B2 (en) | Monitoring and reporting resource allocation and usage in a virtualized environment | |
US9294371B2 (en) | Enterprise-level management, control and information aspects of cloud console | |
CA2754304C (en) | System and method for cloud enterprise services | |
US20160132808A1 (en) | Portfolios and portfolio sharing in a catalog service platform | |
JP7097958B2 (en) | Systems and methods for integrating cloud applications into cloud service broker platforms using the Automatic Universal Connector Package | |
US20130283263A1 (en) | System and method for managing resources in a virtual machine environment | |
Ferrer et al. | Multi-cloud platform-as-a-service model, functionalities and approaches | |
US20140075033A1 (en) | Service association model | |
US10182107B2 (en) | Multi-tenant application using hierarchical bean factory container | |
JP7105298B2 (en) | Technology for automatically verifying offer functionality in a cloud service broker system | |
US20210342196A1 (en) | Multiple customer environment management in a cloud services platform | |
US9645814B1 (en) | Generating and publishing applications for multiple platforms | |
US10498747B1 (en) | Using program code with a monitoring service | |
WO2016077483A1 (en) | Catalog service platform for deploying applications and services | |
AU2015261587B2 (en) | Method and system for monitoring usage of computing resources | |
Rath | Hybrid Cloud Management with Red Hat CloudForms | |
US20230161912A1 (en) | System, method, and device for providing multiple software resources | |
Musumeci | Getting Started with Citrix XenApp 6.5 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BARYSHNIKOV, BORIS V.;RUSSINOVICH, MARK E.;LAMANNA, CHARLES W.;SIGNING DATES FROM 20170628 TO 20170629;REEL/FRAME:060747/0543 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
ZAAB | Notice of allowance mailed |
Free format text: ORIGINAL CODE: MN/=. |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |