US20120266159A1 - Selection of Ranked Configurations - Google Patents
Selection of Ranked Configurations Download PDFInfo
- Publication number
- US20120266159A1 US20120266159A1 US13/421,124 US201213421124A US2012266159A1 US 20120266159 A1 US20120266159 A1 US 20120266159A1 US 201213421124 A US201213421124 A US 201213421124A US 2012266159 A1 US2012266159 A1 US 2012266159A1
- Authority
- US
- United States
- Prior art keywords
- class
- cloud
- definition
- definitions
- class definition
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
-
- 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]
- 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/02—Standardisation; Integration
- H04L41/0246—Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols
- H04L41/0266—Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols using meta-data, objects or commands for formatting management information, e.g. using eXtensible markup language [XML]
-
- 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/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- 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/5003—Managing SLA; Interaction between SLA and QoS
- H04L41/5009—Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
- H04L41/5012—Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF] determining service availability, e.g. which services are available at a certain point in time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System on Chip
Definitions
- This specification relates generally to cloud computing.
- Cloud computing is a computing model developed to enable convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be provisioned and released quickly, dynamically, and with minimal manual management efforts and human interactions with the service providers.
- configurable computing resources e.g., networks, servers, storage, applications, and services
- a few common cloud-based service models include, Software (e.g., commercially-available software applications) as a Service (SaaS), Platform (e.g., hosting environment of software applications, such as virtual machines or application frameworks) as a Service (PaaS), and Infrastructure (e.g., compute power, storage, database, networking services, etc.) as a Service (IaaS).
- SaaS Software (e.g., commercially-available software applications) as a Service
- PaaS hosting environment of software applications, such as virtual machines or application frameworks
- IaaS Infrastructure
- aaS Infrastructure
- a cloud-based service Before a cloud-based service is made available to a cloud-service customer, various aspects of the service are configured according to a configuration specification, such that when the service is deployed, it meets the customer's needs and usage demand.
- This specification describes technologies relating to use and management of cloud computing environments.
- Another innovative aspect of the subject matter described in this specification can be embodied in methods that include the actions of: providing a plurality of class definitions for selection, each class definition modeling a respective data or functional component of a cloud-based environment using a group of configurable class parameters, each class definition supporting instantiation and inheritance of the class definition in a configuration specification for a cloud-based deployment; deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments, wherein the multiple cloud-based deployments had been carried out according to respective configuration specifications that require instantiation of the class definition or a new class definition derived from the class definition; and utilizing the respective performance metrics associated with each of the plurality of class definitions in ranking the plurality of class definitions.
- Providing the plurality of class definitions for selection further comprises: providing the respective performance metrics with each of the plurality of class definitions for user review in a selection user interface.
- Deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments further comprises: for each of the plurality of class definitions: identifying one or more data or functional components in the plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition; identifying one or more performance metrics associated with the identified one or more data or functional components; and deriving the respective performance metrics associated with the class definition by aggregating the identified one or more performance metrics.
- the performance metrics include one or more measures of latency, reliability, scalability, availability, or security.
- the respective numbers of required changes associated with the plurality of class definitions are used to calculate respective weights given to the respective performance metrics associated with the plurality of class definitions in ranking the plurality of class definitions.
- each class definition models a data or functional component of a cloud-based deployment using a group of configurable class parameters and is extendable to create at least one new class definition by a modification to one or more of the group of configurable class parameters or an addition of one or more new class parameters; providing a user interface that presents the class definitions received from the plurality of definition suppliers, for review and selection by a plurality of definition users.
- the plurality of distinct configuration specifications each for configuring a distinct cloud-based deployment and including a distinct class definition that extends from a same one of the class definitions received from the plurality of definition suppliers; and configuring each of the distinct cloud-based deployments based at least on the same one of the received class definitions and the distinct class definition that extends therefrom in the distinct configuration specification of the distinct cloud-based deployment.
- each of the received class definitions monitoring usage of the class definition in a plurality of configuration specifications that have been used to configure a plurality of cloud-based deployments; and recording, for each use of the class definition in the plurality of configuration specifications, a credit to a definition supplier of the class definition and a charge to a definition user associated with the use.
- the usage of the class definition includes an instantiation of the class definition in a respective configuration specification that has been used to carry out a respective cloud-based deployment.
- the usage of the class definition includes an extension of the class definition to create a new class definition that is instantiated in a respective configuration specification used to carry out a respective cloud-based deployment.
- Receiving a software submission from a software supplier including a software application to be deployed in a cloud-based environment and a plurality of distinct configuration specifications each for deploying the software application in the cloud-based environment in a distinct manner; and providing the plurality of distinct configuration specifications for review and selection by a software user.
- Receiving selection of one of the plurality of distinct configuration specification by the software user deploying the software application in the cloud-based environment according to the selected distinct configuration specification; and recording a charge to the software user and a credit to the software supplier based on a respective price associated the selected distinct configuration specification.
- each of the one or more collections of class definitions identifying one or more data or functional components in a plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition; identifying one or more performance metrics associated with the identified one or more data or functional components; and deriving the respective performance metrics associated with the collection of class definitions by aggregating the identified one or more performance metrics.
- another innovative aspect of the subject matter described in this specification can be embodied in methods that include the actions of: modifying one or more base classes whose class definition is used in multiple of the plurality of cloud-based deployments, wherein the base classes model a respective data or functional component of a cloud-based environment using a group of configurable class parameters, and the base classes support instantiation and inheritance of the class definition; identifying a plurality of cloud-based deployments each having been carried out according to a respective configuration specification, the respective configuration specification written in a specification language, and the respective configuration specification including the modified base classes or classes that inherit the modified base classes; and reconfiguring, for each cloud-based deployment, the cloud-based deployment based on the one or more modified base classes.
- the data or functional component modeled by each class is one of a virtual device supporting a cloud-based environment, a service utilized in the cloud-based environment, a software role performed by an installed application in the cloud-based environment, a data package holding data to be used during deployment or operation of the cloud-based environment, or a combination of one or more thereof.
- the specification language supports dependency between class definitions, and a definition dependency between a first class and a second class represents a deployment dependency between respective components modeled by the first and the second class.
- the definition dependency between the first class and the second class is expressed by a class parameter of the first class where the class parameter of the first class refers to an instance of the second class.
- the specification language supports connectivity between class definitions, and a value assignment linking an instance of a second class to a class parameter of a first class represents a connectivity between respective components modeled by the first class and the second class.
- the specification language is object-oriented.
- inventions of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
- a system of one or more computers can be so configured by virtue of software, firmware, hardware, or a combination of them installed on the system that in operation cause the system to perform the actions.
- One or more computer programs can be so configured by virtue having instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.
- a high-level object-oriented specification language allows configurable components of a cloud-based deployment to be modeled by a class definition that includes a group of configurable class parameters.
- the object-oriented specification language supports extension of an existing base class definition to create new class definitions, and supports inheritance of class parameters from the existing base class definition by the new class definitions.
- An administrative user of a cloud-based service can customized a cloud-based deployment based on class definitions used in configuring one or more generic deployments, such as by modifying class parameter values of the class definitions, varying interrelationships between the classes, and supplementing existing class parameters with new class parameters.
- the object-oriented specification language allows multiple layers of abstraction to be made on the different types of cloud-service components that are configurable.
- the high-level object-oriented specification language not only supports class definitions that model hardware and virtual resources, but also software roles and service roles served by software applications and services in a cloud-based deployment.
- the object-oriented specification language provides syntax for specifying dependency and connectivity between classes. Cloud components that involve multiple sub-components and complex structures can be modeled by class definitions that refer to multiple types of base classes and specify respective interrelationships between the base classes.
- a configuration specification can rely on existing class definitions to configure some aspects of a cloud-deployment at a high level of abstraction, while customizing other aspects at a more detailed level using newly derived class definitions.
- An administrative user of a cloud-based service is able to control the level of customization for a cloud-based deployment by choosing an appropriate set of class definitions to include and instantiate in the configuration specification for the cloud-based deployment.
- object-oriented specification language allows many class definitions that model common or special purpose cloud-service components to be created and stored. These stored class definitions can be extended or reused as is in configuration specifications of future deployments by different cloud-service customers. This reuse of class definitions in specification configurations can improve the speed and efficiency of the deployment process.
- class definitions can be reused and shared among many cloud-service customers, the efforts for developing suitable configuration specifications for the same or similar purposes do not have to be duplicated by the cloud-service customers.
- a marketplace for sharing reusable class definitions can be developed, such that a cloud-service customer can choose to purchase or license the use of existing class definitions developed and provided by other cloud-service customers for a fee.
- software applications can be provided with different types of configuration specifications (i.e., as “config-wrapped” software solutions) that are suitable for different usage demands and organizational infrastructures of the cloud-customers.
- the cloud-service provider When a configuration specification of a cloud-based deployment is written in the object-oriented specification language, the cloud-service provider is able to parse the configuration specification to identify the class definitions that are involved in configuring each data or functional component of the cloud-based deployment. Further, when the deployment is carried out according to the configuration specification, the cloud-service provider is also able to identify the underlying software or virtual resources associated with each of the data or functional components of the deployment. Therefore, the object-oriented specification language enables the cloud service provider to monitor the performance of the data and functional components of the cloud-based deployment, and associate the performance with the class definitions that are used to configure each of the data and function components. Thus, the cloud-service provider can provide guidance to the cloud-service customers on which parts of the configuration specification needs to be modified to improve the performance of the deployment.
- the cloud-service provider can generate a block diagram for the cloud-based deployment based on the configuration specification.
- the performance of the different components of the deployment can be visually represented on the block diagram.
- Various reconfiguration triggers specified in the configuration specification can also be represented in the block diagram. This visual representation allows an administrator of the cloud-based deployment to adjust the configuration parameters of the deployment timely and appropriately.
- the object-oriented specification language allows class definitions to be reused in multiple configuration specifications, and potentially by multiple cloud-service customers.
- the cloud-service provider can track the performances of multiple cloud-based deployments that have been configured using configuration specifications involving reused class definitions. For each reused class definition, the cloud-service provider can evaluate the quality of the class definition based on the aggregated performance of the multiple deployments that have been configured using the class definition.
- a ranking or quality scores of the class definitions based on the quality of the class definitions can be provided. This ranking or quality scores help cloud-service customers to better select the class definitions to reuse in their own cloud-based deployments. The ranking or quality scores may also help providers of reusable class definitions to improve their class definitions.
- FIG. 1 illustrates an example cloud-computing environment.
- FIG. 2A shows an example of a conventional configuration specification for a cloud-based deployment.
- FIG. 2B illustrates a resulting topology of the cloud-based deployment configured according to the configuration specification shown in FIG. 2A .
- FIG. 3A is an example configuration specification written in an example object-oriented specification language.
- FIG. 3B is an example module that includes reusable class definitions written in the example object-oriented specification language.
- FIG. 3C is an example configuration specification that utilizes the reusable class definitions shown in FIG. 3B .
- FIG. 4 is a block diagram of an example cloud-service manager of an example cloud-service provider.
- FIG. 5 is a block diagram showing a topology of an example cloud-based deployment configured according to the configuration specification shown in FIG. 3C .
- FIG. 6 is a flow diagram of an example process for processing a configuration specification written in an object-oriented specification language.
- FIG. 7 is a flow diagram of an example process for deriving a block diagram showing a topology of a cloud-based deployment based on the configuration specification of the cloud-based deployment.
- FIG. 8 is a flow diagram of an example process for monitoring performance of cloud-based deployments and associating the performance with class definitions that are used in configuring the cloud-based deployments.
- FIG. 9 is a flow diagram of an example process for evaluating the quality of a reused class definition based on aggregated performance of multiple cloud-based deployments that were configured at least in part based on the reused class definition.
- FIG. 10 is a flow diagram of an example process for deriving API calls for configuring a cloud-based deployment based on class definitions used in a configuration specification.
- FIG. 11 is a flow diagram of an example process for providing a platform for sharing reusable class definitions.
- FIG. 12 is a flow diagram of an example process for configuring multiple distinct cloud-based deployments based on distinct configuration specifications that all use at least one common reusable class definition.
- FIG. 13 is a flow diagram of an example process for charging definition users and crediting definition suppliers based on usage of the reusable class definitions provided by the definition suppliers.
- FIG. 14 is a flow diagram of an example process for providing a platform for selling “configuration-wrapped” software solutions.
- FIG. 15 is a flow diagram of an example process for charging software users and crediting software providers based on the selection of configuration-wrapped software solutions by software users.
- FIG. 16 is a flow diagram of an example process for utilizing aggregated performance metrics of multiple cloud-based deployments in ranking reusable class definitions that have been used in configuring the multiple cloud-based deployments.
- FIG. 17 is a flow diagram of an example process for categorizing reusable class definitions and ranking the reusable class definitions within their respective categories.
- FIG. 18 is a flow diagram of an example process for associating performances of multiple cloud-based deployments with a class definition that was used to configure the multiple cloud-based deployments.
- FIG. 19 is a flow diagram of an example process for deriving performance metrics associated with a reused class definition based on aggregated performance of multiple deployments.
- FIG. 20 is a flow diagram of an example process for utilizing multiple factors in ranking reusable class definitions.
- cloud-service customers e.g., end users or enterprises
- the cloud-service customers are able to scale the service level (e.g., in terms of service type, quality, and amount) up and down as needed, for example, through configuration user interfaces provided by the cloud-service providers, and/or through programmably-established configuration specifications stored at the cloud-service providers.
- a cloud-service provider pools resources and serves its customers via a multi-tenant model, where physical and virtual resources are assigned and reassigned, configured and reconfigured according to customer demands.
- the locations of the physical resources underlying the cloud infrastructure are not exposed to the cloud-service customers and can change dynamically.
- FIG. 1 is a block diagram illustrating an example cloud-computing environment 100 .
- cloud-service customers e.g., service customers 102 a , 102 b , and 102 c
- the cloud-service customers include end users of software applications provided by the cloud-service provider 104 , such as in a “Software as a Service” (SaaS) model.
- SaaS Software as a Service
- the cloud-service customer can also include enterprise customers that receive platform and/or infrastructure services from the cloud-service provider 104 , such as in the “Platform as a Service” (PaaS) and/or “Infrastructure as a Service” (IaaS) models.
- the software application services, platform services, and infrastructure services provided by the cloud-service provider 104 are developed by in-house or third-party service developers 108 , and made available to the cloud-service customers through the cloud-service provider 104 .
- a cloud-service customer may employ more than one type of services from the cloud-service provider 104 .
- the cloud-service provider 104 is conceptually structured in multiple layers.
- the lowest layer is the firmware and hardware layer 110 on which other layers of the cloud-service provider 104 are built.
- the firmware and hardware layer 110 includes generic contributing nodes (e.g., data centers, computers, and storage devices) geographically distributed across the Internet and provide the physical resources for implementing the upper layers of the cloud service provider 104 .
- the firmware and hardware layer 110 is the software kernel layer 112 .
- the software kernel layer 112 includes the operating system 111 and/or virtual machine manager 113 that host the cloud infrastructure services provided by the cloud-service provider 104 .
- the software kernel layer 112 controls and communicates with the underlying firmware and hardware layer 110 through one or more hardware/firmware-level application programming interfaces (APIs).
- the hardware/firmware-level APIs can be provider-specific and implemented to support Hypertext Transfer Protocol (HTTP) and HTTP Secure (HTTPS) based communications protocols. Examples of provider-specific APIs include Amazon Web Services APIs, Google App Engine APIs, and Microsoft SQL Azure APIs.
- the infrastructure services provided by the cloud-service provider 104 include virtualized resources, such as virtual machines, virtual storage (e.g., virtual disks), virtual network appliances (e.g., firewalls), and so on.
- the infrastructure servicers also include virtualized services, such as database services, networking services, file system services, web hosting services, load balancing services, MapReduce services, message queue services, map services, e-mail services, and so on.
- Each of these infrastructure services can be employed by a cloud-service customer and deployed in an infrastructure service layer 114 above the software kernel layer 112 .
- the scale and various aspects (e.g., data, connectivity, and dependency relationships within and between service components) of an infrastructure service deployment are configurable by an administrator user of the cloud-service customer.
- the administrator user submits a configuration specification to the cloud-service provider 104 via a frontend interface 120 of the cloud-service provider 104 .
- the cloud-service provider 104 translates the configuration specification into instructions (e.g., API calls) to the infrastructure service layer 114 and the kernel layer 112 according to the APIs of the involved infrastructure services and the APIs of the underlying software kernel layer 112 . These instructions are executed to provision and configure the infrastructure services requested in the configuration specification of the deployment.
- a configuration specification can be translated into infrastructure and kernel level APIs calls that create, re-create, move, or delete components (e.g., virtual machines and services) and assign or change attributes (e.g., memory and CPU allocations, network settings, disk sizes and volumes) of the components.
- components e.g., virtual machines and services
- assign or change attributes e.g., memory and CPU allocations, network settings, disk sizes and volumes
- the example cloud-service provider 104 also provide platform services, such as an environment (e.g., Linux, Solaris, Microsoft Windows, etc.) for running virtual machines or a framework (e.g., .NET, Java, Oracle Database, etc.) for developing and launching a particular type of software applications.
- the platform services are implemented in a platform service layer 116 over the infrastructure service layer 114 , and can employ one or more infrastructure services configured in a particular manner. Configuration of platform services can be accomplished by program code written according to the APIs of the platform services and, optionally, the APIs of the infrastructure services that are employed in enabling the platform services.
- the cloud-service provider 104 also provides software application services in an application service layer 118 .
- a software application e.g., a commercially-available software application
- the software application can be installed on one or more virtual machines or deployed in an application framework in the platform service layer 116 .
- the software application can also communicate with one or more infrastructure service components (e.g., firewalls, databases, web servers, etc.) in the infrastructure layer 114 .
- the installation and configuration of the software application in the application service layer 118 can be accomplished through APIs of the software itself and the APIs of the underlying platform and infrastructure service components.
- the example cloud-service provider 104 includes a cloud-service manager 122 .
- the example cloud-service manager 122 communicates with the frontend interface 120 to receive service requests from the cloud-service customers.
- the example cloud-service manager 122 is further responsible for the managing of the cloud resources and services, including service enrollment, provisioning, coordination, monitoring, scheduling, etc.
- the example cloud-service manager 122 also includes tools and libraries for translating the user requirements (e.g., as expressed in one or more configuration specifications and service level agreements (SLAs)) in the different service layers (e.g., the layers 114 , 116 , and 118 ) into physical resources demands (e.g., as expressed in one or more kernel and hardware/firmware-level API calls).
- SLAs configuration specifications and service level agreements
- the example cloud-service provider 104 provides all three types of cloud-based services, in some implementations, fewer or more types of services may be provided. In some implementations, the cloud-service provider 104 may outsource some of the cloud services or portions of a service to other cloud-service providers. The cloud-service manager 120 may implement API calls to these other cloud-service providers for supporting some of its services to the cloud-service customers.
- the conceptual layers of the cloud-service provider 104 shown in FIG. 1 are merely illustrative. Other conceptual structure of a cloud-service provider may be provided, for example, depending on the types of services actually offered by the cloud-service provider.
- the cloud-service customers can employ cloud-based services offered in each of the services layers 114 , 116 , and 118 .
- the cloud-service customer is granted different levels of control in configuring the services. For example, if a software application service is employed, an administrator user of the cloud-service customer is given control over how the software application is configured, but controls over the underlying platform and infrastructure services supporting the software application remains with the cloud-service provider 104 . If a platform service is employed, an administrative user of the cloud-service customer is given control over how the platform and/or application frameworks are configured, but the control over the infrastructure services that support the platform and/or application frameworks remains with the cloud-service provider 104 . Similarly, if infrastructure services are employed, an administrative user of the cloud-service customer is given control over the particular infrastructure services employed, but not the underlying kernel layer 112 and firmware and hardware layer 110 .
- the cloud-service customers access the cloud-based services using data processing apparatus such as personal computers, smart phones, and tablet computers.
- data processing apparatus such as personal computers, smart phones, and tablet computers.
- different user interfaces or programming interfaces may be used to communicate with the cloud-service provider 104 .
- a software application service For example, if a software application service is being employed, an end user can access and use the software application through a web browser.
- a user of the service e.g., an administrator user of a cloud-service customer
- the administrative functions include, for example, starting or stopping virtual machines, managing cloud storage, installing and deploying software on virtual machines, or setting up web servers, etc.
- a cloud-service provider 104 can optionally allow an administrator user of a cloud-service customer to write program code according to various provider-, platform-, framework-, and/or service-dependent application program interfaces (APIs) to control and configure various aspects of the services that the cloud-service customer receives.
- APIs application program interfaces
- provider-, platform-, framework-, and service- independent APIs can be used to control and configure the services as well.
- a service user or service developer When configuring a cloud-based service for deployment, a service user or service developer provides one or more configuration files to the cloud-service provider 104 .
- the configuration files set forth the desired initial state of the service expressed in terms of various configuration parameters.
- the configuration file is written in a structured way according to the rules and syntax provided or recognized by the cloud-service provider 104 , such that the configuration file will be parsed and interpreted correctly by the cloud-service provider 104 .
- FIG. 2A is an example of a conventional configuration specification 200 for deploying a simple web application in a cloud-computing environment.
- the example configuration specification 200 is written in an Extensible Markup Language (XML), which is a commonly used language for specifying configurations for cloud-based deployments.
- XML Extensible Markup Language
- the example configuration specification 200 is provided to a cloud-service provider in a text file.
- the cloud-service provider uses tools (e.g., a parser or API translator) that parse the configuration file according to the markups (e.g., the MXL tags, elements, and attributes, etc.) in the configuration file and converts the requirements specified in the configuration file into one or more sets of API calls. After the appropriate sets of API calls are determined, the cloud-service provider executes the API calls to carry out the deployment according to the requirements set forth in the configuration file.
- tools e.g., a parser or API translator
- the markups e.g., the M
- FIG. 2B illustrates the resulting topology 208 of the web application service after it is deployed according to the configuration specification 200 .
- a single Grid Service Manager (GSM) 210 is deployed on a single GSM virtual machine 212 .
- GSCs Grid Service Containers
- 214 a and 214 b are deployed, each GSC on a respective GSC machine ( 216 a or 216 b ), as specified by code block 204 .
- the GSM installs a copy of the web application software (e.g., application copy 218 a or 218 b ) within each of the two GSCs 214 a and 214 b .
- a load balancer service 220 is started on a load balancer machine 222 , and used to direct traffic (e.g., HTTP requests from client browsers 224 ) to the two GSC machines 216 a and 216 b , and to funnel back responses prepared by the web applications running on the GSC machines 216 a and 216 b.
- the example conventional configuration specification 200 relies on nested markup constructs (e.g., code blocks 202 , 204 , and 206 ) to describe the components of a deployment and relationships among the components.
- the user writing the configuration specification 200 needs to be familiar with the details within each markup construct that goes into the configuration specification 200 and the markup construct's meaning to the API translator of the cloud-service provider.
- the configuration file can become very long and complex with many layers of markups and duplicate statements.
- code reuse decreases as a configuration specification becomes long and complex, because customization of the configuration specification for another deployment would require many changes and debugging the customized configuration file would also become more difficult.
- a cloud-service customer or service developer can provide a configuration specification written in a high-level object-oriented specification language.
- the high-level object-oriented specification language allows components (e g , infrastructures, storage devices, services, software package to be installed, and “software roles” played by installed software applications) of a cloud-based deployment to be specified as instances of one or more reusable and modifiable classes, where each class models a component of the deployment using a group of configurable class parameters.
- the value of each class parameter can be specified, reused, or modified for particular deployments using the syntax and functions provided by the object-oriented specification language.
- the instance of each reusable and modifiable class declares the desired state of the component that is modeled by the class.
- New class definitions can be provided based on statements relating or modifying one or more existing class definitions using the high-level specification language. Statements relating different classes capture the relationships between multiple aspects (e.g., data or functional components) of a deployment. Examples of such relationships include the dependencies between software installations and service activations in a deployment, the connectivity between multiple software roles in a deployment, and the connectivity between a software role and a service or virtual device in a deployment. New class definitions can also be created by extending an existing class definition with the addition of new class parameters and/or methods. A user can customize a deployment by specifying a new class derived from one or more existing base classes and instantiate the new class.
- a cloud-service provider is able to compile a configuration specification written in the high-level object-oriented specification language into a set of API calls, based on the requirements specified by the class definitions included in the configuration specification.
- the inclusion of a class definition in a configuration specification refers to a request in the configuration specification to instantiate the class definition or to instantiate a new class definition derived from the class definition.
- the cloud-service provider stores a set of rules and protocols for translating each of a set of most basic class definitions (or core class definitions) of the specification language to a respective group of API calls.
- the group of API calls for each core class definition conforms to the API of the type of components modeled by the core class definition.
- the compiler is then able to use the set of rules and protocols to translate all class definitions derived from the core class definitions into an appropriate combination of API calls to configure all of the components of a particular deployment.
- the API calls are sent to and executed on one or more servers of the cloud-service provider.
- API calls may be passed to an intermediary component of the cloud-service provider or a third-party service provider, where the API calls are further processed into lower-level API calls and carried out by the sub-components of the intermediary component or third-party service provider.
- the high-level object-oriented specification language also includes syntax for specifying triggers for scaling or dynamically reconfiguring various aspects of the deployment.
- a class definition that models a virtual machine can include one or more class parameters for a scaling policy, such that the compiler can derive API calls to dynamically adjust the number of virtual machines deployed based on various performance metrics monitored by the cloud-service manager (e.g., the cloud-service manager 122 shown in FIG. 1 ).
- FIGS. 3A-3C illustrate the syntax and various properties of an example object-oriented specification language, and how a cloud-based deployment can be specified according to the example object-oriented specification language, and based on existing and newly derived class definitions.
- FIG. 3A an example configuration specification 300 written in an example object-oriented specification language is shown in FIG. 3A .
- the deployment made according to this configuration specification 300 is for launching a virtual machine with a web server (e.g., an Apache web server) installed and serving the files present in a data package.
- a web server e.g., an Apache web server
- the existing base class definitions include a set of core class definitions provided by the compiler and possibly other class definitions that extend from one or more of the core class definitions either directly or via one or more intermediate class definitions.
- the existing base class definitions are grouped into modules (e.g., modules “utils,” “std” shown in FIG. 3A ), and classes included in each module are referenced in a configuration specification by a module name followed by a class name (e.g., “std.Parameters,” “utils.ConfiguratorLAMP,” “std.DataPackage,” “std.Role,” “utils.PublicTCPFirewall,” “utils.BaseDeployment” as shown in the specification 300 ).
- Each of the base class definitions specifies an initial configuration state of a corresponding component of a cloud-based deployment, subject to the modifications and component relationships set forth in the configuration specification 300 .
- the configuration specification 300 includes new class definitions that extend from the existing base class definitions. For example, a new class “Params” extends from the base class “std.Parameters,” a new class “SimpleHostingPackage” extends from the base class “std.DataPackage,” a new class “SimpleHostingVM” extends from the base class “utils.Configurator.LAMP,” a new class “SimpleHostingRole” extends from the base class “std.Role,” a class “SimpleHostingFirewall” extends from the base class “utils.PublicTCPFirewell,” and a class “SimpleHostingDeployment” extends from the base class “utils.BaseDeployment,” as shown by the new class definitions 302 , 304 , 306 , 308 , 310 , and 312 , respectively.
- the configuration specification 300 triggers the deployment of a simple hosting application by creating an instance of the “SimpleHostingDeployment” class (e.g., as shown by statement 314 ), which in turn creates instances of other classes from which the “SimpleHostingDeployment” class is derived.
- the “SimpleHostingDeployment” class definition 312 customizes the definition of the base class “utils.BaseDeployment” by modifying two class parameters, a “roles” parameter and a “firewall” parameter.
- the “roles” parameter specifies the respective software roles that one or more installed software packages are supposed to play in the deployment.
- the “firewall” parameter specifies that a firewall service is to be included as part of the deployment.
- the class definition 312 specifies that a single software role is to be included, which is represented by an instance of the “SimpleHostingRole” class.
- the class definition 312 further specifies that the firewall service to be included in this deployment is represented by an instance of the “SimpleHostingFirewall” class.
- the “SimpleHostingDeployment” class inherits other class parameters defined in the base class “utils.BaseDeployment” without further modification. These other class parameters describe other aspects of the deployment that need not be further customized for this simple hosting deployment.
- the “SimpleHostingRole” class definition 308 extends from the base class “std.Role.” Both classes are based on a “software role” model that categorizes a software installation according to the role that the software installation plays in a cloud-based deployment. For example, a software package may be installed to play a role of a webhost, a frontend, a backend, a communication interface, and so on. Depending on the particular role that a software installation plays, different parameters may be used to configure the software installation. Each configurable parameter for the software role can have a corresponding class parameter or function in the class definition created based on the “software role” model.
- a “software role” model can include model parameters for configuring various aspects of the software installation, including the virtual machines on which the software is to be installed, the location of the software binary, instructions on which installer program should be used to install the software, and so on. If the software installation requires other services or software installations to be performed first, this dependency is optionally included in the “software role” model as well.
- Example of dependency relationships are “start after” or “stop before.” Other dependency types (e.g., install on the same virtual machine, etc.) can be supported as well.
- the class definition 308 for the “SimpleHostingRole” class specifies that the role of the software installation in the deployment is to serve as a “webhost.” How the “webhost” software is to be deployed is made known to the compiler through the class definition of the “simplehosting.webhost” class.
- the “simplehosting.webhost” class definition includes the configurations of a simple apache web server, which is already written and made known to the compiler.
- the class definition 308 for the “SimpleHostingRole” class further declares that the data package that is needed to run this webhost is represented by an instance of the “SimpleHostingPackage” class, and that the webhost is to be installed on virtual machines that are represented by instances of a “SimpleHostingVM” class.
- each of the “roleName,” “moduleName,” “dataPackages,” and “vms” are parameters of the “std.Role” class, and are customized in the “SimpleHostingRole” class definition 308 .
- Other class parameters of the “std.Role” class are inherited by the “SimpleHostingRole” class without modification.
- the class definition 308 of the “SimpleHostingRole” class also defines a few new parameters, such as the “serving_domain” and “document_root” parameters whose values are assigned either indirectly through another parameter name (e.g., “serving_domain” of the “Params” class 302 ) or by a direct value entry (e.g., “/var/www/static”).
- a direct value entry e.g., “/var/www/static”.
- only one software role is defined, so no dependency between software roles is specified for the software role (e.g., the “SimpleHostingRole”) in terms of installation or execution.
- the class definition 310 of the “SimpleHostingFirewall” class is based on the existing “utils.PublicTCPFirewall” class definition.
- the “utilis.PublicTCPFirewall” class defines a public firewall with Transmission Control Protocol (TCP) set as the protocol.
- TCP Transmission Control Protocol
- the only parameters of the “PublicTCPFirewall” class that are modified for this deployment are the “target” and “ports” parameters.
- the target of the firewall is represented by an instance of the “SimpleHostingRole” class, while the port of the firewall is set to port “ 80 .”
- Other parameters e.g., the “source” and the “protocol” parameters
- the source and the “protocol” parameters
- a connectivity between the firewall component and the simple hosting software role is specified by the value assignment to the “target” parameter.
- the class definitions of the “SimpleHostingFirewall” and the “utils.PublicTCPFirewall” classes are both based on a firewall service model.
- a service model does not need to include parameters for the underlying virtual machines, disks, or software packages. Instead, these aspects are controlled by the cloud-service provider and not subject to the configuration by the users of the service.
- a service model also optionally includes parameters that specify dependences between services and between services and software roles.
- the firewall component is connected to the web server component, but no dependencies of the firewall service are specified for this simple hosting deployment.
- the class definition 308 of the “SimpleHostingRole” class requires instantiation of the “SimpleHostingPackage” class and the “SimpleHostingVM” class.
- the class definition 304 of the “SimpleHostingPackage” class specifies the source of the data (e.g., “data” in the current directory”) that is to be copied to the virtual machine hosting the “SimpleHostingRole.”
- the class definition 304 further specifies a destination directory (e.g., “/var/www/static”) of the copied data on the virtual machine.
- the data package “data” is copied from the directory in which the configuration file resides, to the destination directory “/var/www/static” on the virtual machine that has been deployed according to the “SimpleHostingVM” class definition 306 .
- the “SimpleHostingVM” class definition 306 extends from the “utils.ConfiguratorLAMP” class definition. Both classes are based on a virtual machine model and specify how a virtual machine can be configured. In this example, the “utils.ConfiguratorLAMP” class configures a customized virtual machine that already has an Apache web server installed. Therefore, by extending from the “utils.ConfiguratorLAMP” class rather than a standard virtual machine class, a user can simplify and speed up the configuration process.
- the “SimpleHostingVM” class definition 306 also specifies the number of virtual machines to be deployed in this deployment and the external IP addresses to be bound to the virtual machines, through the newly added “replicas” and “staticIP” class parameters.
- Other parameters that are commonly used to configure a virtual machine or virtual machines for supporting a software role include, for example, configuration parameters for the CPU and memory requirements of the virtual machine(s), storage disks to be attached to the virtual machine(s), read-only storage sources attached to the virtual machine(s), IP addresses, network interfaces of the virtual machine(s), the data center location of the virtual machine(s), and so on.
- Each of these virtual machine model parameters is optionally included as a class parameter in a virtual machine class definition or another class that extends from a virtual machine base class definition.
- a special “Params” class is included in the configuration specification of a deployment, such as that shown in the example configuration specification 300 .
- Parameter values can be provided in this class definition and used to assign values to parameters in other class definitions that are included in the same configuration file. For example, the values of parameters “replica_count,” “serving_domain,” and “ip_array” are injected into the class definitions 306 and 308 through references made to the respective names of parameters.
- class definitions for different components of a cloud-based deployment based on different component models.
- a high-level object-oriented specification language can be developed based on models of various types of infrastructures, storage, services, and software roles that commonly occur in a cloud-based computing environment. Each model describes a corresponding infrastructure component, storage, service, or software role using a number of model parameters.
- Core class definitions that represent generic initial configuration states of some most common and basic components of the cloud-based environment can be created based on these component models.
- class definitions that represent the initial configuration states of more complex components can be created from multiple core class definitions and/or other class definitions that are derived from the core class definitions.
- a compiler of the high-level object-oriented specification language is created to parse the class definitions created based on these component models, extract the configuration requirements expressed by the values of the class parameters, and translates the requirements into a proper set of API calls for configuring the types of components represented by these component models.
- a compiler is implemented as a software program or script that reads a configuration file and outputs a set of API calls.
- the compiler also direct the API calls to appropriate components of the cloud-service provider or third-party providers for execution.
- an example storage model includes model parameters for configuring aspects of a storage option of a deployment, such as the size of the storage, mounting points of the storage, and so on.
- a storage model optionally includes a scaling policy for dynamically adjust the size of the storage based on monitored usage of the storage.
- a cloud-based environment can include many platform and infrastructure services, such as a database service, a message queue service, a load balancing service, a map service, a MapReduce service, and so on. Different service models can be developed for each of these cloud-based services, and class definitions for configuring the different services can be created based on the different service models.
- an object-oriented specification language enables the creation of class hierarchies that represent different levels of customization for components in various layers of the cloud-computing environment.
- a configuration specification written in the object-oriented specification language can reuse existing class definitions, either by extending from an existing class definition or referring to an instance of an existing class definition when assigning a value to a class parameter. Reusing existing class definitions simplifies the configuration specification for a new deployment. Furthermore, when reusing an existing class definition, a user only needs to know the configuration state that can be accomplished by the existing class definition, but not all the literal details set forth within the class definition to accomplish that configuration state.
- class definitions of highly complex components can be developed based on multiple existing class definitions, with or without modification to the class parameters of the existing class definitions.
- These highly complex class definitions can be reused by a user in a new deployment, without in depth understanding of these complex class definitions on all levels.
- the user By choosing the appropriate base classes to customize and modify in a new configuration specification, the user also gains more refined control over particular aspects of the deployment while leaving other aspects of the deployment generic to definitions of the base classes.
- FIG. 3B shows some base class definitions that are stored (e.g., in a “lamp” module 320 ) and reused in configuration specifications of multiple cloud-based deployments. These base class definitions are tailored for various Linux Apache MySQL Perl/Python (LAMP)-based application deployments. Each class definition includes some commonly used class parameters for configuring a respective data or functional component of a LAMP-based application deployment.
- LAMP Linux Apache MySQL Perl/Python
- FIG. 3C provides an example configuration specification 340 that utilizes the base classes in the “lamp” module 320 to deploy a Mantis debugging software in a LAMP-based application deployment.
- the configuration specification 340 for the Mantis application deployment does not need to include the details of how a basic LAMP-based environment is configured, and only needs to customize aspects that are particular to the Mantis application deployment.
- the special “Params” class 322 includes some parameters that are used in multiple class definitions, such as a flag “single_node” indicating whether the Apache software and the MySQL software should be installed on the same virtual machine, a “frontend ip” parameter for specifying the IP addresses to be bound to the LAMP frontend component, a “serving domain” parameter for specifying the domain name of the Apache website, a “doc_root” parameter for setting the document root of the Apache server, a “mysqldatafolder” parameter for setting the database folder relative to the persistent disk mount point, a “mysql_pdname” parameter for specifying the name of the persistent disk, a “mysql_pd mount_point” parameter for specifying the mount point of the persistent disk, a “pd_size_gb” parameter for specifying the size of the persistent disk in
- a LAMP-based application deployment typically includes the following components: a frontend (i.e., the software role of a frontend software application), virtual machines on which the frontend software application (e.g., an Apache web server application) is installed, a database (i.e., the software role of a database software application), virtual machines on which the database software application (e.g., a MySQL software application) is installed, a permanent disk for storing the database, and a firewall.
- a frontend i.e., the software role of a frontend software application
- virtual machines on which the frontend software application e.g., an Apache web server application
- a database i.e., the software role of a database software application
- virtual machines on which the database software application e.g., a MySQL software application
- the class definition “FrontendVM” 324 extends from an existing class definition “utils.ConfiguratorLAMP” which configures a virtual machine image that already has an Apache web server software pre-installed.
- the MySQL database software is to be installed on the same virtual machine as the Apache software, as indicated by the “single_node” flag in the “Params” class definition 322 . Therefore, the “DatabaseVM” class definition 326 also extends from the class definition “utils.ConfiguratorLAMP.”
- the “MysqlPD” class definition 328 models the permanent disk on which the database is to be stored.
- the MysqlPD class definition 328 includes class parameters that specify the name of the persistent disk, the size of the persistent disk, and the mount point of the persistent disk, for example. Other parameters that specify how the persistent disk should be configured are inherited from an existing “std.PersistentDiskSpec” class definition without modification.
- the “FrontendRole” class definition 330 models the frontend component of the LAMP-based environment.
- the “FrontendRole” class definition 330 extends from a standard software role modeled by an existing base class definition “std.Role.”
- the “FrontendRole” also refers to a “lampfront” placeholder class and a “lamp” placeholder module as the temporary values assigned to the “roleName” and the “moduleName” class parameters. These temporary values will be replaced by the names of the actual module and class that configure the LAMP frontend software application to be deployed. As will be shown in FIG.
- the class definition that configures the front end software is the “mantis_frontend” class in the “mantis” module.
- the class definition 330 also sets forth that the virtual machine on which the LAMP frontend role is to be installed is represented by an instance of the “FrontVM” class 324 .
- the “DatabaseRole” class definition 332 models the database component of the LAMP-based environment.
- the “DatabaseRole” class also refers to a placeholder class in a placeholder module (e.g., “lamp” and “lamp_backend”) for the backend software configuration.
- the names of the placeholder class and the placeholder module will be replaced by the actual names of the class and module that configure the backend database software.
- the “DatabaseRole” class definition 332 also specifies that the persistent disk storing the database is represented by an instance of the “MysqlPD” class definition 328 .
- vms parameter is defined to indicate that the virtual machine for installing the backend database software of the LAMP environment is to be represented by an instance of the “FrontendVM” class if the “single_node” flag is set to TRUE, otherwise, the virtual machine is to be represented by an instance of the “DatabaseVM” class.
- the firewall component of the LAMP-based environment is modeled by the “HttpFirewall” class definition 334 .
- the “HttpFirewall” class definition extends from the existing “utils.PublicTCPFirewall” class definition, such as the protocol, source, and target parameters of the “util.PublicTCPFirewall” class are inherited by the “HttpFirewall” class.
- the “HTTPFirewall” class definition modifies the “port” parameter of the “utils.PublicTCPFirewall” from “any” to “80.”
- Each class definition set forth in the “lamp” module 320 shown in FIG. 2B is extendable, modifiable, and/or usable as is for an application-specific deployment and/or for creating new class definitions in other modules.
- the configuration specification 340 shown in FIG. 3C includes and builds upon the class definitions in the “lamp” module 320 shown in FIG. 3B .
- a statement 342 at the beginning of the configuration specification 340 points to a file containing the class definitions of the “lamp” module 320 , to indicate to the compiler where to locate the base class definitions that are used in the configuration specification 340 .
- the configuration specification 340 is for configuring an application deployment that launches virtual machines in a LAMP structure and installs the Mantis debugging software on the virtual machines.
- Mantis is a web-based bug-tracking system written in the PHP scripting language and works with a MySQL database and a webserver.
- the deployment calls for two software roles and a firewall to be installed.
- the two software roles are created according to the “MantisFrontend” class definition 348 and the “MantisDatabaseRole” class definition 350 , while the firewall is created according to the “MantisFirewall” class definition 352 .
- the statement 356 makes an instance of the “MantisDeployment” class and causes the other classes on which the “MantisDeployment” class depends to be instantiated as well.
- the “MantisFrontend” class definition 348 extends from the “lamp.FrontendRole” class definition 330 shown in FIG. 2B .
- the class parameters that are modified for the Mantis software installation include the “roleName,” “moduleName” of the software configuration specification, the “dataPackages” from which the Mantis software binaries can be copied, and the database host to be associated with the Mantis application deployment.
- the configuration parameters for the virtual machine aspect of the Mantis frontend are inherited from the “lamp.FrontendRole” class definition 332 without modifications. In other words, the user writing the configuration specification 340 accepts the default virtual machine configuration specified in the “lamp” module 320 , and needs not customize the Mantis application deployment with that level of details.
- the “MantisDatabaseRole” class definition 350 extends from the “lamp.DatabaseRole” class definition 332 shown in FIG. 3B .
- the class parameters that are modified for the Mantis software installation includes the “roleName” and “moduleName” of the configuration specification for the backend database role.
- the frontend host of the database role is set to be an instance of the “MantisFrontendRole” class.
- the configurations for the virtual machine aspect and the persistent disk aspect of the database backend role are inherited from the “lamp.DatabaseRole” class definition 332 without modification.
- the “MantisFirewall” class definition 352 inherits the parameters from the “lamp.HTTpFirewall” and modifies only the value for the “target” parameter to an instance of the “MantisFrontendRole” class.
- Other parameters, such as the “port” and “protocol” parameters of the “MantisFirewall” class are inherited from the base class “lamp.HTTpFirewall” defined in the “lamp” module 320 .
- the configuration specification for the Mantis software deployment is derived from the base class definitions (e.g., class definitions in the “lamp” module 320 ) created for a generic LAMP-based application deployment. Configurations of many aspects of the LAMP-based deployment do not have to be redefined for the Mantis application deployment.
- the configuration specification for the Mantis application deployment only needs to specify new parameters or new parameter values that are particular to the Mantis application deployment or in need of customization. Parameters that are already defined for other more generic aspects of the deployment do not need to be re-specified or modified in the configuration specification 340 . The details of these other aspects of the deployment can remain opaque to the user.
- FIGS. 3A-3C are merely illustrative of the properties of an object-oriented specification language for writing configuration specifications of cloud-based deployments.
- the exact syntax of the object-oriented specification language can depart from what is shown in the examples.
- many types of base classes can be created to model the components that may exist in a cloud environment. Syntax for specifying relationships between components modeled by the classes can also vary from one object-oriented specification language to another object-oriented specification language.
- a compiler can be created to parse the class definitions included in a configuration specification written in the object-oriented specification language according to a predetermined set of syntax rules to extract the parameters that are used to configure the various types of components in the cloud environment.
- FIG. 4 shows an example cloud-service manager 222 of an example cloud service provider 104 .
- the example cloud-service manager 222 is responsible for deploying cloud-based services according to the configuration specification 104 provided by the administrative users (e.g., 102 a , 102 b , 102 c ) of the services.
- the cloud-service manager 222 receives communications from the administrative users of the cloud-customers through the frontend 120 of the cloud-service provider 104 .
- the cloud-service manager 222 may have its own frontend components that communicate with the cloud-service customers directly.
- the frontend 120 After the frontend 120 receives the configuration specifications 104 from an administrative user of the cloud-service customers, the frontend 120 passes the received configuration specifications 104 to an API translator 404 of the cloud-service manager 222 .
- the API translator 404 have access to a library of core class definitions (e.g., stored in a definition database 406 ) and translation protocols (e.g., stored in a rule database 408 ) on how to translate the core class definitions into respective sets of API calls for configuring various components of a cloud-based environment of the cloud-service provider 104 .
- the API translator 404 can include a compiler (e.g., a parsing script or program) that parses the class definitions received in a configuration specification 104 , identify all the base classes from which the classes in the configuration specification are derived, and extract the base class parameters that are left unmodified as well as the class parameters that are modified or new.
- the compiler also identifies all the relationships (e.g., connectivity and dependencies) among the components of the cloud-based deployment from the statements in the class definitions. Based on the values of the class parameters and the stored translation protocols, the API translator 404 generates an appropriate set of API calls 410 to configure various aspects of the cloud-based deployment.
- the translation protocols can include a mapping between a core class definition modeling a respective modular aspect of the cloud-based environment to a group of API calls that are used to configure that aspect of the cloud-based environment.
- the translation protocols can further include protocols for modifying the set of API calls (e.g., changing default parameters used in the API calls) with parameter values specified for that modular aspect of the cloud-based environment in classes derived from the core class definition.
- a standard virtual machine class definition e.g., a “std.VM” class
- the compiler would have access to a translation rule mapping the core class definition to a set of provisioning API calls made to the VM manager in the kernel layer of the cloud-service provider 104 for deploying a standard virtual machine image.
- a default set of parameters e.g., duplicate count, IP address, memory requirement, etc.
- the protocol for modifying the API calls can include protocols for changing the default parameter values according to the parameter values specified in the specification configuration and in intermediate class definitions that are derived from the standard virtual machine class definition.
- the translation protocols would specify how the additional API calls for installing software packages on a designated virtual machine should be added to the group of API calls associated with configuring the standard virtual machine image.
- the protocols for translating class definitions to API calls are written as program scripts. As new core class definitions are added to the class definition database 406 , the protocol for translating the new class definition can be created and added to the translation rules database 408 .
- the translation protocols can be created, for example, by the cloud-service provider 104 .
- the API translator 404 when encountering a particular class definition in parsing a received configuration specification, the API translator 404 locates and runs a corresponding script to parse the class definition into a set of API calls.
- the API calls when executed, cause the configuration specified by the class definition to be achieved in the cloud-based environment.
- the API calls 410 generated by the API translator 404 are sent to a service launcher component 412 of the cloud-service manager 222 .
- the service launcher component 412 is responsible for channeling the API calls 410 to various layers of the cloud-service environment or components of the cloud-service provider 104 where the API calls can be executed.
- the service launcher component 412 is also responsible in checking the order by which the API calls are sent out to the layers and/or components for execution, and verify that the API calls have been completed in a proper sequence.
- class definitions written in an object-oriented specification language as disclosed in this specification can be reused in multiple configuration specifications
- an administrator user of a cloud service may wish to employ class definitions provided by a third party (e.g., another user, a service developer of the cloud-service provider, or third-party developers) in their own configuration specifications, rather than developing those class definitions by themselves.
- a marketplace for sharing/sale and selection of existing configuration specifications and reusable class definitions can be provided, for example, by the cloud-service provider or a third-party provider.
- the cloud-service provider 104 provides such a platform for the sharing of reusable configuration specification and class definitions.
- the frontend of the cloud-service provider provides a definition submission user interface and a definition selection interface to facilitate the sharing of reusable configuration specifications and class definitions.
- the parties that provide the configuration specifications and class definitions for reuse by others serve as definition suppliers 414 for the cloud-service provider 104 .
- the potential definition users include administrative users of cloud-based services.
- the potential definition users also, optionally, include definition suppliers who will create new reusable class definitions or class definitions for submission based on the existing class definitions provided by other definition suppliers.
- the cloud-service manager 222 of the cloud-service provider 104 can serve to manage the platform for sharing reusable class definitions 416 .
- the definition suppliers 414 submit reusable class definitions 416 to the cloud-service manager 222 through the definition submission user interface provided by the frontend 120 .
- Each class definition submission can include multiple reusable class definitions 416 , such as in a class module.
- Each class definition in the submission is accompanied by descriptions of the initial configuration state that the class definition can accomplish if subsequently used in a configuration specification.
- the description also includes instructions on how the class parameters in the class definition can be subsequently modified in configuration specifications to suit the needs of particular deployments.
- the cloud-service manager 222 can store the received class definitions in a class definition database (e.g., the definition database 406 ).
- the frontend 120 provides registration and authentication services for the definition suppliers 414 .
- Each class definition or class module received from a registered definition supplier 414 is stored in association with the identifier of the definition supplier, such that the definition supplier 414 can be properly credited when the class definition is subsequently used or purchased by a definition user.
- the definition suppliers 414 can provide reusable class definitions 416 for free or for a cost.
- the cloud-service manager 222 can facilitate the sale or license of the reusable class definitions to the potential definition users (e.g., administrative users of the cloud-service customers) through the definition sharing platform.
- the definition supplier 414 provides and the cloud-service manager stores respective prices associated with the sale or licenses for different usage levels for the reusable class definitions provided by the definition suppliers 414 .
- the cloud-service manager 222 provides a definition selection user interface over the frontend 120 .
- the definition selection user interface presents the class definitions that are available for reuse, such as in defining new class definitions.
- the new class definitions include those included in the configuration specification of a new deployment and, optionally, those that are submitted to the cloud-service provider for reuse by others.
- the potential definition users e.g., administrative users of the cloud-service customers and definition suppliers
- potential definition users provide the definition selection user interface with criteria that specify a configuration to be deployed.
- the criteria can include one or more class definitions.
- the cloud-service manager 222 processes the criteria and provides, to the user, collections of class definitions satisfying the criteria.
- a collection of class definitions can include additional class definitions that are not explicitly specified in the criteria as long as the additional class definitions are compatible with class definitions specified in the criteria.
- the collections of class definitions can be ranked using methods further described below in FIGS. 16 , 17 , and 20 . If the user selects a collection of class definitions, the cloud-service manager 222 identifies a configuration specification associated with the collection of class definitions and deploys the configuration specification to the cloud environment of the cloud-service provider 104 .
- definition selection user interface allows the user of the class definitions to download or copy a reusable class definition available for selection.
- the user does not have to copy or download the class definition, and can use the class definitions by simply identifying the module and class name in a configuration specification submitted to the cloud-service provider for deployment.
- the cloud-service manager 222 will identify and locate the class definitions that are referenced in the specification file, and keep track of the usage of the class definition.
- the reuse involves an entire module (e.g., the “lamp” module shown in FIG. 3B ), where the module includes a collection of multiple interrelated class definitions for configuring a cloud component that includes multiple sub-components.
- the class definitions or class modules are categorized based on the type of components they model.
- the definition selection interface allows the potential users of the class definitions to search or review available class definitions by categories, functions, definition suppliers, and other attributes associated with the class definitions and modules.
- the cloud-service provider 104 or a third party provider also provides a platform for software suppliers 418 to provide software solutions accompanied by multiple alternative configuration specifications or alternative collections of class definitions for configuring the software solutions.
- a personnel management program can be accompanied by configuration specifications that are tailored for cloud-service customers that have different scale, needs, and internal infrastructures.
- the cloud-service customer purchases or licenses the software solution for deployment in the cloud environment of the cloud-service provider 104 , the cloud-service customer can choose the configuration specification that best suits its needs.
- the service manager 222 can receive submissions of software solutions with accompanying configuration specifications (e.g., either as configuration specifications or modules of reusable class definitions) through a software submission user interface provided through the frontend 120 .
- the software submission user interface includes registration and authentication capabilities, such that each submission of a configuration-wrapped software solution 420 is stored in association with the software provider that submitted the configuration-wrapped software solution 420 .
- the cloud-service provider 104 can provide the configuration-wrapped software solutions in a software selection interface to the cloud-service customers through the frontend 120 .
- the software selection interface can also provide the descriptions of the different configuration specifications accompanying each software solution.
- a user e.g., an administrative user of an cloud-based application service
- the cloud service provider 104 can launch the software solution in the cloud-based environment according to the selected configuration specification, with or without additional customizations.
- the cloud-service provider 104 facilitates the accounting (e.g., by an accounting component 426 ) for the sale and purchase of the reusable configuration specifications, reusable class definitions, and configuration-wrapped software solutions that are accomplished through the platforms provided by the cloud-service provider 104 .
- the cloud-service provider does not need to directly provide these platforms, but provide accounting services (e.g., by the accounting component 426 ) to the user and provider of the reusable configuration specifications, reusable class definitions, and configuration-wrapped software solutions based on actual usage that has occurred in the cloud environment of the cloud-service provider 104 .
- the cloud-service manager 222 includes a service monitor 422 .
- the service monitor 422 monitors the statuses of the cloud-services that have been deployed in the cloud environment of the cloud-service provider 104 .
- the statuses monitored by the service monitor 422 include, for example, the virtual resources that are employed for each component of a cloud-based deployment, the usage level of the virtual resources, the cloud-services that are employed by each component of the cloud-based deployment, the usage level of the cloud-services.
- the service monitor 422 can compute performance metrics associated with each cloud-based deployment based on the statuses of the virtual resources and the cloud-based services that are associated with the deployment.
- the performance metrics include, for example, the number of user requests received, the latency associated with the responses, the availability of the virtual resources and services, the failure rate of each virtual resource or service, the fault tolerance level of the virtual resources and services, and so on.
- the performance metrics is stored in a performance data store 424 of the cloud-service manager 222 .
- cloud-based deployments can be carried out according to configuration specifications written in an object-oriented specification language, where the configuration specifications include class definitions that model different aspects of the cloud-based deployments at different levels of abstraction.
- the cloud-service manager 222 processes a configuration specification into a set of class definitions, the cloud-service manager 222 is able to track the hierarchy of class definitions that have influenced the configuration of each of those different aspects of the deployment. Further, the cloud-service provider is able to associate the virtual resources and services that are dedicated to the different aspects of the cloud-based deployment to the different class hierarchies that have influenced the configuration of those aspects of the cloud-based deployment.
- the object-oriented specification language allows performance metrics to be derived for each of these different aspects based on the status and performance of the virtual resources and services that contribute to the performance of the aspect of the cloud-based deployment.
- the performance associated with each aspect of the cloud-based deployment is associated with the class definitions that are involved in configuring that aspect of the cloud-based deployment. Then, the performance associated with a class definition can be used as a factor in determining a quality measure for the class definition. If a class definition is used in configuring multiple cloud-based deployments, the aggregated performance associated with the class definition can be used to assess the quality of the class definition.
- the service-cloud manager 222 when the service-cloud manager 222 deploys the Mantis and MySQL software applications and the firewall service in the Mantis application deployment according the “MantisDeployment” class definition 354 and all the base classes on which the “MantisDeployment” class definition 354 depends, the service manager 222 can monitor the respective performances of the software roles, the firewall service, and the underlying virtual machines supporting the software roles.
- the cloud-service manager 222 can associate the respective performances of the frontend role with the classes that influenced the configuration of the frontend component of the Mantis deployment, associate the respective performance of the firewall component with the classes that influenced the configuration of the firewall component, associate the respective performance of the virtual machines underlying the frontend role with the classes that influenced the configuration of the frontend virtual machines, and so on, for example.
- the cloud-service manager 222 can generate a system block diagram of the cloud-based deployment according to the configuration specification writing in the object-oriented specification language.
- the nature of the infrastructural components, storage, services, software roles, as well as their interrelationships (e.g., dependencies and connectivity) and reconfiguration triggers can be identified from the class definitions in the configuration specification and represented as corresponding elements in the system block diagram of the deployment.
- the basic system block diagram can be created when the configuration specification is parsed by the API translator 404 , for example.
- FIG. 5 shows the block diagram 500 that can be created based on the deployment specification 340 shown in FIG. 3C .
- the cloud-service manager 222 recognizes from the “MantisDeployment” class definition 354 that there are two software roles and a firewall involved in the deployment, e.g., the software roles modeled by the “MantisFrontendRole” and the “MantisDatabaseRole” class definitions and a firewall modeled by the “MatisFirewall” class definition. Therefore, the cloud-service manager 222 can add a block 504 for the frontend role, a block 506 for the database role, as well as a block 508 for the firewall service within a block 502 representing the Mantis application deployment.
- the cloud-service manager 222 determines that the software application serving the frontend role is to be deployed according to the class definition of the “mantis_frontend” class. The cloud-service manager 222 therefore adds a block 510 within the block 504 , to represent the frontend software that is serving the frontend role. Similarly, from the class definition of the “MantisDatabaseRole” class, the service manager 222 determines that the software application serving the database role is to be deployed according to the class definition of the the “mantis_backend” class. Therefore, the service manager adds a block 512 within the block 506 , to represent the backend database software that is serving the database role.
- the frontend role and the database role are connected to each other.
- the firewall is connected to the frontend role. Therefore, the cloud-service manager 222 can insert a connection 514 between the block 504 and the block 506 , to represent the connectivity relationship between the frontend role and the database role.
- the cloud-service manager 222 also inserts a connection 516 between the block 504 and the block 508 , to represent the connectivity relationship between the frontend role and the firewall.
- the cloud-service manager 222 determines from the class definition 330 of the “FrontendRole” class that, the frontend software (e.g., the Mantis software) is to be installed on a virtual machine modeled by the “FrontendVM” class definition 324 .
- the frontend software e.g., the Mantis software
- the “MantisDatabaseRole” class definition 350 extends from the “DatabaseRole” class definition 332 , and the cloud-service manager 222 determines from the class definition 332 of the “DataBaseRole” class that, the backend database software (e.g., the MySQL database software) is to be installed on the same virtual machine as the frontend role software. Based on the above information, the service manager 222 adds a block 518 under the blocks 504 and 506 , to represent the underlying virtual machine for the frontend role and the database role.
- the backend database software e.g., the MySQL database software
- the cloud-service manager 222 determines that a persistent disk is connected to the database role by a mount point on the underlying virtual machine.
- the persistent disk is deployed according to the specification specified in the “MysqlPD” class definition 328 . Therefore, the service manager 222 adds a block 520 to the block 502 representing the mantis deployment, and adds a connection 522 to represent the connectivity relationship between the database software, its underlying virtual machine, and the permanent disk.
- the service manager 222 can also record identifiers associated with the underlying infrastructure components (e.g., process IDs or identifiers of the virtual machines and other virtual resources) for each block or connection represented in the block diagram 500 .
- the cloud-service manager 222 monitors the statuses of the underlying virtual resources and services for the deployment, the cloud-service manager 222 optionally determines the performance or usage metrics for each component (e.g., blocks and connections) represented in the block diagram 500 .
- the cloud-service manager 222 can also optionally represent the performances and usage of the different component in the system block diagram 500 .
- visualization of the performances and usage of these different components of the deployment and their changes over time can be shown on the block diagram 500 .
- the cloud-service manager 222 can present the performance and usage statistics in a visual form on the block diagram in a management interface of the cloud services for each cloud-service user.
- the performance and usage statistics can be represented as a histogram or pie chart that dynamically changes according to the actual conditions of the components in the cloud environment.
- the cloud-service provider bills the cloud-service customers according to the performance and usage statistics.
- the configuration specification optionally includes programmatically triggered reconfiguration requests.
- the configuration specification for a component can specified that when a particular monitored parameter reaches a specified threshold value, the cloud-service manager 222 is to scale the provisioned virtual machine or services by a specified amount.
- the class definition of the persistent disk class e.g., the “MysqlPD” class definition
- the class definition of the “frontendVM” class can request that when the latency of the frontend role is more than one second, the “replica-count” parameter of the FrontendVM is to be increased by one; and so on.
- the object-oriented specification language allows the configuration of each component in a cloud-based deployment to be specified by a respective set of class definitions.
- the service manager is able to identify the components of the deployment, and identify all of the base classes whose class parameters contributed to or influenced the configuration state of the component.
- the performance of each component is associated with the class definitions that contributed to the configuration of that component. If a class definition contributed to the configuration of multiple components in multiple deployments, the performance of these multiple components in the multiple deployments can all be associated with that class definition.
- the quality of the class definition can be assessed based at least in part on the aggregated performance of all of the multiple components in the multiple deployments.
- the cloud-service manager keeps track of the usage of each class definition in the cloud-based environment and charges the cloud-service users that have used the class definition in their deployments.
- the amount of charge billed to the users is based on the amount of usage the user has accrued for the class definition in all of the deployments the user has requested.
- the cloud-service manager 222 can record a credit to the third-party definition provider for each use of the class definition provided by the third-party definition provider.
- the cloud-service manager 222 when parsing the configuration specification for the Mantis application deployment shown in FIG. 3C , the cloud-service manager 222 records that the Mantis frontend component 504 is deployed according to the “MantisFrontendRole” class definition 348 , which extends the “lamp.FrontendRole” class definition 330 , uses the “mantis_frontend” class definition for software configuration, and the “MantisPackage” class definition 346 to identify the location of the software package, and is connected to the “MantisDatabaseRole” class 350 .
- the service manager 222 determines that the “lamp.FrontendRole” class definition 330 further extends from the “std.Role” class definition, uses the “FrontendVM” class definition 324 , and that the “FrontendVM” class definition 324 extends from the “utils.ConfiguratorLAMP” class definition.
- the cloud-service manager 222 can continue to identify the class definitions that are involved in the configuration of the frontend role component of the deployment by tracing the class hierarchies connected to the “MantisFrontendRole” class definition 348 , until the most fundamental sets of class definitions are identified. All of the class definitions that contributed to the configuration of the frontend role component are associated with the frontend role component for the deployment. A similar process can be carried out for each component of the deployment.
- the cloud-service manager 222 can record the usage of each class definition in configuring the deployment according to the number of times that the class definition is used in the deployment. In some implementations, multiple uses of a class definition is counted only once in each deployment or for each user, depending on the payment structure (e.g., fees per use license or per sale) established by the definition supplier of the class definition.
- each reused class definition in a marketplace of reusable class definitions, can be ranked against other reused class definitions according to the aggregate performance of the class definition in all the deployments that used the class definition.
- the performance of a deployment can be associated with each class definition that contributed to the configuration of the deployment, and used in evaluating the quality of the class definition.
- only performances of those components whose configurations are influenced by a class definition are associated with the class definition and used in evaluating the quality of the class definition.
- the cloud-service manager when the cloud-service manager identified multiple components in multiple deployments that are influenced by a virtual machine class definition, the aggregated performance of the multiple components are used in evaluating the quality of the virtual machine class definition.
- the cloud-service manager identifies all of the class definitions that contributed to the configuration of a frontend role component of a deployment, the performance associated with the frontend role component in the deployment will be associated with each of these identified class definitions.
- a quality score is calculated for each class definition based on the aggregated performance associated with all or multiple components or deployments that are configured based at least in part on the class definition.
- the quality score can be presented with the class definition in the definition selection interface provided by the cloud-service provider.
- multiple quality metrics can be calculated for each class definition based on, for example, the scales of the deployments that utilized the class definition, the weight or influence of the class definition in each deployment that utilized the class definition, the availability, fault tolerance, scalability, and failure rate of the components configured according to the class definition, the types of problems encountered, the modifications required to solve the encountered problems, explicit user feedback, and so on.
- one or more types of quality scores can be provided for each shared class definition and a potential definition user can browse the list of available shared class definitions based on the quality scores.
- FIG. 6 is a flow diagram of an example process 600 for processing a configuration specification written in an object-oriented specification language.
- An example of such a high-level object-oriented specification language is described in the examples shown in FIGS. 3A-3C .
- the example process 600 can be performed by a cloud-service provider (e.g., the cloud-service provider 104 shown in FIG. 1 ), such as by a cloud-service manager (e.g., the cloud-service manager 222 ) of the cloud-service provider.
- the cloud-service manager performs the process 600 by an API translator component (e.g., the API translator 404 in FIG. 4 ).
- a configuration specification for configuring a cloud-based deployment is received (e.g., by the API translator of a cloud-service provider) ( 602 ).
- the configuration specification is written in an object-oriented specification language and requires instantiation of class definitions of one or more classes.
- Each class models a respective data or functional component of the cloud-based deployment using a group of configurable class parameters.
- the respective class definition of each class represents a requested state of the data or functional component modeled by the class.
- a plurality of API calls for configuring the cloud-based deployment are derived based on the class definitions of the one or more classes ( 604 ).
- the API translator of the cloud-service provider causes the plurality of API calls to be executed to configure the cloud-based deployment ( 606 ).
- the one or more classes include at least an existing base class and at least a customized class extended from the existing base class.
- the customized class inherits respective class parameters of the existing base class and modifies a value of at least one of the class parameters inherited from the existing base class.
- the customized class inherits respective class parameters of the existing base class and includes at least one new class parameter not present in the existing base class.
- a modification of a base class propagates to deployments of configuration specifications that include the base class or classes that inherit the base class.
- the cloud-service provider can modify a base class. Once the base class is modified, the cloud-service provider propagates the modification to deployments having configuration specifications that include the base class or a class inheriting the base class.
- the propagation can trigger a redeployment for each configuration specification having a modified base class. For example, if a more improved solution is discovered for executing a functional component (e.g., a faster method of running a web server is discovered), the cloud-service provider can modify the base class for the functional component to implement the improved solution.
- the cloud-service provider identifies configuration specifications that include the base class or classes that inherit the base class. The cloud-service provider then redeploys these configuration specifications with the improved solution.
- the data or functional component modeled by each class is one of a virtual device supporting a cloud-based environment, a service utilized in the cloud-based environment, a software role performed by an installed application in the cloud-based environment, a data package holding data to be used during deployment or operation of the cloud-based environment, or a combination of one or more thereof.
- the object-oriented specification language supports dependency between class definitions, and a definition dependency between a first class and a second class represents a deployment dependency between respective components modeled by the first and the second class.
- the definition dependency between the first class and the second class is expressed by a class parameter of the first class where the class parameter of the first class refers to an instance of the second class.
- the object-oriented specification language supports connectivity between class definitions, and a value assignment linking an instance of a second class to a class parameter of a first class represents a connectivity between respective components modeled by the first class and the second class.
- FIG. 7 is a flow diagram of an example process 700 for deriving a block diagram showing a topology of a cloud-based deployment based on the configuration specification of the cloud-based deployment.
- the example process 700 can be performed by a cloud-service manager of a cloud-service provider (e.g., the cloud-service provider 104 shown in FIGS. 1 and 4 ).
- the cloud-service provider identifies, based on the respective class definitions of the one or more classes in a configuration specification, a plurality of data and functional components modeled by the one or more classes and one or more dependency and connectivity relationships existing among the plurality of data or functional components ( 702 ). Then, the cloud-service provider derives a block diagram of a cloud-based environment based on the identified plurality of data and functional components and the identified dependency and connectivity relationships ( 704 ). In some implementations, when deriving the block diagram, the cloud-service provider also represents trigger events for dynamic reconfiguration of the cloud-based environment in the block diagram.
- FIG. 8 is a flow diagram of an example process 800 for monitoring performance of cloud-based deployments and associating the performance with class definitions that are used in configuring the cloud-based deployments.
- the cloud-service provider identifies an aspect of the cloud-based deployments that are influenced by the class definition in terms the respective initial configuration state of the aspect ( 802 ).
- the cloud-service provider monitors one or more performance metrics associated with the identified aspect ( 804 ).
- the cloud-service provider associates the one or more performance metrics with the class definition ( 806 ).
- the cloud-service provider utilizes the one or more performance metrics in calculating a quality metric of the class definition ( 808 ).
- FIG. 9 is a flow diagram of an example process 900 for evaluating the quality of a reused class definition based on aggregated performance of multiple cloud-based deployments that were configured at least in part based on the reused class definition.
- the cloud-service provider identifies a plurality of cloud-based deployments each having been carried out according to a respective configuration specification written in the object-oriented specification language ( 902 ).
- the cloud-service provider then identifies at least one base class whose class definition is used in multiple of the plurality of cloud-based deployments ( 904 ).
- the cloud-service provider monitors respective performance of each of the multiple of the plurality of cloud-based deployments ( 906 ).
- the cloud-service provider then calculates a quality metric of the at least one base class based on aggregated performance of the multiple of the plurality of cloud-based deployments ( 908 ).
- the respective performance of each of the multiple of the plurality of cloud-based environment is a performance associated with a data or function component modeled by the at least one class.
- FIG. 10 is a flow diagram of an example process 1000 for deriving API calls for configuring a cloud-based deployment based on class definitions used in a configuration specification.
- the cloud-service provider stores respective class definitions of a plurality of core classes of the object-oriented specification language ( 1010 ).
- Each core class corresponds to a modular component of a cloud-based environment and each core class is extendable with additional class parameters to configure the respective modular component.
- the cloud-service provider also stores a mapping between each of the core classes and a respective group of API calls ( 1020 ).
- the respective group of API calls is for configuring the modular component associated with the core class according to the class parameters of the core class.
- the cloud-service provider also stores a plurality of protocols for modifying the respective groups of API calls associated with each core class to obtain a new group of API calls for a new class definition derived from the core class ( 1030 ).
- the cloud-service provider derives the plurality of API calls based on the respective groups of API calls associated with one or more of the plurality of core classes from which the one or more classes of the configuration specification are derived, and based on the plurality of protocols for modifying the respective groups of API calls.
- the plurality of protocols further includes rules for imposing an ordering of the groups of API calls according to dependency and connectivity relationships specified in class definitions written according to the object-oriented specification language.
- FIG. 11 is a flow diagram of an example process 1100 for providing a platform for sharing reusable class definitions.
- the example process 1100 can be performed by a cloud-service provider or a platform provider that does not provider cloud-based services.
- the cloud-service provider or platform provider receives a respective definition submission from each of a plurality of definition suppliers ( 1110 ).
- the respective definition submission includes one or more class definitions written in an object-oriented specification language.
- Each class definition models a data or functional component of a cloud-based deployment using a group of configurable class parameters and is extendable to create at least one new class definition by a modification to one or more of the group of configurable class parameters or an addition of one or more new class parameters.
- the cloud-service provider or platform provider then provides a user interface that presents the class definitions received from the plurality of definition suppliers, for review and selection by a plurality of definition users ( 1120 ).
- FIG. 12 is a flow diagram of an example process 1200 for configuring multiple distinct cloud-based deployments based on distinct configuration specifications that all use at least one common reusable class definition.
- the example process 1200 can be performed by a cloud-service provider, such as the example cloud-service provider 104 shown in FIG. 4 .
- the cloud-service provider receives a plurality of distinct configuration specifications written in the object-oriented specification language ( 1210 ).
- the plurality of distinct configuration specifications are each for configuring a distinct cloud-based deployment and including a distinct class definition that extends from the same one of the class definitions received from the plurality of definition suppliers.
- the cloud-service provider configures each of the distinct cloud-based deployments based at least on the same one of the received class definitions and the distinct class definition that extends therefrom in the distinct configuration specification of the distinct cloud-based deployment ( 1220 ).
- FIG. 13 is a flow diagram of an example process 1300 for charging definition users and crediting definition suppliers based on usage of the reusable class definitions provided by the definition suppliers.
- the cloud-service provider monitors usage of the class definition in a plurality of configuration specifications that have been used to configure a plurality of cloud-based deployments ( 1310 ).
- the cloud-service provider records, for each use of the class definition in the plurality of configuration specifications, a credit to a definition supplier of the class definition and a charge to a definition user associated with the use ( 1320 ).
- the usage of the class definition includes an instantiation of the class definition in a respective configuration specification that has been used to carry out a respective cloud-based deployment. In some implementations, the usage of the class definition includes an extension of the class definition to create a new class definition that is instantiated in a respective configuration specification used to carry out a respective cloud-based deployment.
- FIG. 14 is a flow diagram of an example process 1400 for providing a platform for selling “configuration-wrapped” software solutions.
- the process 1400 can be provided by a cloud-service provider or a platform provider that does not provide cloud-based services.
- the cloud-service provider or platform provider receives a software submission from a software supplier ( 1410 ).
- the software submission includes a software application to be deployed in a cloud-based environment and a plurality of distinct configuration specifications each for deploying the software application in the cloud-based environment in a distinct manner.
- the cloud-service provider or platform provider provides the plurality of distinct configuration specifications for review and selection by a software user ( 1420 ).
- FIG. 15 is a flow diagram of an example process 1500 for charging software users and crediting software providers based on the selection of configuration-wrapped software solutions by software users.
- the example process 1500 can be performed by a cloud-service provider (e.g., the cloud-service provider 104 shown in FIG. 4 ).
- the cloud-service provider receives selection of one of the plurality of distinct configuration specification by the software user ( 1510 ).
- the cloud-service provider deploys the software application in the cloud-based environment according to the selected distinct configuration specification ( 1520 ).
- the cloud-service provider records a charge to the software user and a credit to the software supplier based on a respective price associated the selected distinct configuration specification ( 1530 ).
- the cloud-service provider provides the respective performance metrics with each of the plurality of class definitions for user review in a selection user interface.
- FIG. 16 is a flow diagram of an example process 1600 for utilizing aggregated performance metrics of multiple cloud-based deployments in ranking reusable class definitions that have been used in configuring the multiple cloud-based deployments.
- the example process 1600 can be performed by a cloud-service provider (e.g., a cloud-service provider 104 shown in FIG. 4 ).
- the cloud-service provider provides a plurality of class definitions for selection ( 1610 ).
- Each class definition models a respective data or functional component of a cloud-based environment using a group of configurable class parameters.
- Each class definition supports instantiation and inheritance of the class definition in a configuration specification for a cloud-based deployment.
- the cloud-service provider also derives respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments, where the multiple cloud-based deployments had been carried out according to respective configuration specifications that require instantiation of the class definition or a new class definition derived from the class definition ( 1620 ). Then, the cloud-service provider utilizes the respective performance metrics associated with each of the plurality of class definitions in ranking the plurality of class definitions ( 1630 ).
- FIG. 17 is a flow diagram of an example process 1700 for categorizing reusable class definitions and ranking the reusable class definitions within their respective categories.
- the cloud-service provider categorizing the plurality of class definitions based on the respective data or functional components of the cloud-based environment modeled by the plurality of class definitions ( 1710 ). Then, the cloud-service provider ranks the plurality of class definitions within the class definitions' respective categories ( 1720 ).
- FIG. 18 is a flow diagram of an example process 1800 for associating performances of multiple cloud-based deployments with a class definition that was used to configure the multiple cloud-based deployments.
- the cloud-service provider identifies a plurality of cloud-based deployments that had been carried out according to respective configuration specifications that required instantiation of the class definition or at least one new class definition derived from the class definition ( 1810 ).
- the cloud-service provider monitors respective performances of the plurality of cloud-based deployments ( 1820 ).
- the cloud-service provider then associates the respective performances of the plurality of deployments with the class definition ( 1830 ).
- FIG. 19 is a flow diagram of an example process 1900 for deriving performance metrics associated with a reused class definition based on aggregated performance of multiple deployments.
- the cloud-service provider When deriving respective performance metrics associated with each of a plurality of class definitions based on aggregated performance of multiple cloud-based deployments, the cloud-service provider performs the example process 1900 .
- the cloud-service provider for each of the plurality of class definitions, identifies one or more data or functional components in the plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition ( 1910 ).
- the cloud-service provider identifies one or more performance metrics associated with the identified one or more data or functional components ( 1920 ).
- the cloud-service provider derives the respective performance metrics associated with the class definition by aggregating the identified one or more performance metrics ( 1930 ).
- the performance metrics include one or more measures of latency, reliability, scalability, availability, or security.
- FIG. 20 is a flow diagram of an example process 2000 for utilizing multiple factors in ranking reusable class definitions.
- the cloud-service provider tracks a respective count of cloud-based deployments that have been configured at least in part according to the class definition ( 2010 ).
- the cloud-service provider tracks a respective count of problems encountered in cloud-based deployments that have been configured at least in part according to the class definition.
- the cloud-service provider also tracks a number of required changes to resolve the problems encountered in the cloud-based deployments that have been configured at least in part according to the class definition.
- the cloud-service provider utilizes the respective counts associated with the plurality of class definitions in the ranking of the plurality of class definitions ( 2020 ).
- the cloud-service provider also utilizes the respective counts of the problems and the respective numbers of required changes associated with the plurality of class definitions in the ranking of the plurality of class definitions.
- the respective numbers of required changes associated with the plurality of class definitions are used to calculate respective weights given to the respective performance metrics associated with the plurality of class definitions in ranking the plurality of class definitions.
- Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.
- Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a computer storage medium for execution by, or to control the operation of, data processing apparatus.
- the program instructions can be encoded on a propagated signal that is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus.
- the computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.
- data processing apparatus encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers.
- the apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- the apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
- a computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- a computer program may, but need not, correspond to a file in a file system.
- a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code).
- a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output.
- the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer.
- a processor will receive instructions and data from a read only memory or a random access memory or both.
- the essential elements of a computer are a processor for performing or executing instructions and one or more memory devices for storing instructions and data.
- a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
- mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
- a computer need not have such devices.
- a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.
- PDA personal digital assistant
- GPS Global Positioning System
- USB universal serial bus
- Computer readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks.
- semiconductor memory devices e.g., EPROM, EEPROM, and flash memory devices
- magnetic disks e.g., internal hard disks or removable disks
- magneto optical disks e.g., CD ROM and DVD-ROM disks.
- the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
- a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
- a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
- keyboard and a pointing device e.g., a mouse or a trackball
- Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
- a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a
- Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components.
- the components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
- LAN local area network
- WAN wide area network
- the computing system can include clients and servers.
- a client and server are generally remote from each other and typically interact through a communication network.
- the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for selection of ranked configurations. In one aspect, a method includes providing a plurality of class definitions for selection, each class definition modeling a respective data or functional component of a cloud-based environment using a group of configurable class parameters, each class definition supporting instantiation and inheritance of the class definition in a configuration specification for a cloud-based deployment; deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments, wherein the multiple cloud-based deployments had been carried out according to respective configuration specifications that require instantiation of the class definition or a new class definition derived from the class definition; and utilizing the respective performance metrics associated with each of the plurality of class definitions in ranking the plurality of class definitions.
Description
- This application claims under 35 U.S.C. §119(e) the benefit of U.S. Provisional Application No. 61/453,478, filed Mar. 16, 2011, which is hereby incorporated by reference in its entirety.
- This specification relates generally to cloud computing.
- Cloud computing is a computing model developed to enable convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be provisioned and released quickly, dynamically, and with minimal manual management efforts and human interactions with the service providers.
- A few common cloud-based service models include, Software (e.g., commercially-available software applications) as a Service (SaaS), Platform (e.g., hosting environment of software applications, such as virtual machines or application frameworks) as a Service (PaaS), and Infrastructure (e.g., compute power, storage, database, networking services, etc.) as a Service (IaaS). Before a cloud-based service is made available to a cloud-service customer, various aspects of the service are configured according to a configuration specification, such that when the service is deployed, it meets the customer's needs and usage demand.
- This specification describes technologies relating to use and management of cloud computing environments.
- In general, another innovative aspect of the subject matter described in this specification can be embodied in methods that include the actions of: providing a plurality of class definitions for selection, each class definition modeling a respective data or functional component of a cloud-based environment using a group of configurable class parameters, each class definition supporting instantiation and inheritance of the class definition in a configuration specification for a cloud-based deployment; deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments, wherein the multiple cloud-based deployments had been carried out according to respective configuration specifications that require instantiation of the class definition or a new class definition derived from the class definition; and utilizing the respective performance metrics associated with each of the plurality of class definitions in ranking the plurality of class definitions.
- These and other embodiments can each optionally include one or more of the following additional features. Categorizing the plurality of class definitions based on the respective data or functional components of the cloud-based environment modeled by the plurality of class definitions; and ranking the plurality of class definitions within the class definitions' respective categories. Providing the plurality of class definitions for selection further comprises: providing the respective performance metrics with each of the plurality of class definitions for user review in a selection user interface. For each of the plurality of class definitions: identifying a plurality of cloud-based deployments that had been carried out according to respective configuration specifications that required instantiation of the class definition or at least one new class definition derived from the class definition; monitoring respective performances of the plurality of cloud-based deployments; and associating the respective performances of the plurality of deployments with the class definition. Deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments further comprises: for each of the plurality of class definitions: identifying one or more data or functional components in the plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition; identifying one or more performance metrics associated with the identified one or more data or functional components; and deriving the respective performance metrics associated with the class definition by aggregating the identified one or more performance metrics.
- These and other embodiments can each optionally include one or more of the following additional features. The performance metrics include one or more measures of latency, reliability, scalability, availability, or security. For each of the plurality of class definitions: tracking a respective count of cloud-based deployments that have been configured at least in part according to the class definition; and utilizing the respective counts associated with the plurality of class definitions in the ranking of the plurality of class definitions. For each of the plurality of class definitions: tracking a respective count of problems encountered in cloud-based deployments that have been configured at least in part according to the class definition; and tracking a number of required changes to resolve the problems encountered in the cloud-based deployments that have been configured at least in part according to the class definition; and utilizing the respective counts of the problems and the respective numbers of required changes associated with the plurality of class definitions in the ranking of the plurality of class definitions.
- These and other embodiments can each optionally include one or more of the following additional features. The respective numbers of required changes associated with the plurality of class definitions are used to calculate respective weights given to the respective performance metrics associated with the plurality of class definitions in ranking the plurality of class definitions. Receiving a respective definition submission from each of a plurality of definition suppliers, wherein the respective definition submission includes one or more class definitions written in a specification language, and each class definition models a data or functional component of a cloud-based deployment using a group of configurable class parameters and is extendable to create at least one new class definition by a modification to one or more of the group of configurable class parameters or an addition of one or more new class parameters; providing a user interface that presents the class definitions received from the plurality of definition suppliers, for review and selection by a plurality of definition users. Receiving a plurality of distinct configuration specifications written in the specification language, the plurality of distinct configuration specifications each for configuring a distinct cloud-based deployment and including a distinct class definition that extends from a same one of the class definitions received from the plurality of definition suppliers; and configuring each of the distinct cloud-based deployments based at least on the same one of the received class definitions and the distinct class definition that extends therefrom in the distinct configuration specification of the distinct cloud-based deployment.
- These and other embodiments can each optionally include one or more of the following additional features. For each of the received class definitions: monitoring usage of the class definition in a plurality of configuration specifications that have been used to configure a plurality of cloud-based deployments; and recording, for each use of the class definition in the plurality of configuration specifications, a credit to a definition supplier of the class definition and a charge to a definition user associated with the use. The usage of the class definition includes an instantiation of the class definition in a respective configuration specification that has been used to carry out a respective cloud-based deployment. The usage of the class definition includes an extension of the class definition to create a new class definition that is instantiated in a respective configuration specification used to carry out a respective cloud-based deployment. Receiving a software submission from a software supplier, the software submission including a software application to be deployed in a cloud-based environment and a plurality of distinct configuration specifications each for deploying the software application in the cloud-based environment in a distinct manner; and providing the plurality of distinct configuration specifications for review and selection by a software user. Receiving selection of one of the plurality of distinct configuration specification by the software user; deploying the software application in the cloud-based environment according to the selected distinct configuration specification; and recording a charge to the software user and a credit to the software supplier based on a respective price associated the selected distinct configuration specification. Receiving, from a user, input selecting a first class definition that models a first data or functional component of the cloud-based environment; identifying one or more collections of class definitions, wherein each collection of class definitions includes the first class definition and at least one additional class definition that models a respective data or functional component other than the first data or functional component; and providing, to the user, the one or more collections of class definitions for selection.
- These and other embodiments can each optionally include one or more of the following additional features. For each of the one or more collections of class definitions: identifying one or more data or functional components in a plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition; identifying one or more performance metrics associated with the identified one or more data or functional components; and deriving the respective performance metrics associated with the collection of class definitions by aggregating the identified one or more performance metrics. Receiving a selection of a collection of class definitions; identifying a configuration specification associated with the collection of class definitions; and configuring a cloud-based deployment based on the configuration specification.
- In general, another innovative aspect of the subject matter described in this specification can be embodied in methods that include the actions of: modifying one or more base classes whose class definition is used in multiple of the plurality of cloud-based deployments, wherein the base classes model a respective data or functional component of a cloud-based environment using a group of configurable class parameters, and the base classes support instantiation and inheritance of the class definition; identifying a plurality of cloud-based deployments each having been carried out according to a respective configuration specification, the respective configuration specification written in a specification language, and the respective configuration specification including the modified base classes or classes that inherit the modified base classes; and reconfiguring, for each cloud-based deployment, the cloud-based deployment based on the one or more modified base classes.
- These and other embodiments can each optionally include one or more of the following additional features. The data or functional component modeled by each class is one of a virtual device supporting a cloud-based environment, a service utilized in the cloud-based environment, a software role performed by an installed application in the cloud-based environment, a data package holding data to be used during deployment or operation of the cloud-based environment, or a combination of one or more thereof. The specification language supports dependency between class definitions, and a definition dependency between a first class and a second class represents a deployment dependency between respective components modeled by the first and the second class. The definition dependency between the first class and the second class is expressed by a class parameter of the first class where the class parameter of the first class refers to an instance of the second class. The specification language supports connectivity between class definitions, and a value assignment linking an instance of a second class to a class parameter of a first class represents a connectivity between respective components modeled by the first class and the second class. The specification language is object-oriented.
- Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods. A system of one or more computers can be so configured by virtue of software, firmware, hardware, or a combination of them installed on the system that in operation cause the system to perform the actions. One or more computer programs can be so configured by virtue having instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.
- Particular embodiments of the subject matter described in this specification can be implemented so as to realize one or more of the following advantages.
- A high-level object-oriented specification language allows configurable components of a cloud-based deployment to be modeled by a class definition that includes a group of configurable class parameters. The object-oriented specification language supports extension of an existing base class definition to create new class definitions, and supports inheritance of class parameters from the existing base class definition by the new class definitions. An administrative user of a cloud-based service can customized a cloud-based deployment based on class definitions used in configuring one or more generic deployments, such as by modifying class parameter values of the class definitions, varying interrelationships between the classes, and supplementing existing class parameters with new class parameters.
- The object-oriented specification language allows multiple layers of abstraction to be made on the different types of cloud-service components that are configurable. For example, the high-level object-oriented specification language not only supports class definitions that model hardware and virtual resources, but also software roles and service roles served by software applications and services in a cloud-based deployment. In addition, the object-oriented specification language provides syntax for specifying dependency and connectivity between classes. Cloud components that involve multiple sub-components and complex structures can be modeled by class definitions that refer to multiple types of base classes and specify respective interrelationships between the base classes.
- A configuration specification can rely on existing class definitions to configure some aspects of a cloud-deployment at a high level of abstraction, while customizing other aspects at a more detailed level using newly derived class definitions. An administrative user of a cloud-based service is able to control the level of customization for a cloud-based deployment by choosing an appropriate set of class definitions to include and instantiate in the configuration specification for the cloud-based deployment.
- In addition, the object-oriented specification language allows many class definitions that model common or special purpose cloud-service components to be created and stored. These stored class definitions can be extended or reused as is in configuration specifications of future deployments by different cloud-service customers. This reuse of class definitions in specification configurations can improve the speed and efficiency of the deployment process.
- Because class definitions can be reused and shared among many cloud-service customers, the efforts for developing suitable configuration specifications for the same or similar purposes do not have to be duplicated by the cloud-service customers. A marketplace for sharing reusable class definitions can be developed, such that a cloud-service customer can choose to purchase or license the use of existing class definitions developed and provided by other cloud-service customers for a fee. In addition, software applications can be provided with different types of configuration specifications (i.e., as “config-wrapped” software solutions) that are suitable for different usage demands and organizational infrastructures of the cloud-customers.
- When a configuration specification of a cloud-based deployment is written in the object-oriented specification language, the cloud-service provider is able to parse the configuration specification to identify the class definitions that are involved in configuring each data or functional component of the cloud-based deployment. Further, when the deployment is carried out according to the configuration specification, the cloud-service provider is also able to identify the underlying software or virtual resources associated with each of the data or functional components of the deployment. Therefore, the object-oriented specification language enables the cloud service provider to monitor the performance of the data and functional components of the cloud-based deployment, and associate the performance with the class definitions that are used to configure each of the data and function components. Thus, the cloud-service provider can provide guidance to the cloud-service customers on which parts of the configuration specification needs to be modified to improve the performance of the deployment.
- In some implementations, the cloud-service provider can generate a block diagram for the cloud-based deployment based on the configuration specification. The performance of the different components of the deployment can be visually represented on the block diagram. Various reconfiguration triggers specified in the configuration specification can also be represented in the block diagram. This visual representation allows an administrator of the cloud-based deployment to adjust the configuration parameters of the deployment timely and appropriately.
- The object-oriented specification language allows class definitions to be reused in multiple configuration specifications, and potentially by multiple cloud-service customers. The cloud-service provider can track the performances of multiple cloud-based deployments that have been configured using configuration specifications involving reused class definitions. For each reused class definition, the cloud-service provider can evaluate the quality of the class definition based on the aggregated performance of the multiple deployments that have been configured using the class definition. In a marketplace for sharing reusable class definitions, a ranking or quality scores of the class definitions based on the quality of the class definitions can be provided. This ranking or quality scores help cloud-service customers to better select the class definitions to reuse in their own cloud-based deployments. The ranking or quality scores may also help providers of reusable class definitions to improve their class definitions.
- The details of one or more embodiments of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
-
FIG. 1 illustrates an example cloud-computing environment. -
FIG. 2A shows an example of a conventional configuration specification for a cloud-based deployment. -
FIG. 2B illustrates a resulting topology of the cloud-based deployment configured according to the configuration specification shown inFIG. 2A . -
FIG. 3A is an example configuration specification written in an example object-oriented specification language. -
FIG. 3B is an example module that includes reusable class definitions written in the example object-oriented specification language. -
FIG. 3C is an example configuration specification that utilizes the reusable class definitions shown inFIG. 3B . -
FIG. 4 is a block diagram of an example cloud-service manager of an example cloud-service provider. -
FIG. 5 is a block diagram showing a topology of an example cloud-based deployment configured according to the configuration specification shown inFIG. 3C . -
FIG. 6 is a flow diagram of an example process for processing a configuration specification written in an object-oriented specification language. -
FIG. 7 is a flow diagram of an example process for deriving a block diagram showing a topology of a cloud-based deployment based on the configuration specification of the cloud-based deployment. -
FIG. 8 is a flow diagram of an example process for monitoring performance of cloud-based deployments and associating the performance with class definitions that are used in configuring the cloud-based deployments. -
FIG. 9 is a flow diagram of an example process for evaluating the quality of a reused class definition based on aggregated performance of multiple cloud-based deployments that were configured at least in part based on the reused class definition. -
FIG. 10 is a flow diagram of an example process for deriving API calls for configuring a cloud-based deployment based on class definitions used in a configuration specification. -
FIG. 11 is a flow diagram of an example process for providing a platform for sharing reusable class definitions. -
FIG. 12 is a flow diagram of an example process for configuring multiple distinct cloud-based deployments based on distinct configuration specifications that all use at least one common reusable class definition. -
FIG. 13 is a flow diagram of an example process for charging definition users and crediting definition suppliers based on usage of the reusable class definitions provided by the definition suppliers. -
FIG. 14 is a flow diagram of an example process for providing a platform for selling “configuration-wrapped” software solutions. -
FIG. 15 is a flow diagram of an example process for charging software users and crediting software providers based on the selection of configuration-wrapped software solutions by software users. -
FIG. 16 is a flow diagram of an example process for utilizing aggregated performance metrics of multiple cloud-based deployments in ranking reusable class definitions that have been used in configuring the multiple cloud-based deployments. -
FIG. 17 is a flow diagram of an example process for categorizing reusable class definitions and ranking the reusable class definitions within their respective categories. -
FIG. 18 is a flow diagram of an example process for associating performances of multiple cloud-based deployments with a class definition that was used to configure the multiple cloud-based deployments. -
FIG. 19 is a flow diagram of an example process for deriving performance metrics associated with a reused class definition based on aggregated performance of multiple deployments. -
FIG. 20 is a flow diagram of an example process for utilizing multiple factors in ranking reusable class definitions. - Like reference numbers and designations in the various drawings indicate like elements.
- In a cloud computing environment, cloud-service customers (e.g., end users or enterprises) obtain access to software, platform, and/or infrastructure services through one or more networks (e.g., the Internet). The cloud-service customers are able to scale the service level (e.g., in terms of service type, quality, and amount) up and down as needed, for example, through configuration user interfaces provided by the cloud-service providers, and/or through programmably-established configuration specifications stored at the cloud-service providers. Correspondingly, a cloud-service provider pools resources and serves its customers via a multi-tenant model, where physical and virtual resources are assigned and reassigned, configured and reconfigured according to customer demands. The locations of the physical resources underlying the cloud infrastructure are not exposed to the cloud-service customers and can change dynamically.
-
FIG. 1 is a block diagram illustrating an example cloud-computing environment 100. In the example cloud-computing environment 100, cloud-service customers (e.g.,service customers service provider 104 using a customer device through one ormore networks 106. The cloud-service customers include end users of software applications provided by the cloud-service provider 104, such as in a “Software as a Service” (SaaS) model. The cloud-service customer can also include enterprise customers that receive platform and/or infrastructure services from the cloud-service provider 104, such as in the “Platform as a Service” (PaaS) and/or “Infrastructure as a Service” (IaaS) models. The software application services, platform services, and infrastructure services provided by the cloud-service provider 104 are developed by in-house or third-party service developers 108, and made available to the cloud-service customers through the cloud-service provider 104. A cloud-service customer may employ more than one type of services from the cloud-service provider 104. - In one example, the cloud-
service provider 104 is conceptually structured in multiple layers. The lowest layer is the firmware andhardware layer 110 on which other layers of the cloud-service provider 104 are built. The firmware andhardware layer 110 includes generic contributing nodes (e.g., data centers, computers, and storage devices) geographically distributed across the Internet and provide the physical resources for implementing the upper layers of thecloud service provider 104. - Above the firmware and
hardware layer 110 is thesoftware kernel layer 112. Thesoftware kernel layer 112 includes theoperating system 111 and/orvirtual machine manager 113 that host the cloud infrastructure services provided by the cloud-service provider 104. Thesoftware kernel layer 112 controls and communicates with the underlying firmware andhardware layer 110 through one or more hardware/firmware-level application programming interfaces (APIs). The hardware/firmware-level APIs can be provider-specific and implemented to support Hypertext Transfer Protocol (HTTP) and HTTP Secure (HTTPS) based communications protocols. Examples of provider-specific APIs include Amazon Web Services APIs, Google App Engine APIs, and Microsoft SQL Azure APIs. - The infrastructure services provided by the cloud-
service provider 104 include virtualized resources, such as virtual machines, virtual storage (e.g., virtual disks), virtual network appliances (e.g., firewalls), and so on. The infrastructure servicers also include virtualized services, such as database services, networking services, file system services, web hosting services, load balancing services, MapReduce services, message queue services, map services, e-mail services, and so on. Each of these infrastructure services can be employed by a cloud-service customer and deployed in aninfrastructure service layer 114 above thesoftware kernel layer 112. - The scale and various aspects (e.g., data, connectivity, and dependency relationships within and between service components) of an infrastructure service deployment are configurable by an administrator user of the cloud-service customer. In one example, the administrator user submits a configuration specification to the cloud-
service provider 104 via afrontend interface 120 of the cloud-service provider 104. The cloud-service provider 104 translates the configuration specification into instructions (e.g., API calls) to theinfrastructure service layer 114 and thekernel layer 112 according to the APIs of the involved infrastructure services and the APIs of the underlyingsoftware kernel layer 112. These instructions are executed to provision and configure the infrastructure services requested in the configuration specification of the deployment. For example, a configuration specification can be translated into infrastructure and kernel level APIs calls that create, re-create, move, or delete components (e.g., virtual machines and services) and assign or change attributes (e.g., memory and CPU allocations, network settings, disk sizes and volumes) of the components. - In addition to the infrastructure services, the example cloud-
service provider 104 also provide platform services, such as an environment (e.g., Linux, Solaris, Microsoft Windows, etc.) for running virtual machines or a framework (e.g., .NET, Java, Oracle Database, etc.) for developing and launching a particular type of software applications. The platform services are implemented in aplatform service layer 116 over theinfrastructure service layer 114, and can employ one or more infrastructure services configured in a particular manner. Configuration of platform services can be accomplished by program code written according to the APIs of the platform services and, optionally, the APIs of the infrastructure services that are employed in enabling the platform services. - In this example, the cloud-
service provider 104 also provides software application services in anapplication service layer 118. A software application (e.g., a commercially-available software application) can be installed on one or more virtual machines or deployed in an application framework in theplatform service layer 116. The software application can also communicate with one or more infrastructure service components (e.g., firewalls, databases, web servers, etc.) in theinfrastructure layer 114. The installation and configuration of the software application in theapplication service layer 118 can be accomplished through APIs of the software itself and the APIs of the underlying platform and infrastructure service components. - To manage the deployment and operation of the cloud-based services provided to the cloud-service customers (e.g., 102 a, 102 b, 102 c), the example cloud-
service provider 104 includes a cloud-service manager 122. The example cloud-service manager 122 communicates with thefrontend interface 120 to receive service requests from the cloud-service customers. The example cloud-service manager 122 is further responsible for the managing of the cloud resources and services, including service enrollment, provisioning, coordination, monitoring, scheduling, etc. As described in this specification, the example cloud-service manager 122 also includes tools and libraries for translating the user requirements (e.g., as expressed in one or more configuration specifications and service level agreements (SLAs)) in the different service layers (e.g., thelayers - Although the example cloud-
service provider 104 provides all three types of cloud-based services, in some implementations, fewer or more types of services may be provided. In some implementations, the cloud-service provider 104 may outsource some of the cloud services or portions of a service to other cloud-service providers. The cloud-service manager 120 may implement API calls to these other cloud-service providers for supporting some of its services to the cloud-service customers. In addition, the conceptual layers of the cloud-service provider 104 shown inFIG. 1 are merely illustrative. Other conceptual structure of a cloud-service provider may be provided, for example, depending on the types of services actually offered by the cloud-service provider. - In this example, the cloud-service customers can employ cloud-based services offered in each of the services layers 114, 116, and 118. Depending on the type of services that a cloud-service customer has employed, the cloud-service customer is granted different levels of control in configuring the services. For example, if a software application service is employed, an administrator user of the cloud-service customer is given control over how the software application is configured, but controls over the underlying platform and infrastructure services supporting the software application remains with the cloud-
service provider 104. If a platform service is employed, an administrative user of the cloud-service customer is given control over how the platform and/or application frameworks are configured, but the control over the infrastructure services that support the platform and/or application frameworks remains with the cloud-service provider 104. Similarly, if infrastructure services are employed, an administrative user of the cloud-service customer is given control over the particular infrastructure services employed, but not theunderlying kernel layer 112 and firmware andhardware layer 110. - In the cloud-computing environment 100, the cloud-service customers access the cloud-based services using data processing apparatus such as personal computers, smart phones, and tablet computers. Depending on the type of service being employed, different user interfaces or programming interfaces may be used to communicate with the cloud-
service provider 104. - For example, if a software application service is being employed, an end user can access and use the software application through a web browser. If platform or infrastructure services are being employed, a user of the service (e.g., an administrator user of a cloud-service customer) can access a configuration user interface that includes administrative functions to control and configure the services. The administrative functions include, for example, starting or stopping virtual machines, managing cloud storage, installing and deploying software on virtual machines, or setting up web servers, etc. In addition, a cloud-
service provider 104 can optionally allow an administrator user of a cloud-service customer to write program code according to various provider-, platform-, framework-, and/or service-dependent application program interfaces (APIs) to control and configure various aspects of the services that the cloud-service customer receives. In some implementations, if an open standard is used for a cloud-computing environment, provider-, platform-, framework-, and service- independent APIs can be used to control and configure the services as well. - When configuring a cloud-based service for deployment, a service user or service developer provides one or more configuration files to the cloud-
service provider 104. The configuration files set forth the desired initial state of the service expressed in terms of various configuration parameters. Typically, the configuration file is written in a structured way according to the rules and syntax provided or recognized by the cloud-service provider 104, such that the configuration file will be parsed and interpreted correctly by the cloud-service provider 104. -
FIG. 2A is an example of aconventional configuration specification 200 for deploying a simple web application in a cloud-computing environment. Theexample configuration specification 200 is written in an Extensible Markup Language (XML), which is a commonly used language for specifying configurations for cloud-based deployments. Theexample configuration specification 200 is provided to a cloud-service provider in a text file. The cloud-service provider uses tools (e.g., a parser or API translator) that parse the configuration file according to the markups (e.g., the MXL tags, elements, and attributes, etc.) in the configuration file and converts the requirements specified in the configuration file into one or more sets of API calls. After the appropriate sets of API calls are determined, the cloud-service provider executes the API calls to carry out the deployment according to the requirements set forth in the configuration file. -
FIG. 2B illustrates the resultingtopology 208 of the web application service after it is deployed according to theconfiguration specification 200. First, according to thecode block 202, a single Grid Service Manager (GSM) 210 is deployed on a single GSMvirtual machine 212. After theGSM 210 is deployed on theGSM machine 212, two Grid Service Containers (GSCs) 214 a and 214 b are deployed, each GSC on a respective GSC machine (216 a or 216 b), as specified bycode block 204. Then, according to thecode block 202, the GSM installs a copy of the web application software (e.g.,application copy 218 a or 218 b) within each of the twoGSCs code block 206, aload balancer service 220 is started on aload balancer machine 222, and used to direct traffic (e.g., HTTP requests from client browsers 224) to the twoGSC machines GSC machines - As illustrated in
FIGS. 2A and 2B , the exampleconventional configuration specification 200 relies on nested markup constructs (e.g., code blocks 202, 204, and 206) to describe the components of a deployment and relationships among the components. The user writing theconfiguration specification 200 needs to be familiar with the details within each markup construct that goes into theconfiguration specification 200 and the markup construct's meaning to the API translator of the cloud-service provider. For a large and complex deployment, the configuration file can become very long and complex with many layers of markups and duplicate statements. Furthermore, the possibility of code reuse decreases as a configuration specification becomes long and complex, because customization of the configuration specification for another deployment would require many changes and debugging the customized configuration file would also become more difficult. - As disclosed in this specification, instead of providing a configuration specification written in a markup language or through a graphical user interface, a cloud-service customer or service developer can provide a configuration specification written in a high-level object-oriented specification language. The high-level object-oriented specification language allows components (e g , infrastructures, storage devices, services, software package to be installed, and “software roles” played by installed software applications) of a cloud-based deployment to be specified as instances of one or more reusable and modifiable classes, where each class models a component of the deployment using a group of configurable class parameters. The value of each class parameter can be specified, reused, or modified for particular deployments using the syntax and functions provided by the object-oriented specification language. The instance of each reusable and modifiable class declares the desired state of the component that is modeled by the class.
- As described in this specification, inheritance of class definitions is supported by the high-level object-oriented specification language. New class definitions can be provided based on statements relating or modifying one or more existing class definitions using the high-level specification language. Statements relating different classes capture the relationships between multiple aspects (e.g., data or functional components) of a deployment. Examples of such relationships include the dependencies between software installations and service activations in a deployment, the connectivity between multiple software roles in a deployment, and the connectivity between a software role and a service or virtual device in a deployment. New class definitions can also be created by extending an existing class definition with the addition of new class parameters and/or methods. A user can customize a deployment by specifying a new class derived from one or more existing base classes and instantiate the new class.
- According to this specification, a cloud-service provider is able to compile a configuration specification written in the high-level object-oriented specification language into a set of API calls, based on the requirements specified by the class definitions included in the configuration specification. The inclusion of a class definition in a configuration specification refers to a request in the configuration specification to instantiate the class definition or to instantiate a new class definition derived from the class definition.
- In some implementations, different service layers of the cloud-service provider and different services within the same layer have different APIs. To compile the configuration specification written in the object-oriented specification language, the cloud-service provider stores a set of rules and protocols for translating each of a set of most basic class definitions (or core class definitions) of the specification language to a respective group of API calls. The group of API calls for each core class definition conforms to the API of the type of components modeled by the core class definition. The compiler is then able to use the set of rules and protocols to translate all class definitions derived from the core class definitions into an appropriate combination of API calls to configure all of the components of a particular deployment. In some implementations, the API calls are sent to and executed on one or more servers of the cloud-service provider. Alternatively, some of the API calls may be passed to an intermediary component of the cloud-service provider or a third-party service provider, where the API calls are further processed into lower-level API calls and carried out by the sub-components of the intermediary component or third-party service provider.
- In some implementations, the high-level object-oriented specification language also includes syntax for specifying triggers for scaling or dynamically reconfiguring various aspects of the deployment. For example, a class definition that models a virtual machine can include one or more class parameters for a scaling policy, such that the compiler can derive API calls to dynamically adjust the number of virtual machines deployed based on various performance metrics monitored by the cloud-service manager (e.g., the cloud-
service manager 122 shown inFIG. 1 ). - The following examples (shown in
FIGS. 3A-3C ) illustrate the syntax and various properties of an example object-oriented specification language, and how a cloud-based deployment can be specified according to the example object-oriented specification language, and based on existing and newly derived class definitions. - In the first example, an
example configuration specification 300 written in an example object-oriented specification language is shown inFIG. 3A . The deployment made according to thisconfiguration specification 300 is for launching a virtual machine with a web server (e.g., an Apache web server) installed and serving the files present in a data package. - This example assumes the existence of a number of base class definitions that the compiler is able to parse and translate to API calls. The existing base class definitions include a set of core class definitions provided by the compiler and possibly other class definitions that extend from one or more of the core class definitions either directly or via one or more intermediate class definitions.
- In some implementations, the existing base class definitions are grouped into modules (e.g., modules “utils,” “std” shown in
FIG. 3A ), and classes included in each module are referenced in a configuration specification by a module name followed by a class name (e.g., “std.Parameters,” “utils.ConfiguratorLAMP,” “std.DataPackage,” “std.Role,” “utils.PublicTCPFirewall,” “utils.BaseDeployment” as shown in the specification 300). Each of the base class definitions specifies an initial configuration state of a corresponding component of a cloud-based deployment, subject to the modifications and component relationships set forth in theconfiguration specification 300. - As shown in
FIG. 3A , theconfiguration specification 300 includes new class definitions that extend from the existing base class definitions. For example, a new class “Params” extends from the base class “std.Parameters,” a new class “SimpleHostingPackage” extends from the base class “std.DataPackage,” a new class “SimpleHostingVM” extends from the base class “utils.Configurator.LAMP,” a new class “SimpleHostingRole” extends from the base class “std.Role,” a class “SimpleHostingFirewall” extends from the base class “utils.PublicTCPFirewell,” and a class “SimpleHostingDeployment” extends from the base class “utils.BaseDeployment,” as shown by thenew class definitions configuration specification 300 triggers the deployment of a simple hosting application by creating an instance of the “SimpleHostingDeployment” class (e.g., as shown by statement 314), which in turn creates instances of other classes from which the “SimpleHostingDeployment” class is derived. - In this example, the “SimpleHostingDeployment”
class definition 312 customizes the definition of the base class “utils.BaseDeployment” by modifying two class parameters, a “roles” parameter and a “firewall” parameter. The “roles” parameter specifies the respective software roles that one or more installed software packages are supposed to play in the deployment. The “firewall” parameter specifies that a firewall service is to be included as part of the deployment. In this case, theclass definition 312 specifies that a single software role is to be included, which is represented by an instance of the “SimpleHostingRole” class. Theclass definition 312 further specifies that the firewall service to be included in this deployment is represented by an instance of the “SimpleHostingFirewall” class. According to the properties of the object-oriented specification language, the “SimpleHostingDeployment” class inherits other class parameters defined in the base class “utils.BaseDeployment” without further modification. These other class parameters describe other aspects of the deployment that need not be further customized for this simple hosting deployment. - According to the
class definition 312, instantiation of the “SimpleHostingDeployment” class requires instantiation of the “SimpleHostingRole” and the “SimpleHostingFirewall” classes as well. As shown inFIG. 3A , the “SimpleHostingRole”class definition 308 extends from the base class “std.Role.” Both classes are based on a “software role” model that categorizes a software installation according to the role that the software installation plays in a cloud-based deployment. For example, a software package may be installed to play a role of a webhost, a frontend, a backend, a communication interface, and so on. Depending on the particular role that a software installation plays, different parameters may be used to configure the software installation. Each configurable parameter for the software role can have a corresponding class parameter or function in the class definition created based on the “software role” model. - In one example, in addition to an identifier or name of the role that the software installation plays in a deployment, a “software role” model can include model parameters for configuring various aspects of the software installation, including the virtual machines on which the software is to be installed, the location of the software binary, instructions on which installer program should be used to install the software, and so on. If the software installation requires other services or software installations to be performed first, this dependency is optionally included in the “software role” model as well. Example of dependency relationships are “start after” or “stop before.” Other dependency types (e.g., install on the same virtual machine, etc.) can be supported as well.
- In this example in
FIG. 3A , theclass definition 308 for the “SimpleHostingRole” class specifies that the role of the software installation in the deployment is to serve as a “webhost.” How the “webhost” software is to be deployed is made known to the compiler through the class definition of the “simplehosting.webhost” class. In this example, the “simplehosting.webhost” class definition includes the configurations of a simple apache web server, which is already written and made known to the compiler. When the “SimpleHostingRole” class is instantiated, the “simplehosting.webhost” class is instantiated as well. - The
class definition 308 for the “SimpleHostingRole” class further declares that the data package that is needed to run this webhost is represented by an instance of the “SimpleHostingPackage” class, and that the webhost is to be installed on virtual machines that are represented by instances of a “SimpleHostingVM” class. - In this example, each of the “roleName,” “moduleName,” “dataPackages,” and “vms” are parameters of the “std.Role” class, and are customized in the “SimpleHostingRole”
class definition 308. Other class parameters of the “std.Role” class are inherited by the “SimpleHostingRole” class without modification. - The
class definition 308 of the “SimpleHostingRole” class also defines a few new parameters, such as the “serving_domain” and “document_root” parameters whose values are assigned either indirectly through another parameter name (e.g., “serving_domain” of the “Params” class 302) or by a direct value entry (e.g., “/var/www/static”). In this example, only one software role is defined, so no dependency between software roles is specified for the software role (e.g., the “SimpleHostingRole”) in terms of installation or execution. - With respect to the firewall component of the deployment, the
class definition 310 of the “SimpleHostingFirewall” class is based on the existing “utils.PublicTCPFirewall” class definition. In this example, the “utilis.PublicTCPFirewall” class defines a public firewall with Transmission Control Protocol (TCP) set as the protocol. The only parameters of the “PublicTCPFirewall” class that are modified for this deployment are the “target” and “ports” parameters. In theclass definition 310, the target of the firewall is represented by an instance of the “SimpleHostingRole” class, while the port of the firewall is set to port “80.” Other parameters (e.g., the “source” and the “protocol” parameters) that are needed to configure the firewall are specified in the base class definition of “PublicTCPFirewall” and are inherited by the “SimpleHostingFirewall” class without modification. In this example, a connectivity between the firewall component and the simple hosting software role (e.g., represented by an instance of the “SimpleHostingRole” class) is specified by the value assignment to the “target” parameter. - In this example, the class definitions of the “SimpleHostingFirewall” and the “utils.PublicTCPFirewall” classes are both based on a firewall service model. Unlike a “software role” model, a service model does not need to include parameters for the underlying virtual machines, disks, or software packages. Instead, these aspects are controlled by the cloud-service provider and not subject to the configuration by the users of the service. Like in a “software role” model, a service model also optionally includes parameters that specify dependences between services and between services and software roles. In this example, the firewall component is connected to the web server component, but no dependencies of the firewall service are specified for this simple hosting deployment.
- As set forth earlier and shown in
FIG. 3A , theclass definition 308 of the “SimpleHostingRole” class requires instantiation of the “SimpleHostingPackage” class and the “SimpleHostingVM” class. Theclass definition 304 of the “SimpleHostingPackage” class specifies the source of the data (e.g., “data” in the current directory”) that is to be copied to the virtual machine hosting the “SimpleHostingRole.” Theclass definition 304 further specifies a destination directory (e.g., “/var/www/static”) of the copied data on the virtual machine. When the deployment is carried out according to theconfiguration specification 300, the data package “data” is copied from the directory in which the configuration file resides, to the destination directory “/var/www/static” on the virtual machine that has been deployed according to the “SimpleHostingVM” class definition 306. - As shown in
FIG. 3A , the “SimpleHostingVM” class definition 306 extends from the “utils.ConfiguratorLAMP” class definition. Both classes are based on a virtual machine model and specify how a virtual machine can be configured. In this example, the “utils.ConfiguratorLAMP” class configures a customized virtual machine that already has an Apache web server installed. Therefore, by extending from the “utils.ConfiguratorLAMP” class rather than a standard virtual machine class, a user can simplify and speed up the configuration process. The “SimpleHostingVM” class definition 306 also specifies the number of virtual machines to be deployed in this deployment and the external IP addresses to be bound to the virtual machines, through the newly added “replicas” and “staticIP” class parameters. Other parameters that are commonly used to configure a virtual machine or virtual machines for supporting a software role include, for example, configuration parameters for the CPU and memory requirements of the virtual machine(s), storage disks to be attached to the virtual machine(s), read-only storage sources attached to the virtual machine(s), IP addresses, network interfaces of the virtual machine(s), the data center location of the virtual machine(s), and so on. Each of these virtual machine model parameters is optionally included as a class parameter in a virtual machine class definition or another class that extends from a virtual machine base class definition. - Optionally, a special “Params” class is included in the configuration specification of a deployment, such as that shown in the
example configuration specification 300. Parameter values can be provided in this class definition and used to assign values to parameters in other class definitions that are included in the same configuration file. For example, the values of parameters “replica_count,” “serving_domain,” and “ip_array” are injected into theclass definitions 306 and 308 through references made to the respective names of parameters. - As illustrated in the
example configuration specification 300, it is possible to create class definitions for different components of a cloud-based deployment based on different component models. A high-level object-oriented specification language can be developed based on models of various types of infrastructures, storage, services, and software roles that commonly occur in a cloud-based computing environment. Each model describes a corresponding infrastructure component, storage, service, or software role using a number of model parameters. Core class definitions that represent generic initial configuration states of some most common and basic components of the cloud-based environment can be created based on these component models. As more complex components can be built from combinations of multiple basic components, class definitions that represent the initial configuration states of more complex components can be created from multiple core class definitions and/or other class definitions that are derived from the core class definitions. - A compiler of the high-level object-oriented specification language is created to parse the class definitions created based on these component models, extract the configuration requirements expressed by the values of the class parameters, and translates the requirements into a proper set of API calls for configuring the types of components represented by these component models. In some implementations, a compiler is implemented as a software program or script that reads a configuration file and outputs a set of API calls. In some implementations, the compiler also direct the API calls to appropriate components of the cloud-service provider or third-party providers for execution.
- The example in
FIG. 3A has illustrated class definitions developed based on an example software data package model, an example virtual machine model, an example “software role” model, an example firewall service model, and an example deployment model, respectively. As an additional example, an example storage model includes model parameters for configuring aspects of a storage option of a deployment, such as the size of the storage, mounting points of the storage, and so on. In some implementations, a storage model optionally includes a scaling policy for dynamically adjust the size of the storage based on monitored usage of the storage. Furthermore, in addition to a firewall service, a cloud-based environment can include many platform and infrastructure services, such as a database service, a message queue service, a load balancing service, a map service, a MapReduce service, and so on. Different service models can be developed for each of these cloud-based services, and class definitions for configuring the different services can be created based on the different service models. - As illustrated by the example of
FIG. 3A , an object-oriented specification language enables the creation of class hierarchies that represent different levels of customization for components in various layers of the cloud-computing environment. A configuration specification written in the object-oriented specification language can reuse existing class definitions, either by extending from an existing class definition or referring to an instance of an existing class definition when assigning a value to a class parameter. Reusing existing class definitions simplifies the configuration specification for a new deployment. Furthermore, when reusing an existing class definition, a user only needs to know the configuration state that can be accomplished by the existing class definition, but not all the literal details set forth within the class definition to accomplish that configuration state. - In addition, class definitions of highly complex components (e.g., components involving multiple services, multiple data sources, and multiple levels of deployments) can be developed based on multiple existing class definitions, with or without modification to the class parameters of the existing class definitions. These highly complex class definitions can be reused by a user in a new deployment, without in depth understanding of these complex class definitions on all levels.
- By choosing the appropriate base classes to customize and modify in a new configuration specification, the user also gains more refined control over particular aspects of the deployment while leaving other aspects of the deployment generic to definitions of the base classes.
-
FIG. 3B shows some base class definitions that are stored (e.g., in a “lamp” module 320) and reused in configuration specifications of multiple cloud-based deployments. These base class definitions are tailored for various Linux Apache MySQL Perl/Python (LAMP)-based application deployments. Each class definition includes some commonly used class parameters for configuring a respective data or functional component of a LAMP-based application deployment. -
FIG. 3C provides an example configuration specification 340 that utilizes the base classes in the “lamp” module 320 to deploy a Mantis debugging software in a LAMP-based application deployment. By utilizing the based class definitions in the “lamp” module 320, the configuration specification 340 for the Mantis application deployment does not need to include the details of how a basic LAMP-based environment is configured, and only needs to customize aspects that are particular to the Mantis application deployment. - The following describes how the based class definitions in the “lamp” module 320 are used to establish a basic LAMP deployment structure. In the “lamp” module 320, the special “Params”
class 322 includes some parameters that are used in multiple class definitions, such as a flag “single_node” indicating whether the Apache software and the MySQL software should be installed on the same virtual machine, a “frontend ip” parameter for specifying the IP addresses to be bound to the LAMP frontend component, a “serving domain” parameter for specifying the domain name of the Apache website, a “doc_root” parameter for setting the document root of the Apache server, a “mysqldatafolder” parameter for setting the database folder relative to the persistent disk mount point, a “mysql_pdname” parameter for specifying the name of the persistent disk, a “mysql_pd mount_point” parameter for specifying the mount point of the persistent disk, a “pd_size_gb” parameter for specifying the size of the persistent disk in GB. Optionally, the parameter values in the special “Params” class can be changed through a command line tool provided by the cloud-service provider to make it more convenient for users to adjust deployments based on the “lamp” module. - A LAMP-based application deployment typically includes the following components: a frontend (i.e., the software role of a frontend software application), virtual machines on which the frontend software application (e.g., an Apache web server application) is installed, a database (i.e., the software role of a database software application), virtual machines on which the database software application (e.g., a MySQL software application) is installed, a permanent disk for storing the database, and a firewall. Each of the above components is modeled by a respective set of class parameters that are configurable for a particular LAMP-based application deployment.
- As shown in
FIG. 3B , the class definition “FrontendVM” 324 extends from an existing class definition “utils.ConfiguratorLAMP” which configures a virtual machine image that already has an Apache web server software pre-installed. In this case, the MySQL database software is to be installed on the same virtual machine as the Apache software, as indicated by the “single_node” flag in the “Params”class definition 322. Therefore, the “DatabaseVM”class definition 326 also extends from the class definition “utils.ConfiguratorLAMP.” - In the “lamp” module 320, the “MysqlPD”
class definition 328 models the permanent disk on which the database is to be stored. TheMysqlPD class definition 328 includes class parameters that specify the name of the persistent disk, the size of the persistent disk, and the mount point of the persistent disk, for example. Other parameters that specify how the persistent disk should be configured are inherited from an existing “std.PersistentDiskSpec” class definition without modification. - The “FrontendRole”
class definition 330 models the frontend component of the LAMP-based environment. The “FrontendRole”class definition 330 extends from a standard software role modeled by an existing base class definition “std.Role.” The “FrontendRole” also refers to a “lampfront” placeholder class and a “lamp” placeholder module as the temporary values assigned to the “roleName” and the “moduleName” class parameters. These temporary values will be replaced by the names of the actual module and class that configure the LAMP frontend software application to be deployed. As will be shown inFIG. 3C , the class definition that configures the front end software (e.g., the Mantis debugging software) is the “mantis_frontend” class in the “mantis” module. Theclass definition 330 also sets forth that the virtual machine on which the LAMP frontend role is to be installed is represented by an instance of the “FrontVM”class 324. - The “DatabaseRole”
class definition 332 models the database component of the LAMP-based environment. The “DatabaseRole” class also refers to a placeholder class in a placeholder module (e.g., “lamp” and “lamp_backend”) for the backend software configuration. The names of the placeholder class and the placeholder module will be replaced by the actual names of the class and module that configure the backend database software. The “DatabaseRole”class definition 332 also specifies that the persistent disk storing the database is represented by an instance of the “MysqlPD”class definition 328. In addition, a “vms” parameter is defined to indicate that the virtual machine for installing the backend database software of the LAMP environment is to be represented by an instance of the “FrontendVM” class if the “single_node” flag is set to TRUE, otherwise, the virtual machine is to be represented by an instance of the “DatabaseVM” class. - Lastly, in the “lamp” module 320, the firewall component of the LAMP-based environment is modeled by the “HttpFirewall”
class definition 334. The “HttpFirewall” class definition extends from the existing “utils.PublicTCPFirewall” class definition, such as the protocol, source, and target parameters of the “util.PublicTCPFirewall” class are inherited by the “HttpFirewall” class. The “HTTPFirewall” class definition modifies the “port” parameter of the “utils.PublicTCPFirewall” from “any” to “80.” - Each class definition set forth in the “lamp” module 320 shown in
FIG. 2B is extendable, modifiable, and/or usable as is for an application-specific deployment and/or for creating new class definitions in other modules. The configuration specification 340 shown inFIG. 3C includes and builds upon the class definitions in the “lamp” module 320 shown inFIG. 3B . Astatement 342 at the beginning of the configuration specification 340 points to a file containing the class definitions of the “lamp” module 320, to indicate to the compiler where to locate the base class definitions that are used in the configuration specification 340. - The configuration specification 340 is for configuring an application deployment that launches virtual machines in a LAMP structure and installs the Mantis debugging software on the virtual machines. Mantis is a web-based bug-tracking system written in the PHP scripting language and works with a MySQL database and a webserver.
- As specified in the in the “MantisDeployment”
class definition 354, the deployment calls for two software roles and a firewall to be installed. In this case, the two software roles are created according to the “MantisFrontend”class definition 348 and the “MantisDatabaseRole”class definition 350, while the firewall is created according to the “MantisFirewall”class definition 352. When the configuration specification 340 is compiled, the statement 356 makes an instance of the “MantisDeployment” class and causes the other classes on which the “MantisDeployment” class depends to be instantiated as well. - In this example, the “MantisFrontend”
class definition 348 extends from the “lamp.FrontendRole”class definition 330 shown inFIG. 2B . The class parameters that are modified for the Mantis software installation include the “roleName,” “moduleName” of the software configuration specification, the “dataPackages” from which the Mantis software binaries can be copied, and the database host to be associated with the Mantis application deployment. The configuration parameters for the virtual machine aspect of the Mantis frontend are inherited from the “lamp.FrontendRole”class definition 332 without modifications. In other words, the user writing the configuration specification 340 accepts the default virtual machine configuration specified in the “lamp” module 320, and needs not customize the Mantis application deployment with that level of details. - Similarly, the “MantisDatabaseRole”
class definition 350 extends from the “lamp.DatabaseRole”class definition 332 shown inFIG. 3B . The class parameters that are modified for the Mantis software installation includes the “roleName” and “moduleName” of the configuration specification for the backend database role. In addition, the frontend host of the database role is set to be an instance of the “MantisFrontendRole” class. The configurations for the virtual machine aspect and the persistent disk aspect of the database backend role are inherited from the “lamp.DatabaseRole”class definition 332 without modification. - In addition, the “MantisFirewall”
class definition 352 inherits the parameters from the “lamp.HTTpFirewall” and modifies only the value for the “target” parameter to an instance of the “MantisFrontendRole” class. Other parameters, such as the “port” and “protocol” parameters of the “MantisFirewall” class are inherited from the base class “lamp.HTTpFirewall” defined in the “lamp” module 320. - Other parameters and values specific to the Mantis deployment are set forth in the special “Params”
class definition 344 and the data package from which the Mantis software is copied is specified in the “MantisPackage”class definition 346. - In the above example, the configuration specification for the Mantis software deployment is derived from the base class definitions (e.g., class definitions in the “lamp” module 320) created for a generic LAMP-based application deployment. Configurations of many aspects of the LAMP-based deployment do not have to be redefined for the Mantis application deployment. The configuration specification for the Mantis application deployment only needs to specify new parameters or new parameter values that are particular to the Mantis application deployment or in need of customization. Parameters that are already defined for other more generic aspects of the deployment do not need to be re-specified or modified in the configuration specification 340. The details of these other aspects of the deployment can remain opaque to the user.
- The examples shown in
FIGS. 3A-3C are merely illustrative of the properties of an object-oriented specification language for writing configuration specifications of cloud-based deployments. In various implementations, the exact syntax of the object-oriented specification language can depart from what is shown in the examples. Furthermore, many types of base classes can be created to model the components that may exist in a cloud environment. Syntax for specifying relationships between components modeled by the classes can also vary from one object-oriented specification language to another object-oriented specification language. For a given object-oriented specification language, a compiler can be created to parse the class definitions included in a configuration specification written in the object-oriented specification language according to a predetermined set of syntax rules to extract the parameters that are used to configure the various types of components in the cloud environment. -
FIG. 4 shows an example cloud-service manager 222 of an examplecloud service provider 104. The example cloud-service manager 222 is responsible for deploying cloud-based services according to theconfiguration specification 104 provided by the administrative users (e.g., 102 a, 102 b, 102 c) of the services. The cloud-service manager 222 receives communications from the administrative users of the cloud-customers through thefrontend 120 of the cloud-service provider 104. In some implementations, the cloud-service manager 222 may have its own frontend components that communicate with the cloud-service customers directly. - After the
frontend 120 receives theconfiguration specifications 104 from an administrative user of the cloud-service customers, thefrontend 120 passes the receivedconfiguration specifications 104 to an API translator 404 of the cloud-service manager 222. The API translator 404 have access to a library of core class definitions (e.g., stored in a definition database 406) and translation protocols (e.g., stored in a rule database 408) on how to translate the core class definitions into respective sets of API calls for configuring various components of a cloud-based environment of the cloud-service provider 104. - For example, the API translator 404 can include a compiler (e.g., a parsing script or program) that parses the class definitions received in a
configuration specification 104, identify all the base classes from which the classes in the configuration specification are derived, and extract the base class parameters that are left unmodified as well as the class parameters that are modified or new. In addition, the compiler also identifies all the relationships (e.g., connectivity and dependencies) among the components of the cloud-based deployment from the statements in the class definitions. Based on the values of the class parameters and the stored translation protocols, the API translator 404 generates an appropriate set of API calls 410 to configure various aspects of the cloud-based deployment. - For example, the translation protocols can include a mapping between a core class definition modeling a respective modular aspect of the cloud-based environment to a group of API calls that are used to configure that aspect of the cloud-based environment. The translation protocols can further include protocols for modifying the set of API calls (e.g., changing default parameters used in the API calls) with parameter values specified for that modular aspect of the cloud-based environment in classes derived from the core class definition.
- As a more specific example, suppose a standard virtual machine class definition (e.g., a “std.VM” class) is a core class definition known to the compiler. The compiler would have access to a translation rule mapping the core class definition to a set of provisioning API calls made to the VM manager in the kernel layer of the cloud-
service provider 104 for deploying a standard virtual machine image. A default set of parameters (e.g., duplicate count, IP address, memory requirement, etc.) can be used in the provisioning API calls. The protocol for modifying the API calls can include protocols for changing the default parameter values according to the parameter values specified in the specification configuration and in intermediate class definitions that are derived from the standard virtual machine class definition. For example, if a class parameter of a new class definition derived from the standard virtual machine image specifies the software package to be installed on the virtual machine image, the translation protocols would specify how the additional API calls for installing software packages on a designated virtual machine should be added to the group of API calls associated with configuring the standard virtual machine image. - In some implementations, the protocols for translating class definitions to API calls are written as program scripts. As new core class definitions are added to the class definition database 406, the protocol for translating the new class definition can be created and added to the translation rules database 408. The translation protocols can be created, for example, by the cloud-
service provider 104. In some implementations, when encountering a particular class definition in parsing a received configuration specification, the API translator 404 locates and runs a corresponding script to parse the class definition into a set of API calls. The API calls, when executed, cause the configuration specified by the class definition to be achieved in the cloud-based environment. - In some implementations, the API calls 410 generated by the API translator 404 are sent to a service launcher component 412 of the cloud-
service manager 222. The service launcher component 412 is responsible for channeling the API calls 410 to various layers of the cloud-service environment or components of the cloud-service provider 104 where the API calls can be executed. In some implementations, where the deployment are to be carried out in several stages due to the dependencies between various aspects of the deployment, the service launcher component 412 is also responsible in checking the order by which the API calls are sent out to the layers and/or components for execution, and verify that the API calls have been completed in a proper sequence. - Since class definitions written in an object-oriented specification language as disclosed in this specification can be reused in multiple configuration specifications, an administrator user of a cloud service may wish to employ class definitions provided by a third party (e.g., another user, a service developer of the cloud-service provider, or third-party developers) in their own configuration specifications, rather than developing those class definitions by themselves. In some implementations, a marketplace for sharing/sale and selection of existing configuration specifications and reusable class definitions can be provided, for example, by the cloud-service provider or a third-party provider.
- In this example, the cloud-
service provider 104 provides such a platform for the sharing of reusable configuration specification and class definitions. In some implementations, the frontend of the cloud-service provider provides a definition submission user interface and a definition selection interface to facilitate the sharing of reusable configuration specifications and class definitions. The parties that provide the configuration specifications and class definitions for reuse by others serve as definition suppliers 414 for the cloud-service provider 104. The potential definition users include administrative users of cloud-based services. The potential definition users also, optionally, include definition suppliers who will create new reusable class definitions or class definitions for submission based on the existing class definitions provided by other definition suppliers. - As shown in
FIG. 4 , the cloud-service manager 222 of the cloud-service provider 104, or a component of the cloud-service manager 222, can serve to manage the platform for sharing reusable class definitions 416. The definition suppliers 414 submit reusable class definitions 416 to the cloud-service manager 222 through the definition submission user interface provided by thefrontend 120. Each class definition submission can include multiple reusable class definitions 416, such as in a class module. Each class definition in the submission is accompanied by descriptions of the initial configuration state that the class definition can accomplish if subsequently used in a configuration specification. In some implementations, the description also includes instructions on how the class parameters in the class definition can be subsequently modified in configuration specifications to suit the needs of particular deployments. - When a definition supplier submits a reusable class definition or a module of reusable class definitions, the cloud-
service manager 222 can store the received class definitions in a class definition database (e.g., the definition database 406). In some implementations, thefrontend 120 provides registration and authentication services for the definition suppliers 414. Each class definition or class module received from a registered definition supplier 414 is stored in association with the identifier of the definition supplier, such that the definition supplier 414 can be properly credited when the class definition is subsequently used or purchased by a definition user. - In some implementations, the definition suppliers 414 can provide reusable class definitions 416 for free or for a cost. The cloud-
service manager 222 can facilitate the sale or license of the reusable class definitions to the potential definition users (e.g., administrative users of the cloud-service customers) through the definition sharing platform. In some implementations, the definition supplier 414 provides and the cloud-service manager stores respective prices associated with the sale or licenses for different usage levels for the reusable class definitions provided by the definition suppliers 414. - In some implementations, the cloud-
service manager 222 provides a definition selection user interface over thefrontend 120. The definition selection user interface presents the class definitions that are available for reuse, such as in defining new class definitions. The new class definitions include those included in the configuration specification of a new deployment and, optionally, those that are submitted to the cloud-service provider for reuse by others. The potential definition users (e.g., administrative users of the cloud-service customers and definition suppliers) can view the class definitions that are available for selection through the definition selection interface, along with their prices and descriptions, and optionally, reviews and quality scores, and decides on whether to reuse one or more of the class definitions in a configuration specification or for deriving a new class definition. - In some implementations, potential definition users provide the definition selection user interface with criteria that specify a configuration to be deployed. The criteria can include one or more class definitions. The cloud-
service manager 222 processes the criteria and provides, to the user, collections of class definitions satisfying the criteria. A collection of class definitions can include additional class definitions that are not explicitly specified in the criteria as long as the additional class definitions are compatible with class definitions specified in the criteria. The collections of class definitions can be ranked using methods further described below inFIGS. 16 , 17, and 20. If the user selects a collection of class definitions, the cloud-service manager 222 identifies a configuration specification associated with the collection of class definitions and deploys the configuration specification to the cloud environment of the cloud-service provider 104. - In some implementations, definition selection user interface allows the user of the class definitions to download or copy a reusable class definition available for selection. In some implementations, the user does not have to copy or download the class definition, and can use the class definitions by simply identifying the module and class name in a configuration specification submitted to the cloud-service provider for deployment. The cloud-
service manager 222 will identify and locate the class definitions that are referenced in the specification file, and keep track of the usage of the class definition. - In some implementations, the reuse involves an entire module (e.g., the “lamp” module shown in
FIG. 3B ), where the module includes a collection of multiple interrelated class definitions for configuring a cloud component that includes multiple sub-components. In some implementations, the class definitions or class modules are categorized based on the type of components they model. In some implementations, the definition selection interface allows the potential users of the class definitions to search or review available class definitions by categories, functions, definition suppliers, and other attributes associated with the class definitions and modules. - In some implementations, the cloud-
service provider 104 or a third party provider also provides a platform for software suppliers 418 to provide software solutions accompanied by multiple alternative configuration specifications or alternative collections of class definitions for configuring the software solutions. For example, a personnel management program can be accompanied by configuration specifications that are tailored for cloud-service customers that have different scale, needs, and internal infrastructures. When a cloud-service customer purchases or licenses the software solution for deployment in the cloud environment of the cloud-service provider 104, the cloud-service customer can choose the configuration specification that best suits its needs. - In some implementations, the
service manager 222 can receive submissions of software solutions with accompanying configuration specifications (e.g., either as configuration specifications or modules of reusable class definitions) through a software submission user interface provided through thefrontend 120. In some implementations, the software submission user interface includes registration and authentication capabilities, such that each submission of a configuration-wrapped software solution 420 is stored in association with the software provider that submitted the configuration-wrapped software solution 420. - The cloud-
service provider 104 can provide the configuration-wrapped software solutions in a software selection interface to the cloud-service customers through thefrontend 120. The software selection interface can also provide the descriptions of the different configuration specifications accompanying each software solution. When a user (e.g., an administrative user of an cloud-based application service) select a software solution and one of the accompanying configuration specifications from the software selection interface, thecloud service provider 104 can launch the software solution in the cloud-based environment according to the selected configuration specification, with or without additional customizations. - In some implementations, the cloud-
service provider 104 facilitates the accounting (e.g., by an accounting component 426) for the sale and purchase of the reusable configuration specifications, reusable class definitions, and configuration-wrapped software solutions that are accomplished through the platforms provided by the cloud-service provider 104. In some implementations, the cloud-service provider does not need to directly provide these platforms, but provide accounting services (e.g., by the accounting component 426) to the user and provider of the reusable configuration specifications, reusable class definitions, and configuration-wrapped software solutions based on actual usage that has occurred in the cloud environment of the cloud-service provider 104. - In some implementations, the cloud-
service manager 222 includes a service monitor 422. The service monitor 422 monitors the statuses of the cloud-services that have been deployed in the cloud environment of the cloud-service provider 104. The statuses monitored by the service monitor 422 include, for example, the virtual resources that are employed for each component of a cloud-based deployment, the usage level of the virtual resources, the cloud-services that are employed by each component of the cloud-based deployment, the usage level of the cloud-services. The service monitor 422 can compute performance metrics associated with each cloud-based deployment based on the statuses of the virtual resources and the cloud-based services that are associated with the deployment. The performance metrics include, for example, the number of user requests received, the latency associated with the responses, the availability of the virtual resources and services, the failure rate of each virtual resource or service, the fault tolerance level of the virtual resources and services, and so on. In some implementations, the performance metrics is stored in a performance data store 424 of the cloud-service manager 222. - As disclosed in this specification, cloud-based deployments can be carried out according to configuration specifications written in an object-oriented specification language, where the configuration specifications include class definitions that model different aspects of the cloud-based deployments at different levels of abstraction. When the cloud-
service manager 222 processes a configuration specification into a set of class definitions, the cloud-service manager 222 is able to track the hierarchy of class definitions that have influenced the configuration of each of those different aspects of the deployment. Further, the cloud-service provider is able to associate the virtual resources and services that are dedicated to the different aspects of the cloud-based deployment to the different class hierarchies that have influenced the configuration of those aspects of the cloud-based deployment. - Therefore, the object-oriented specification language allows performance metrics to be derived for each of these different aspects based on the status and performance of the virtual resources and services that contribute to the performance of the aspect of the cloud-based deployment. In particular, the performance associated with each aspect of the cloud-based deployment is associated with the class definitions that are involved in configuring that aspect of the cloud-based deployment. Then, the performance associated with a class definition can be used as a factor in determining a quality measure for the class definition. If a class definition is used in configuring multiple cloud-based deployments, the aggregated performance associated with the class definition can be used to assess the quality of the class definition.
- Using the reusable class definitions and configuration specification shown in
FIGS. 3B and 3C as an example, when the service-cloud manager 222 deploys the Mantis and MySQL software applications and the firewall service in the Mantis application deployment according the “MantisDeployment”class definition 354 and all the base classes on which the “MantisDeployment”class definition 354 depends, theservice manager 222 can monitor the respective performances of the software roles, the firewall service, and the underlying virtual machines supporting the software roles. The cloud-service manager 222 can associate the respective performances of the frontend role with the classes that influenced the configuration of the frontend component of the Mantis deployment, associate the respective performance of the firewall component with the classes that influenced the configuration of the firewall component, associate the respective performance of the virtual machines underlying the frontend role with the classes that influenced the configuration of the frontend virtual machines, and so on, for example. - In some implementations, the cloud-
service manager 222 can generate a system block diagram of the cloud-based deployment according to the configuration specification writing in the object-oriented specification language. For example, the nature of the infrastructural components, storage, services, software roles, as well as their interrelationships (e.g., dependencies and connectivity) and reconfiguration triggers, can be identified from the class definitions in the configuration specification and represented as corresponding elements in the system block diagram of the deployment. The basic system block diagram can be created when the configuration specification is parsed by the API translator 404, for example. -
FIG. 5 shows the block diagram 500 that can be created based on the deployment specification 340 shown inFIG. 3C . When parsing the configuration specification 340 of the Mantis application deployment, the cloud-service manager 222 recognizes from the “MantisDeployment”class definition 354 that there are two software roles and a firewall involved in the deployment, e.g., the software roles modeled by the “MantisFrontendRole” and the “MantisDatabaseRole” class definitions and a firewall modeled by the “MatisFirewall” class definition. Therefore, the cloud-service manager 222 can add ablock 504 for the frontend role, ablock 506 for the database role, as well as ablock 508 for the firewall service within ablock 502 representing the Mantis application deployment. - Next, according to the class definition of the “MantisFrontendRole” class, the cloud-
service manager 222 determines that the software application serving the frontend role is to be deployed according to the class definition of the “mantis_frontend” class. The cloud-service manager 222 therefore adds ablock 510 within theblock 504, to represent the frontend software that is serving the frontend role. Similarly, from the class definition of the “MantisDatabaseRole” class, theservice manager 222 determines that the software application serving the database role is to be deployed according to the class definition of the the “mantis_backend” class. Therefore, the service manager adds ablock 512 within theblock 506, to represent the backend database software that is serving the database role. - Furthermore, according to the
class definitions class definition 352 of the “MantisFirewall,” the firewall is connected to the frontend role. Therefore, the cloud-service manager 222 can insert aconnection 514 between theblock 504 and theblock 506, to represent the connectivity relationship between the frontend role and the database role. In addition, the cloud-service manager 222 also inserts aconnection 516 between theblock 504 and theblock 508, to represent the connectivity relationship between the frontend role and the firewall. - In addition, since the “MantisFrontRole”
class definition 348 extends from the “FrontendRole”class definition 330, the cloud-service manager 222 determines from theclass definition 330 of the “FrontendRole” class that, the frontend software (e.g., the Mantis software) is to be installed on a virtual machine modeled by the “FrontendVM”class definition 324. Similarly, the “MantisDatabaseRole”class definition 350 extends from the “DatabaseRole”class definition 332, and the cloud-service manager 222 determines from theclass definition 332 of the “DataBaseRole” class that, the backend database software (e.g., the MySQL database software) is to be installed on the same virtual machine as the frontend role software. Based on the above information, theservice manager 222 adds ablock 518 under theblocks - Furthermore, according to the “DatabaseRole”
class definition 332, the cloud-service manager 222 determines that a persistent disk is connected to the database role by a mount point on the underlying virtual machine. The persistent disk is deployed according to the specification specified in the “MysqlPD”class definition 328. Therefore, theservice manager 222 adds ablock 520 to theblock 502 representing the mantis deployment, and adds aconnection 522 to represent the connectivity relationship between the database software, its underlying virtual machine, and the permanent disk. - In some implementations, when the components of the deployment is deployed, the
service manager 222 can also record identifiers associated with the underlying infrastructure components (e.g., process IDs or identifiers of the virtual machines and other virtual resources) for each block or connection represented in the block diagram 500. When the cloud-service manager 222 monitors the statuses of the underlying virtual resources and services for the deployment, the cloud-service manager 222 optionally determines the performance or usage metrics for each component (e.g., blocks and connections) represented in the block diagram 500. The cloud-service manager 222 can also optionally represent the performances and usage of the different component in the system block diagram 500. - In some implementations, visualization of the performances and usage of these different components of the deployment and their changes over time can be shown on the block diagram 500. In some implementations, the cloud-
service manager 222 can present the performance and usage statistics in a visual form on the block diagram in a management interface of the cloud services for each cloud-service user. For example, the performance and usage statistics can be represented as a histogram or pie chart that dynamically changes according to the actual conditions of the components in the cloud environment. In some implementations, the cloud-service provider bills the cloud-service customers according to the performance and usage statistics. - In some implementations, the configuration specification optionally includes programmatically triggered reconfiguration requests. For example, the configuration specification for a component can specified that when a particular monitored parameter reaches a specified threshold value, the cloud-
service manager 222 is to scale the provisioned virtual machine or services by a specified amount. For a more specific example, the class definition of the persistent disk class (e.g., the “MysqlPD” class definition) can include a statement that requests an increase in the size of the persistent disk when the disk capacity is 80% utilized; the class definition of the “frontendVM” class can request that when the latency of the frontend role is more than one second, the “replica-count” parameter of the FrontendVM is to be increased by one; and so on. - As set forth in this specification, the object-oriented specification language allows the configuration of each component in a cloud-based deployment to be specified by a respective set of class definitions. When parsing a configuration specification, the service manager is able to identify the components of the deployment, and identify all of the base classes whose class parameters contributed to or influenced the configuration state of the component. In some implementations, the performance of each component is associated with the class definitions that contributed to the configuration of that component. If a class definition contributed to the configuration of multiple components in multiple deployments, the performance of these multiple components in the multiple deployments can all be associated with that class definition. The quality of the class definition can be assessed based at least in part on the aggregated performance of all of the multiple components in the multiple deployments.
- In some implementations, the cloud-service manager keeps track of the usage of each class definition in the cloud-based environment and charges the cloud-service users that have used the class definition in their deployments. Optionally, the amount of charge billed to the users is based on the amount of usage the user has accrued for the class definition in all of the deployments the user has requested. In some implementations, where the class definitions are provided by third-party definition providers, the cloud-
service manager 222 can record a credit to the third-party definition provider for each use of the class definition provided by the third-party definition provider. - For example, when parsing the configuration specification for the Mantis application deployment shown in
FIG. 3C , the cloud-service manager 222 records that theMantis frontend component 504 is deployed according to the “MantisFrontendRole”class definition 348, which extends the “lamp.FrontendRole”class definition 330, uses the “mantis_frontend” class definition for software configuration, and the “MantisPackage”class definition 346 to identify the location of the software package, and is connected to the “MantisDatabaseRole”class 350. Further, theservice manager 222 determines that the “lamp.FrontendRole”class definition 330 further extends from the “std.Role” class definition, uses the “FrontendVM”class definition 324, and that the “FrontendVM”class definition 324 extends from the “utils.ConfiguratorLAMP” class definition. - The cloud-
service manager 222 can continue to identify the class definitions that are involved in the configuration of the frontend role component of the deployment by tracing the class hierarchies connected to the “MantisFrontendRole”class definition 348, until the most fundamental sets of class definitions are identified. All of the class definitions that contributed to the configuration of the frontend role component are associated with the frontend role component for the deployment. A similar process can be carried out for each component of the deployment. - When the deployment is carried out, the cloud-
service manager 222 can record the usage of each class definition in configuring the deployment according to the number of times that the class definition is used in the deployment. In some implementations, multiple uses of a class definition is counted only once in each deployment or for each user, depending on the payment structure (e.g., fees per use license or per sale) established by the definition supplier of the class definition. - In some implementations, in a marketplace of reusable class definitions, each reused class definition can be ranked against other reused class definitions according to the aggregate performance of the class definition in all the deployments that used the class definition. In some implementations, the performance of a deployment can be associated with each class definition that contributed to the configuration of the deployment, and used in evaluating the quality of the class definition. In some implementations, only performances of those components whose configurations are influenced by a class definition are associated with the class definition and used in evaluating the quality of the class definition.
- For example, when the cloud-service manager identified multiple components in multiple deployments that are influenced by a virtual machine class definition, the aggregated performance of the multiple components are used in evaluating the quality of the virtual machine class definition. In addition, when the cloud-service manager identifies all of the class definitions that contributed to the configuration of a frontend role component of a deployment, the performance associated with the frontend role component in the deployment will be associated with each of these identified class definitions.
- In some implementations, a quality score is calculated for each class definition based on the aggregated performance associated with all or multiple components or deployments that are configured based at least in part on the class definition. The quality score can be presented with the class definition in the definition selection interface provided by the cloud-service provider. In some implementations, multiple quality metrics can be calculated for each class definition based on, for example, the scales of the deployments that utilized the class definition, the weight or influence of the class definition in each deployment that utilized the class definition, the availability, fault tolerance, scalability, and failure rate of the components configured according to the class definition, the types of problems encountered, the modifications required to solve the encountered problems, explicit user feedback, and so on. Based on the various quality metrics, one or more types of quality scores can be provided for each shared class definition and a potential definition user can browse the list of available shared class definitions based on the quality scores.
- Although the above example describes the quality scores with respect to reusable class definitions, similar quality scores can be calculated for reusable class modules, reusable configuration specifications, or configuration-wrapped software solutions.
-
FIG. 6 is a flow diagram of anexample process 600 for processing a configuration specification written in an object-oriented specification language. An example of such a high-level object-oriented specification language is described in the examples shown inFIGS. 3A-3C . Theexample process 600 can be performed by a cloud-service provider (e.g., the cloud-service provider 104 shown inFIG. 1 ), such as by a cloud-service manager (e.g., the cloud-service manager 222) of the cloud-service provider. In some implementations, the cloud-service manager performs theprocess 600 by an API translator component (e.g., the API translator 404 inFIG. 4 ). - In the
example process 600, a configuration specification for configuring a cloud-based deployment is received (e.g., by the API translator of a cloud-service provider) (602). The configuration specification is written in an object-oriented specification language and requires instantiation of class definitions of one or more classes. Each class models a respective data or functional component of the cloud-based deployment using a group of configurable class parameters. The respective class definition of each class represents a requested state of the data or functional component modeled by the class. A plurality of API calls for configuring the cloud-based deployment are derived based on the class definitions of the one or more classes (604). Then, the API translator of the cloud-service provider causes the plurality of API calls to be executed to configure the cloud-based deployment (606). - In some implementations, the one or more classes include at least an existing base class and at least a customized class extended from the existing base class. In some implementations, the customized class inherits respective class parameters of the existing base class and modifies a value of at least one of the class parameters inherited from the existing base class. In addition, or alternatively, the customized class inherits respective class parameters of the existing base class and includes at least one new class parameter not present in the existing base class.
- In some implementations, a modification of a base class propagates to deployments of configuration specifications that include the base class or classes that inherit the base class. The cloud-service provider can modify a base class. Once the base class is modified, the cloud-service provider propagates the modification to deployments having configuration specifications that include the base class or a class inheriting the base class. In some implementations, the propagation can trigger a redeployment for each configuration specification having a modified base class. For example, if a more improved solution is discovered for executing a functional component (e.g., a faster method of running a web server is discovered), the cloud-service provider can modify the base class for the functional component to implement the improved solution. The cloud-service provider identifies configuration specifications that include the base class or classes that inherit the base class. The cloud-service provider then redeploys these configuration specifications with the improved solution.
- In some implementations, the data or functional component modeled by each class is one of a virtual device supporting a cloud-based environment, a service utilized in the cloud-based environment, a software role performed by an installed application in the cloud-based environment, a data package holding data to be used during deployment or operation of the cloud-based environment, or a combination of one or more thereof.
- In some implementations, the object-oriented specification language supports dependency between class definitions, and a definition dependency between a first class and a second class represents a deployment dependency between respective components modeled by the first and the second class. In some implementations, the definition dependency between the first class and the second class is expressed by a class parameter of the first class where the class parameter of the first class refers to an instance of the second class.
- In some implementations, the object-oriented specification language supports connectivity between class definitions, and a value assignment linking an instance of a second class to a class parameter of a first class represents a connectivity between respective components modeled by the first class and the second class.
-
FIG. 7 is a flow diagram of an example process 700 for deriving a block diagram showing a topology of a cloud-based deployment based on the configuration specification of the cloud-based deployment. The example process 700 can be performed by a cloud-service manager of a cloud-service provider (e.g., the cloud-service provider 104 shown inFIGS. 1 and 4 ). - In the example process 700, the cloud-service provider identifies, based on the respective class definitions of the one or more classes in a configuration specification, a plurality of data and functional components modeled by the one or more classes and one or more dependency and connectivity relationships existing among the plurality of data or functional components (702). Then, the cloud-service provider derives a block diagram of a cloud-based environment based on the identified plurality of data and functional components and the identified dependency and connectivity relationships (704). In some implementations, when deriving the block diagram, the cloud-service provider also represents trigger events for dynamic reconfiguration of the cloud-based environment in the block diagram.
-
FIG. 8 is a flow diagram of anexample process 800 for monitoring performance of cloud-based deployments and associating the performance with class definitions that are used in configuring the cloud-based deployments. - In the
example process 800, for each class definition, the cloud-service provider identifies an aspect of the cloud-based deployments that are influenced by the class definition in terms the respective initial configuration state of the aspect (802). The cloud-service provider monitors one or more performance metrics associated with the identified aspect (804). The cloud-service provider associates the one or more performance metrics with the class definition (806). Then, the cloud-service provider utilizes the one or more performance metrics in calculating a quality metric of the class definition (808). -
FIG. 9 is a flow diagram of anexample process 900 for evaluating the quality of a reused class definition based on aggregated performance of multiple cloud-based deployments that were configured at least in part based on the reused class definition. - In the
example process 900, the cloud-service provider identifies a plurality of cloud-based deployments each having been carried out according to a respective configuration specification written in the object-oriented specification language (902). The cloud-service provider then identifies at least one base class whose class definition is used in multiple of the plurality of cloud-based deployments (904). The cloud-service provider monitors respective performance of each of the multiple of the plurality of cloud-based deployments (906). The cloud-service provider then calculates a quality metric of the at least one base class based on aggregated performance of the multiple of the plurality of cloud-based deployments (908). In some implementations, the respective performance of each of the multiple of the plurality of cloud-based environment is a performance associated with a data or function component modeled by the at least one class. -
FIG. 10 is a flow diagram of anexample process 1000 for deriving API calls for configuring a cloud-based deployment based on class definitions used in a configuration specification. - In the
example process 1000, the cloud-service provider stores respective class definitions of a plurality of core classes of the object-oriented specification language (1010). Each core class corresponds to a modular component of a cloud-based environment and each core class is extendable with additional class parameters to configure the respective modular component. The cloud-service provider also stores a mapping between each of the core classes and a respective group of API calls (1020). The respective group of API calls is for configuring the modular component associated with the core class according to the class parameters of the core class. The cloud-service provider also stores a plurality of protocols for modifying the respective groups of API calls associated with each core class to obtain a new group of API calls for a new class definition derived from the core class (1030). - In some implementations, to derive the plurality of API calls for configuring the cloud-based deployment, the cloud-service provider derives the plurality of API calls based on the respective groups of API calls associated with one or more of the plurality of core classes from which the one or more classes of the configuration specification are derived, and based on the plurality of protocols for modifying the respective groups of API calls.
- In some implementations, the plurality of protocols further includes rules for imposing an ordering of the groups of API calls according to dependency and connectivity relationships specified in class definitions written according to the object-oriented specification language.
-
FIG. 11 is a flow diagram of an example process 1100 for providing a platform for sharing reusable class definitions. The example process 1100 can be performed by a cloud-service provider or a platform provider that does not provider cloud-based services. - In the example process 1100, the cloud-service provider or platform provider receives a respective definition submission from each of a plurality of definition suppliers (1110). The respective definition submission includes one or more class definitions written in an object-oriented specification language. Each class definition models a data or functional component of a cloud-based deployment using a group of configurable class parameters and is extendable to create at least one new class definition by a modification to one or more of the group of configurable class parameters or an addition of one or more new class parameters. The cloud-service provider or platform provider then provides a user interface that presents the class definitions received from the plurality of definition suppliers, for review and selection by a plurality of definition users (1120).
-
FIG. 12 is a flow diagram of an example process 1200 for configuring multiple distinct cloud-based deployments based on distinct configuration specifications that all use at least one common reusable class definition. The example process 1200 can be performed by a cloud-service provider, such as the example cloud-service provider 104 shown inFIG. 4 . - In the example process 1200, the cloud-service provider receives a plurality of distinct configuration specifications written in the object-oriented specification language (1210). The plurality of distinct configuration specifications are each for configuring a distinct cloud-based deployment and including a distinct class definition that extends from the same one of the class definitions received from the plurality of definition suppliers. Then, the cloud-service provider configures each of the distinct cloud-based deployments based at least on the same one of the received class definitions and the distinct class definition that extends therefrom in the distinct configuration specification of the distinct cloud-based deployment (1220).
-
FIG. 13 is a flow diagram of an example process 1300 for charging definition users and crediting definition suppliers based on usage of the reusable class definitions provided by the definition suppliers. - In the example process 1300, for each of the received class definitions, the cloud-service provider monitors usage of the class definition in a plurality of configuration specifications that have been used to configure a plurality of cloud-based deployments (1310). The cloud-service provider records, for each use of the class definition in the plurality of configuration specifications, a credit to a definition supplier of the class definition and a charge to a definition user associated with the use (1320).
- In some implementations, the usage of the class definition includes an instantiation of the class definition in a respective configuration specification that has been used to carry out a respective cloud-based deployment. In some implementations, the usage of the class definition includes an extension of the class definition to create a new class definition that is instantiated in a respective configuration specification used to carry out a respective cloud-based deployment.
-
FIG. 14 is a flow diagram of an example process 1400 for providing a platform for selling “configuration-wrapped” software solutions. The process 1400 can be provided by a cloud-service provider or a platform provider that does not provide cloud-based services. - In the example process 1400, the cloud-service provider or platform provider receives a software submission from a software supplier (1410). The software submission includes a software application to be deployed in a cloud-based environment and a plurality of distinct configuration specifications each for deploying the software application in the cloud-based environment in a distinct manner. Then, the cloud-service provider or platform provider provides the plurality of distinct configuration specifications for review and selection by a software user (1420).
-
FIG. 15 is a flow diagram of an example process 1500 for charging software users and crediting software providers based on the selection of configuration-wrapped software solutions by software users. The example process 1500 can be performed by a cloud-service provider (e.g., the cloud-service provider 104 shown inFIG. 4 ). - In the example process 1500, the cloud-service provider receives selection of one of the plurality of distinct configuration specification by the software user (1510). The cloud-service provider deploys the software application in the cloud-based environment according to the selected distinct configuration specification (1520). Then, the cloud-service provider records a charge to the software user and a credit to the software supplier based on a respective price associated the selected distinct configuration specification (1530). In some implementations, to provide the plurality of class definitions for selection, the cloud-service provider provides the respective performance metrics with each of the plurality of class definitions for user review in a selection user interface.
-
FIG. 16 is a flow diagram of an example process 1600 for utilizing aggregated performance metrics of multiple cloud-based deployments in ranking reusable class definitions that have been used in configuring the multiple cloud-based deployments. The example process 1600 can be performed by a cloud-service provider (e.g., a cloud-service provider 104 shown inFIG. 4 ). - In the example process 1600, the cloud-service provider provides a plurality of class definitions for selection (1610). Each class definition models a respective data or functional component of a cloud-based environment using a group of configurable class parameters. Each class definition supports instantiation and inheritance of the class definition in a configuration specification for a cloud-based deployment. The cloud-service provider also derives respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments, where the multiple cloud-based deployments had been carried out according to respective configuration specifications that require instantiation of the class definition or a new class definition derived from the class definition (1620). Then, the cloud-service provider utilizes the respective performance metrics associated with each of the plurality of class definitions in ranking the plurality of class definitions (1630).
-
FIG. 17 is a flow diagram of an example process 1700 for categorizing reusable class definitions and ranking the reusable class definitions within their respective categories. - In the example process 1700, the cloud-service provider categorizing the plurality of class definitions based on the respective data or functional components of the cloud-based environment modeled by the plurality of class definitions (1710). Then, the cloud-service provider ranks the plurality of class definitions within the class definitions' respective categories (1720).
-
FIG. 18 is a flow diagram of an example process 1800 for associating performances of multiple cloud-based deployments with a class definition that was used to configure the multiple cloud-based deployments. - In the example process 1800, for each of a plurality of class definitions, the cloud-service provider identifies a plurality of cloud-based deployments that had been carried out according to respective configuration specifications that required instantiation of the class definition or at least one new class definition derived from the class definition (1810). The cloud-service provider monitors respective performances of the plurality of cloud-based deployments (1820). The cloud-service provider then associates the respective performances of the plurality of deployments with the class definition (1830).
-
FIG. 19 is a flow diagram of an example process 1900 for deriving performance metrics associated with a reused class definition based on aggregated performance of multiple deployments. - When deriving respective performance metrics associated with each of a plurality of class definitions based on aggregated performance of multiple cloud-based deployments, the cloud-service provider performs the example process 1900. In the example process 1900, the cloud-service provider, for each of the plurality of class definitions, identifies one or more data or functional components in the plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition (1910). The cloud-service provider identifies one or more performance metrics associated with the identified one or more data or functional components (1920). Then, the cloud-service provider derives the respective performance metrics associated with the class definition by aggregating the identified one or more performance metrics (1930). In some implementations, the performance metrics include one or more measures of latency, reliability, scalability, availability, or security.
-
FIG. 20 is a flow diagram of anexample process 2000 for utilizing multiple factors in ranking reusable class definitions. - In the
example process 2000, for each class definition, the cloud-service provider tracks a respective count of cloud-based deployments that have been configured at least in part according to the class definition (2010). Optionally, the cloud-service provider tracks a respective count of problems encountered in cloud-based deployments that have been configured at least in part according to the class definition. Optionally, the cloud-service provider also tracks a number of required changes to resolve the problems encountered in the cloud-based deployments that have been configured at least in part according to the class definition. Then, the cloud-service provider utilizes the respective counts associated with the plurality of class definitions in the ranking of the plurality of class definitions (2020). Optionally, the cloud-service provider also utilizes the respective counts of the problems and the respective numbers of required changes associated with the plurality of class definitions in the ranking of the plurality of class definitions. - In some implementations, the respective numbers of required changes associated with the plurality of class definitions are used to calculate respective weights given to the respective performance metrics associated with the plurality of class definitions in ranking the plurality of class definitions.
- Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a computer storage medium for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on a propagated signal that is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.
- The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
- A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing or executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.
- Computer readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
- To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's user device in response to requests received from the web browser.
- Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
- The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
- Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
- Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.
Claims (30)
1. A computer-implemented method, comprising:
providing a plurality of class definitions for selection, each class definition modeling a respective data or functional component of a cloud-based environment using a group of configurable class parameters, each class definition supporting instantiation and inheritance of the class definition in a configuration specification for a cloud-based deployment;
deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments, wherein the multiple cloud-based deployments had been carried out according to respective configuration specifications that require instantiation of the class definition or a new class definition derived from the class definition; and
utilizing the respective performance metrics associated with each of the plurality of class definitions in ranking the plurality of class definitions.
2. The method of claim 1 , further comprising:
categorizing the plurality of class definitions based on the respective data or functional components of the cloud-based environment modeled by the plurality of class definitions; and
ranking the plurality of class definitions within the class definitions' respective categories.
3. The method of claim 1 , wherein providing the plurality of class definitions for selection further comprises:
providing the respective performance metrics with each of the plurality of class definitions for user review in a selection user interface.
4. The method of claim 1 , further comprising:
for each of the plurality of class definitions:
identifying a plurality of cloud-based deployments that had been carried out according to respective configuration specifications that required instantiation of the class definition or at least one new class definition derived from the class definition;
monitoring respective performances of the plurality of cloud-based deployments; and
associating the respective performances of the plurality of deployments with the class definition.
5. The method of claim 4 , wherein deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments further comprises:
for each of the plurality of class definitions:
identifying one or more data or functional components in the plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition;
identifying one or more performance metrics associated with the identified one or more data or functional components; and
deriving the respective performance metrics associated with the class definition by aggregating the identified one or more performance metrics.
6. The method of claim 1 , wherein the performance metrics include one or more measures of latency, reliability, scalability, availability, or security.
7. The method of claim 1 , further comprising:
for each of the plurality of class definitions:
tracking a respective count of cloud-based deployments that have been configured at least in part according to the class definition; and
utilizing the respective counts associated with the plurality of class definitions in the ranking of the plurality of class definitions.
8. The method of claim 1 , further comprising:
for each of the plurality of class definitions:
tracking a respective count of problems encountered in cloud-based deployments that have been configured at least in part according to the class definition;
tracking a number of required changes to resolve the problems encountered in the cloud-based deployments that have been configured at least in part according to the class definition, wherein the numbers of required changes are used to calculate respective weights given to the respective performance metrics associated with the plurality of class definitions in ranking the plurality of class definitions; and
utilizing the respective counts of the problems and the respective numbers of required changes associated with the plurality of class definitions in the ranking of the plurality of class definitions.
9. The method of claim 1 , further comprising:
receiving a respective definition submission from each of a plurality of definition suppliers, wherein the respective definition submission includes one or more class definitions written in a specification language, and each class definition models a data or functional component of a cloud-based deployment using a group of configurable class parameters and is extendable to create at least one new class definition by a modification to one or more of the group of configurable class parameters or an addition of one or more new class parameters;
providing a user interface that presents the class definitions received from the plurality of definition suppliers, for review and selection by a plurality of definition users.
10. The method of claim 9 , further comprising:
receiving a plurality of distinct configuration specifications written in the specification language, the plurality of distinct configuration specifications each for configuring a distinct cloud-based deployment and including a distinct class definition that extends from a same one of the class definitions received from the plurality of definition suppliers; and
configuring each of the distinct cloud-based deployments based at least on the same one of the received class definitions and the distinct class definition that extends therefrom in the distinct configuration specification of the distinct cloud-based deployment.
11. The method of claim 9 , further comprising:
for each of the received class definitions:
monitoring usage of the class definition in a plurality of configuration specifications that have been used to configure a plurality of cloud-based deployments; and
recording, for each use of the class definition in the plurality of configuration specifications, a credit to a definition supplier of the class definition and a charge to a definition user associated with the use.
12. The method of claim 11 , wherein:
the usage of the class definition includes at least one of an instantiation of the class definition in a respective configuration specification that has been used to carry out a respective cloud-based deployment or an extension of the class definition to create a new class definition that is instantiated in a respective configuration specification used to carry out a respective cloud-based deployment.
13. The method of claim 9 , further comprising:
receiving a software submission from a software supplier, the software submission including a software application to be deployed in a cloud-based environment and a plurality of distinct configuration specifications each for deploying the software application in the cloud-based environment in a distinct manner; and
providing the plurality of distinct configuration specifications for review and selection by a software user.
14. The method of claim 13 , further comprising:
receiving selection of one of the plurality of distinct configuration specification by the software user;
deploying the software application in the cloud-based environment according to the selected distinct configuration specification; and
recording a charge to the software user and a credit to the software supplier based on a respective price associated the selected distinct configuration specification.
15. The method of claim 1 , wherein providing a plurality of class definitions for selection further comprises:
receiving, from a user, input selecting a first class definition that models a first data or functional component of the cloud-based environment;
identifying one or more collections of class definitions, wherein each collection of class definitions includes the first class definition and at least one additional class definition that models a respective data or functional component other than the first data or functional component; and
providing, to the user, the one or more collections of class definitions for selection.
16. The method of claim 15 , further comprising:
for each of the one or more collections of class definitions:
identifying one or more data or functional components in a plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition;
identifying one or more performance metrics associated with the identified one or more data or functional components; and
deriving the respective performance metrics associated with the collection of class definitions by aggregating the identified one or more performance metrics.
17. The method of claim 15 , further comprising:
receiving a selection of a collection of class definitions;
identifying a configuration specification associated with the collection of class definitions; and
configuring a cloud-based deployment based on the configuration specification.
18. A computer-implemented method, comprising:
modifying one or more base classes whose class definition is used in multiple of the plurality of cloud-based deployments, wherein the base classes model a respective data or functional component of a cloud-based environment using a group of configurable class parameters, and the base classes support instantiation and inheritance of the class definition;
identifying a plurality of cloud-based deployments each having been carried out according to a respective configuration specification, the respective configuration specification written in a specification language, and the respective configuration specification including the modified base classes or classes that inherit the modified base classes; and
reconfiguring, for each cloud-based deployment, the cloud-based deployment based on the one or more modified base classes.
19. The computer-implemented method of claim 18 , wherein:
the data or functional component modeled by each class is one of a virtual device supporting a cloud-based environment, a service utilized in the cloud-based environment, a software role performed by an installed application in the cloud-based environment, a data package holding data to be used during deployment or operation of the cloud-based environment, or a combination of one or more thereof.
20. The computer-implemented method of claim 18 , wherein:
the specification language supports at least one of dependency or connectivity between class definitions, where a definition dependency between a first class and a second class represents a deployment dependency between respective components modeled by the first and the second class, the definition dependency between the first class and the second class is expressed by a class parameter of the first class where the class parameter of the first class refers to an instance of the second class, and where a value assignment linking an instance of a second class to a class parameter of a first class represents a connectivity between respective components modeled by the first class and the second class.
21. A system comprising:
a processor; and
computer-readable medium coupled to the processor and having instructions stored thereon, which, when executed by the processor, cause the processor to perform operations comprising:
providing a plurality of class definitions for selection, each class definition modeling a respective data or functional component of a cloud-based environment using a group of configurable class parameters, each class definition supporting instantiation and inheritance of the class definition in a configuration specification for a cloud-based deployment;
deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments, wherein the multiple cloud-based deployments had been carried out according to respective configuration specifications that require instantiation of the class definition or a new class definition derived from the class definition; and
utilizing the respective performance metrics associated with each of the plurality of class definitions in ranking the plurality of class definitions.
22. The system of claim 21 , wherein providing a plurality of class definitions for selection further comprises:
receiving, from a user, input selecting a first class definition that models a first data or functional component of the cloud-based environment;
identifying one or more collections of class definitions, wherein each collection of class definitions includes the first class definition and at least one additional class definition that models a respective data or functional component other than the first data or functional component; and
providing, to the user, the one or more collections of class definitions for selection.
23. The system of claim 22 , further comprising:
for each of the one or more collections of class definitions:
identifying one or more data or functional components in a plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition;
identifying one or more performance metrics associated with the identified one or more data or functional components; and
deriving the respective performance metrics associated with the collection of class definitions by aggregating the identified one or more performance metrics.
24. The system of claim 22 , further comprising:
receiving a selection of a collection of class definitions;
identifying a configuration specification associated with the collection of class definitions; and
configuring a cloud-based deployment based on the configuration specification.
25. A system comprising:
a processor; and
computer-readable medium coupled to the processor and having instructions stored thereon, which, when executed by the processor, cause the processor to perform operations comprising
modifying one or more base classes whose class definition is used in multiple of the plurality of cloud-based deployments, wherein the base classes model a respective data or functional component of a cloud-based environment using a group of configurable class parameters, and the base classes support instantiation and inheritance of the class definition;
identifying a plurality of cloud-based deployments each having been carried out according to a respective configuration specification, the respective configuration specification written in a specification language, and the respective configuration specification including the modified base classes or classes that inherit the modified base classes; and
reconfiguring, for each cloud-based deployment, the cloud-based deployment based on the one or more modified base classes.
26. The system of claim 25 , wherein:
the data or functional component modeled by each class is one of a virtual device supporting a cloud-based environment, a service utilized in the cloud-based environment, a software role performed by an installed application in the cloud-based environment, a data package holding data to be used during deployment or operation of the cloud-based environment, or a combination of one or more thereof
27. A computer-readable medium having instructions stored thereon, which, when executed by a processor, cause the processor to perform operations comprising:
providing a plurality of class definitions for selection, each class definition modeling a respective data or functional component of a cloud-based environment using a group of configurable class parameters, each class definition supporting instantiation and inheritance of the class definition in a configuration specification for a cloud-based deployment;
deriving respective performance metrics associated with each of the plurality of class definitions based on aggregated performance of multiple cloud-based deployments, wherein the multiple cloud-based deployments had been carried out according to respective configuration specifications that require instantiation of the class definition or a new class definition derived from the class definition; and
utilizing the respective performance metrics associated with each of the plurality of class definitions in ranking the plurality of class definitions.
28. The computer-readable medium of claim 27 , wherein providing a plurality of class definitions for selection further comprises:
receiving, from a user, input selecting a first class definition that models a first data or functional component of the cloud-based environment;
identifying one or more collections of class definitions, wherein each collection of class definitions includes the first class definition and at least one additional class definition that models a respective data or functional component other than the first data or functional component; and
providing, to the user, the one or more collections of class definitions for selection.
29. The computer-readable medium of claim 28 , further comprising:
for each of the one or more collections of class definitions:
identifying one or more data or functional components in a plurality of cloud-based deployments that were configured according to the class definition or a new class definition derived from the class definition;
identifying one or more performance metrics associated with the identified one or more data or functional components; and
deriving the respective performance metrics associated with the collection of class definitions by aggregating the identified one or more performance metrics.
30. The computer-readable medium of claim 28 , further comprising:
receiving a selection of a collection of class definitions;
identifying a configuration specification associated with the collection of class definitions; and
configuring a cloud-based deployment based on the configuration specification.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/421,124 US20120266159A1 (en) | 2011-03-16 | 2012-03-15 | Selection of Ranked Configurations |
US15/050,137 US9557978B2 (en) | 2011-03-16 | 2016-02-22 | Selection of ranked configurations |
US15/385,223 US10241770B2 (en) | 2011-03-16 | 2016-12-20 | Cloud-based deployment using object-oriented classes |
US16/360,630 US11237810B2 (en) | 2011-03-16 | 2019-03-21 | Cloud-based deployment using templates |
US17/647,942 US20220137943A1 (en) | 2011-03-16 | 2022-01-13 | Selection of ranked configurations |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161453478P | 2011-03-16 | 2011-03-16 | |
US13/421,124 US20120266159A1 (en) | 2011-03-16 | 2012-03-15 | Selection of Ranked Configurations |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/050,137 Continuation US9557978B2 (en) | 2011-03-16 | 2016-02-22 | Selection of ranked configurations |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120266159A1 true US20120266159A1 (en) | 2012-10-18 |
Family
ID=46726649
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/247,830 Active US8261295B1 (en) | 2011-03-16 | 2011-09-28 | High-level language for specifying configurations of cloud-based deployments |
US14/005,548 Active 2033-05-13 US9870211B2 (en) | 2011-03-16 | 2012-03-15 | High-level language for specifying configurations of cloud-based deployments |
US13/421,124 Abandoned US20120266159A1 (en) | 2011-03-16 | 2012-03-15 | Selection of Ranked Configurations |
US15/050,137 Active US9557978B2 (en) | 2011-03-16 | 2016-02-22 | Selection of ranked configurations |
US15/385,223 Active US10241770B2 (en) | 2011-03-16 | 2016-12-20 | Cloud-based deployment using object-oriented classes |
US16/360,630 Active US11237810B2 (en) | 2011-03-16 | 2019-03-21 | Cloud-based deployment using templates |
US17/647,942 Pending US20220137943A1 (en) | 2011-03-16 | 2022-01-13 | Selection of ranked configurations |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/247,830 Active US8261295B1 (en) | 2011-03-16 | 2011-09-28 | High-level language for specifying configurations of cloud-based deployments |
US14/005,548 Active 2033-05-13 US9870211B2 (en) | 2011-03-16 | 2012-03-15 | High-level language for specifying configurations of cloud-based deployments |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/050,137 Active US9557978B2 (en) | 2011-03-16 | 2016-02-22 | Selection of ranked configurations |
US15/385,223 Active US10241770B2 (en) | 2011-03-16 | 2016-12-20 | Cloud-based deployment using object-oriented classes |
US16/360,630 Active US11237810B2 (en) | 2011-03-16 | 2019-03-21 | Cloud-based deployment using templates |
US17/647,942 Pending US20220137943A1 (en) | 2011-03-16 | 2022-01-13 | Selection of ranked configurations |
Country Status (6)
Country | Link |
---|---|
US (7) | US8261295B1 (en) |
EP (3) | EP3153964B1 (en) |
CN (2) | CN108614716B (en) |
AU (1) | AU2012229110B2 (en) |
CA (1) | CA2830237C (en) |
WO (1) | WO2012125815A2 (en) |
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090063225A1 (en) * | 2007-08-31 | 2009-03-05 | Tom Baeyens | Tool for automated transformation of a business process definition into a web application package |
US20090144729A1 (en) * | 2007-11-30 | 2009-06-04 | Alejandro Guizar | Portable business process deployment model across different application servers |
US20130055203A1 (en) * | 2011-08-31 | 2013-02-28 | International Business Machines Corporation | Locating isolation points in an application under multi-tenant environment |
US20130073716A1 (en) * | 2011-09-21 | 2013-03-21 | International Business Machines Corporation | Determining resource instance placement in a networked computing environment |
US20130232480A1 (en) * | 2012-03-02 | 2013-09-05 | Vmware, Inc. | Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud environment |
US20140025827A1 (en) * | 2012-07-18 | 2014-01-23 | Cloud vLab, Inc. | Methods and systems for dynamically provisioning resources for on-demand courses |
US20140047434A1 (en) * | 2012-08-10 | 2014-02-13 | Adobe Systems Incorporated | Systems and Methods for Cloud Management |
US20140059194A1 (en) * | 2012-08-21 | 2014-02-27 | Verizon Patent And Licensing Inc. | Cloud services layer dynamic api |
US8677449B1 (en) | 2012-03-19 | 2014-03-18 | Google Inc. | Exposing data to virtual machines |
FR3000857A1 (en) * | 2013-01-10 | 2014-07-11 | Virtuor | METHOD, HOUSING AND SYSTEM FOR ACCESSING A COMPUTER SERVICE THROUGH A COMMUNICATION NETWORK |
US20140215430A1 (en) * | 2013-01-30 | 2014-07-31 | International Business Machines Corporation | Method and apparatus for enabling layered property definition in traditional and cloud computing environments |
US8800009B1 (en) | 2011-12-30 | 2014-08-05 | Google Inc. | Virtual machine service access |
US20140280946A1 (en) * | 2013-03-12 | 2014-09-18 | Xerox Corporation | System and process to recommend cloud service cloud configuration based on service similarity |
US8874888B1 (en) | 2011-01-13 | 2014-10-28 | Google Inc. | Managed boot in a cloud system |
US8958293B1 (en) | 2011-12-06 | 2015-02-17 | Google Inc. | Transparent load-balancing for cloud computing services |
US8966198B1 (en) | 2011-09-01 | 2015-02-24 | Google Inc. | Providing snapshots of virtual storage devices |
US8983860B1 (en) | 2012-01-30 | 2015-03-17 | Google Inc. | Advertising auction system |
US8997078B2 (en) | 2011-04-12 | 2015-03-31 | Pivotal Software, Inc. | Release lifecycle management system for a multi-node application |
US20150113020A1 (en) * | 2011-09-23 | 2015-04-23 | The Mathworks, Inc. | Requirements framework |
US20150113042A1 (en) * | 2013-10-23 | 2015-04-23 | Sap Ag | Open user interface |
US9052961B2 (en) | 2012-03-02 | 2015-06-09 | Vmware, Inc. | System to generate a deployment plan for a cloud infrastructure according to logical, multi-tier application blueprint |
US9063818B1 (en) | 2011-03-16 | 2015-06-23 | Google Inc. | Automated software updating based on prior activity |
US20150186823A1 (en) * | 2013-12-26 | 2015-07-02 | Infosys Limited | Methods, systems and computer-readable media for componentizing a business requirement |
US9075979B1 (en) | 2011-08-11 | 2015-07-07 | Google Inc. | Authentication based on proximity to mobile device |
US20150242200A1 (en) * | 2012-09-03 | 2015-08-27 | Telefonaktiebolaget L M Ericsson (Publ) | Re-configuration in cloud computing environments |
US9135037B1 (en) | 2011-01-13 | 2015-09-15 | Google Inc. | Virtual network protocol |
WO2015136309A1 (en) * | 2014-03-13 | 2015-09-17 | Vodafone Ip Licensing Limited | Management of resource allocation in a mobile telecommunication network |
US20150295781A1 (en) * | 2012-12-03 | 2015-10-15 | Hewlett-Packard Development Company, L.P. | Cloud object |
US9170798B2 (en) | 2012-03-02 | 2015-10-27 | Vmware, Inc. | System and method for customizing a deployment plan for a multi-tier application in a cloud infrastructure |
US20150347123A1 (en) * | 2013-08-13 | 2015-12-03 | Huawei Technologies Co., Ltd. | Application upgrade method and apparatus |
US9231933B1 (en) | 2011-03-16 | 2016-01-05 | Google Inc. | Providing application programs with access to secured resources |
US9237087B1 (en) | 2011-03-16 | 2016-01-12 | Google Inc. | Virtual machine name resolution |
US9250830B2 (en) | 2011-01-20 | 2016-02-02 | Google Inc. | Storing data across a plurality of storage nodes |
US20160110183A1 (en) * | 2014-04-30 | 2016-04-21 | Pivotal Software, Inc. | Fast deployment across cloud platforms |
US9348652B2 (en) | 2012-07-02 | 2016-05-24 | Vmware, Inc. | Multi-tenant-cloud-aggregation and application-support system |
US20160239273A1 (en) * | 2015-02-12 | 2016-08-18 | International Business Machines Corporation | Sparse object instantiation |
US9448790B2 (en) | 2010-04-26 | 2016-09-20 | Pivotal Software, Inc. | Rapid updating of cloud applications |
US9557978B2 (en) | 2011-03-16 | 2017-01-31 | Google Inc. | Selection of ranked configurations |
US20170195171A1 (en) * | 2015-12-31 | 2017-07-06 | At&T Intellectual Property I, L.P. | Method and apparatus for optimizing a software defined network configuration |
US9720952B2 (en) | 2012-03-27 | 2017-08-01 | Google Inc. | Virtual block devices |
US9766940B2 (en) | 2014-02-10 | 2017-09-19 | International Business Machines Corporation | Enabling dynamic job configuration in mapreduce |
US9772831B2 (en) | 2010-04-26 | 2017-09-26 | Pivotal Software, Inc. | Droplet execution engine for dynamic server application deployment |
US10031783B2 (en) | 2012-03-02 | 2018-07-24 | Vmware, Inc. | Execution of a distributed deployment plan for a multi-tier application in a cloud infrastructure |
US10366428B2 (en) | 2014-11-18 | 2019-07-30 | Zoho Corporation Private Limited | Methods and systems for grouping and prioritization of website visitors for live support |
US10488835B2 (en) * | 2016-04-27 | 2019-11-26 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for configuring a tester equipped for testing an electronic control unit |
US10685169B2 (en) | 2017-05-08 | 2020-06-16 | Zoho Corporation Private Limited | Messaging application with presentation window |
US10795567B2 (en) | 2014-08-22 | 2020-10-06 | Zoho Corporation Private Limited | Multimedia applications and user interfaces |
US10884815B2 (en) | 2018-10-29 | 2021-01-05 | Pivotal Software, Inc. | Independent services platform |
US10963420B2 (en) | 2012-08-10 | 2021-03-30 | Adobe Inc. | Systems and methods for providing hot spare nodes |
US11323401B2 (en) | 2014-09-24 | 2022-05-03 | Zoho Corporation Private Limited | Email interface for application creation and management |
US11394659B2 (en) * | 2013-08-27 | 2022-07-19 | Red Hat, Inc. | Tracking costs for a deployable instance |
US11392710B2 (en) | 2014-09-24 | 2022-07-19 | Zoho Corporation Private Limited | Methods and apparatus for document creation via email |
Families Citing this family (257)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069599B2 (en) * | 2008-06-19 | 2015-06-30 | Servicemesh, Inc. | System and method for a cloud computing abstraction layer with security zone facilities |
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 |
US8514868B2 (en) | 2008-06-19 | 2013-08-20 | Servicemesh, Inc. | Cloud computing gateway, cloud computing hypervisor, and methods for implementing same |
US10411975B2 (en) | 2013-03-15 | 2019-09-10 | Csc Agility Platform, Inc. | System and method for a cloud computing abstraction with multi-tier deployment policy |
US8533343B1 (en) | 2011-01-13 | 2013-09-10 | Google Inc. | Virtual network pairs |
US8812586B1 (en) | 2011-02-15 | 2014-08-19 | Google Inc. | Correlating status information generated in a computer network |
US8359224B2 (en) * | 2011-05-31 | 2013-01-22 | Software Ag | Systems and/or methods for identifying service candidates based on service identification indicators and associated algorithms |
US9501295B2 (en) * | 2011-07-05 | 2016-11-22 | International Business Machines Corporation | Method and system for handling locale and language in a cloud management system |
US20140006482A1 (en) | 2012-07-02 | 2014-01-02 | Vmware, Inc. | Method and system for providing inter-cloud services |
US9781205B2 (en) * | 2011-09-12 | 2017-10-03 | Microsoft Technology Licensing, Llc | Coordination engine for cloud selection |
US9069616B2 (en) | 2011-09-23 | 2015-06-30 | Google Inc. | Bandwidth throttling of virtual disks |
CN103034453B (en) * | 2011-09-30 | 2015-11-25 | 国际商业机器公司 | The method and apparatus of the persistant data of pre-installation application in managing virtual machines example |
US9542432B2 (en) | 2011-09-30 | 2017-01-10 | Oracle International Corporation | Systems and methods for multitenancy data |
US9529576B2 (en) * | 2011-09-30 | 2016-12-27 | Oracle International Corporation | Systems and methods for object to XML mappings |
US8914515B2 (en) * | 2011-10-28 | 2014-12-16 | International Business Machines Corporation | Cloud optimization using workload analysis |
CN103890706B (en) | 2011-10-31 | 2019-06-14 | 惠普发展公司,有限责任合伙企业 | Rendering for rendering content is permitted |
US8793379B2 (en) * | 2011-11-01 | 2014-07-29 | Lsi Corporation | System or method to automatically provision a storage volume by having an app-aware based appliance in a storage cloud environment |
US9043766B2 (en) * | 2011-12-16 | 2015-05-26 | Facebook, Inc. | Language translation using preprocessor macros |
US9160681B2 (en) * | 2012-01-27 | 2015-10-13 | Empire Technology Development Llc | Spiral protocol for iterative service level agreement (SLA) execution in cloud migration |
US9183189B1 (en) * | 2012-02-01 | 2015-11-10 | Amazon Technologies, Inc. | Network site hosting in a managed environment |
US8996887B2 (en) | 2012-02-24 | 2015-03-31 | Google Inc. | Log structured volume encryption for virtual machines |
US9916545B1 (en) * | 2012-02-29 | 2018-03-13 | Amazon Technologies, Inc. | Portable network interfaces for authentication and license enforcement |
CN102638567B (en) * | 2012-03-02 | 2015-05-20 | 深圳市朗科科技股份有限公司 | Multi-application cloud storage platform and cloud storage terminal |
US20130232470A1 (en) * | 2012-03-03 | 2013-09-05 | John C. Yung | Launching an application stack on a cloud platform environment |
US8335851B1 (en) * | 2012-03-12 | 2012-12-18 | Ringcentral, Inc. | Network resource deployment for cloud-based services |
US10089152B1 (en) | 2012-03-19 | 2018-10-02 | Amazon Technologies, Inc. | Using scripts to bootstrap applications with metadata from a template |
US8949930B1 (en) | 2012-03-19 | 2015-02-03 | Amazon Technologies, Inc. | Template representation of security resources |
US10169083B1 (en) * | 2012-03-30 | 2019-01-01 | EMC IP Holding Company LLC | Scalable method for optimizing information pathway |
US9462080B2 (en) * | 2012-04-27 | 2016-10-04 | Hewlett-Packard Development Company, L.P. | Management service to manage a file |
US20130290511A1 (en) * | 2012-04-27 | 2013-10-31 | Susan Chuzhi Tu | Managing a sustainable cloud computing service |
US20130290934A1 (en) * | 2012-04-30 | 2013-10-31 | Gregory Simon | Monitoring applications executing on a computer device using programmatic triggers |
WO2013184134A1 (en) * | 2012-06-08 | 2013-12-12 | Hewlett-Packard Development Company, L.P. | Cloud application deployment |
US9952909B2 (en) * | 2012-06-20 | 2018-04-24 | Paypal, Inc. | Multiple service classes in a shared cloud |
US9058232B2 (en) * | 2012-06-25 | 2015-06-16 | Cloudvolumes, Inc. | Systems and methods to create a clean install of an application |
US9491035B1 (en) * | 2012-06-29 | 2016-11-08 | EMC IP Holding Company LLC | Cloud services directory protocol |
US10057179B2 (en) * | 2012-07-20 | 2018-08-21 | Hewlett Packard Enterprise Development Company Lp | Policy based scaling of network resources |
US10755208B2 (en) * | 2012-08-15 | 2020-08-25 | Sap Se | Methods, apparatus and system for mediating services |
US8805921B2 (en) * | 2012-08-20 | 2014-08-12 | International Business Machines Corporation | System and method supporting application solution composition on cloud |
US9378055B1 (en) | 2012-08-22 | 2016-06-28 | Societal Innovations Ipco Limited | Configurable platform architecture and method for use thereof |
US10225323B2 (en) * | 2012-09-07 | 2019-03-05 | Oracle International Corporation | System and method for providing java cloud services for use with a cloud computing environment |
US9274843B2 (en) | 2012-09-14 | 2016-03-01 | Ca, Inc. | Multi-redundant switchable process pooling for cloud it services delivery |
US9311161B2 (en) * | 2012-09-14 | 2016-04-12 | Ca, Inc. | Automatically configured management service payloads for cloud IT services delivery |
US10237370B2 (en) * | 2012-09-22 | 2019-03-19 | Avaya Inc. | Co-resident plug-ins of third party software |
CN104838369A (en) * | 2012-09-27 | 2015-08-12 | 惠普发展公司,有限责任合伙企业 | Dynamic management of cloud computing infrastructure |
US9154296B1 (en) | 2012-09-28 | 2015-10-06 | Emc Corporation | Secure and anonymous distributed authentication |
US9565213B2 (en) | 2012-10-22 | 2017-02-07 | Centripetal Networks, Inc. | Methods and systems for protecting a secured network |
US9137205B2 (en) | 2012-10-22 | 2015-09-15 | Centripetal Networks, Inc. | Methods and systems for protecting a secured network |
EP2929717A4 (en) * | 2012-12-07 | 2016-07-20 | Hewlett Packard Entpr Dev Lp | Network resource management |
WO2014090488A1 (en) * | 2012-12-11 | 2014-06-19 | Deutsche Telekom Ag | Computer-implemented method, system and computer program product for deploying an application on a computing resource |
EP2939131A4 (en) * | 2012-12-27 | 2016-08-17 | Intel Corp | Reservation and execution image writing of native computing devices |
US9122510B2 (en) | 2013-01-02 | 2015-09-01 | International Business Machines Corporation | Querying and managing computing resources in a networked computing environment |
US9203806B2 (en) | 2013-01-11 | 2015-12-01 | Centripetal Networks, Inc. | Rule swapping in a packet network |
US9002997B2 (en) | 2013-01-22 | 2015-04-07 | Amazon Technologies, Inc. | Instance host configuration |
US8966025B2 (en) | 2013-01-22 | 2015-02-24 | Amazon Technologies, Inc. | Instance configuration on remote platforms |
US9588740B1 (en) * | 2013-03-09 | 2017-03-07 | Ca, Inc. | Systems, methods and computer program products for construction of cloud applications |
US9124552B2 (en) | 2013-03-12 | 2015-09-01 | Centripetal Networks, Inc. | Filtering network data transfers |
US10216503B2 (en) * | 2013-03-13 | 2019-02-26 | Elasticbox Inc. | Deploying, monitoring, and controlling multiple components of an application |
US20140280805A1 (en) * | 2013-03-14 | 2014-09-18 | Rackspace Us, Inc. | Two-Sided Declarative Configuration for Cloud Deployment |
US9590872B1 (en) | 2013-03-14 | 2017-03-07 | Ca, Inc. | Automated cloud IT services delivery solution model |
US9430255B1 (en) | 2013-03-15 | 2016-08-30 | Google Inc. | Updating virtual machine generated metadata to a distribution service for sharing and backup |
WO2014145727A1 (en) * | 2013-03-15 | 2014-09-18 | Servicemesh, Inc. | Systems and methods for providing repeated use of computing resources |
US9094445B2 (en) | 2013-03-15 | 2015-07-28 | Centripetal Networks, Inc. | Protecting networks from cyber attacks and overloading |
US9665366B2 (en) | 2014-09-26 | 2017-05-30 | Oracle International Corporation | Creation of a software configuration signature for software |
US10073690B2 (en) | 2014-09-26 | 2018-09-11 | Oracle International Corporation | Populating content for a base version of an image |
US9021509B1 (en) * | 2013-04-24 | 2015-04-28 | Empire Technology Development Llc | Datacenter managed thread and multi-processing support |
CA2911614C (en) * | 2013-05-08 | 2019-10-29 | Amazon Technologies, Inc. | User-influenced placement of virtual machine instances |
US9665387B2 (en) | 2013-05-08 | 2017-05-30 | Amazon Technologies, Inc. | User-influenced placement of virtual machine instances |
WO2014189481A1 (en) | 2013-05-20 | 2014-11-27 | Empire Technology Development, Llc | Object migration between cloud environments |
US10606569B2 (en) * | 2013-06-02 | 2020-03-31 | Microsoft Technology Licensing, Llc | Declarative configuration elements |
US9223586B1 (en) * | 2013-06-27 | 2015-12-29 | Amazon Technologies, Inc. | Run-time limitations of software applications based on user characteristics |
EP2852124A4 (en) * | 2013-07-09 | 2015-12-02 | Cloud Technology Ltd G | Resource deployment method for cloud computing environment |
US9294482B2 (en) * | 2013-07-25 | 2016-03-22 | Oracle International Corporation | External platform extensions in a multi-tenant environment |
US10360064B1 (en) * | 2013-08-19 | 2019-07-23 | Amazon Technologies, Inc. | Task scheduling, execution and monitoring |
US9612815B1 (en) | 2013-08-22 | 2017-04-04 | Ca, Inc. | Method and tool for automating deployment of reference implementation architectures for pre-integrated multi-product solutions |
US9686121B2 (en) | 2013-09-23 | 2017-06-20 | Amazon Technologies, Inc. | Client-premise resource control via provider-defined interfaces |
US9485323B1 (en) | 2013-09-23 | 2016-11-01 | Amazon Technologies, Inc. | Managing pooled client-premise resources via provider-defined interfaces |
US9754303B1 (en) | 2013-10-03 | 2017-09-05 | Ca, Inc. | Service offering templates for user interface customization in CITS delivery containers |
US9270703B1 (en) | 2013-10-22 | 2016-02-23 | Amazon Technologies, Inc. | Enhanced control-plane security for network-accessible services |
US9646003B2 (en) * | 2013-11-20 | 2017-05-09 | Wolfram Research, Inc. | Cloud storage methods and systems |
US9619217B2 (en) * | 2013-11-20 | 2017-04-11 | Wolfram Research, Inc. | Methods and systems for cloud computing |
US10333789B1 (en) | 2013-12-18 | 2019-06-25 | Amazon Technologies, Inc. | Client-directed placement of remotely-configured service instances |
CN103677845B (en) * | 2013-12-24 | 2017-02-15 | 广联达软件股份有限公司 | Website application deployment method |
CN104765620B (en) * | 2014-01-02 | 2018-01-26 | 国际商业机器公司 | A kind of method and system of program module deployment |
US9436813B2 (en) * | 2014-02-03 | 2016-09-06 | Ca, Inc. | Multi-tenancy support for a product that does not support multi-tenancy |
WO2015126674A1 (en) * | 2014-02-10 | 2015-08-27 | Bigcommerce Pty. Ltd. | System, method and acrhitecture for providing integrated applications |
US10176005B2 (en) * | 2014-03-31 | 2019-01-08 | Cypherpath, Inc. | Environment virtualization |
WO2015163920A1 (en) * | 2014-04-25 | 2015-10-29 | Hewlett-Packard Development Company, L.P. | Configuration based on a blueprint |
US10148736B1 (en) * | 2014-05-19 | 2018-12-04 | Amazon Technologies, Inc. | Executing parallel jobs with message passing on compute clusters |
US9891893B2 (en) | 2014-05-21 | 2018-02-13 | N.Io Innovation, Llc | System and method for a development environment for building services for a platform instance |
AU2015263042B2 (en) * | 2014-05-21 | 2018-08-09 | N.Io Innovation, Llc | System and method for fully configurable real time processing |
US10154095B2 (en) | 2014-05-21 | 2018-12-11 | N.Io Innovation, Llc | System and method for aggregating and acting on signals from one or more remote sources in real time using a configurable platform instance |
US10516667B1 (en) * | 2014-06-03 | 2019-12-24 | Amazon Technologies, Inc. | Hidden compartments |
US10089476B1 (en) | 2014-06-03 | 2018-10-02 | Amazon Technologies, Inc. | Compartments |
US10049033B2 (en) | 2014-06-03 | 2018-08-14 | Sap Se | Application gateway for cloud computing systems |
US9471283B2 (en) * | 2014-06-11 | 2016-10-18 | Ca, Inc. | Generating virtualized application programming interface (API) implementation from narrative API documentation |
US9424065B2 (en) * | 2014-06-26 | 2016-08-23 | Vmware, Inc. | Methods and apparatus to scale application deployments in cloud computing environments using virtual machine pools |
US9378041B2 (en) * | 2014-07-08 | 2016-06-28 | Cognizant Technology Solutions India Pvt. Ltd. | Method and system for integrating and implementing virtual service packages across different service virtualization tools |
US9900391B2 (en) * | 2014-08-05 | 2018-02-20 | Microsoft Technology Licensing, Llc | Automated orchestration of infrastructure service blocks in hosted services |
US9749242B2 (en) | 2014-08-20 | 2017-08-29 | At&T Intellectual Property I, L.P. | Network platform as a service layer for open systems interconnection communication model layer 4 through layer 7 services |
US9742690B2 (en) | 2014-08-20 | 2017-08-22 | At&T Intellectual Property I, L.P. | Load adaptation architecture framework for orchestrating and managing services in a cloud computing system |
US9800673B2 (en) * | 2014-08-20 | 2017-10-24 | At&T Intellectual Property I, L.P. | Service compiler component and service controller for open systems interconnection layer 4 through layer 7 services in a cloud computing system |
US10291689B2 (en) | 2014-08-20 | 2019-05-14 | At&T Intellectual Property I, L.P. | Service centric virtual network function architecture for development and deployment of open systems interconnection communication model layer 4 through layer 7 services in a cloud computing system |
US9473567B2 (en) | 2014-08-20 | 2016-10-18 | At&T Intellectual Property I, L.P. | Virtual zones for open systems interconnection layer 4 through layer 7 services in a cloud computing system |
US9606826B2 (en) * | 2014-08-21 | 2017-03-28 | International Business Machines Corporation | Selecting virtual machines to be migrated to public cloud during cloud bursting based on resource usage and scaling policies |
US10320622B2 (en) * | 2014-08-22 | 2019-06-11 | Vmware, Inc. | Policy declarations for cloud management system |
US9817645B2 (en) * | 2014-09-17 | 2017-11-14 | Sap Se | Reusable application configuration with dynamic resource determination |
US10067959B1 (en) * | 2014-12-19 | 2018-09-04 | Amazon Technologies, Inc. | Techniques for adapting data storage systems for peaky usage models |
US10171560B2 (en) * | 2015-01-05 | 2019-01-01 | International Business Machines Corporation | Modular framework to integrate service management systems and cloud orchestrators in a hybrid cloud environment |
US9535754B1 (en) * | 2015-02-05 | 2017-01-03 | Amazon Technologies, Inc. | Dynamic provisioning of computing resources |
US9264370B1 (en) | 2015-02-10 | 2016-02-16 | Centripetal Networks, Inc. | Correlating packets in communications networks |
US9946520B1 (en) | 2015-02-26 | 2018-04-17 | MathNimbus Inc. | Conversion of interpretive language functions into web applications or services |
CN105991341A (en) * | 2015-03-06 | 2016-10-05 | 中兴通讯股份有限公司 | Method and device for realizing parameter configuration |
US10275440B2 (en) * | 2015-03-16 | 2019-04-30 | Microsoft Technology Licensing Llc | Setup data extraction for deploying a solution package |
WO2016151398A1 (en) * | 2015-03-23 | 2016-09-29 | Societal Innovations Ipco Limited | System and method for configuring a platform instance at runtime |
US10270668B1 (en) * | 2015-03-23 | 2019-04-23 | Amazon Technologies, Inc. | Identifying correlated events in a distributed system according to operational metrics |
WO2016154785A1 (en) * | 2015-03-27 | 2016-10-06 | 华为技术有限公司 | Cloud platform, application operation method and access network unit |
US20160294922A1 (en) * | 2015-03-31 | 2016-10-06 | Hewlett-Packard Development Company, L.P. | Cloud models |
US9866576B2 (en) | 2015-04-17 | 2018-01-09 | Centripetal Networks, Inc. | Rule-based network-threat detection |
CN106878334A (en) * | 2015-05-13 | 2017-06-20 | 西安三星电子研究有限公司 | The automatically dispose system and method for cloud |
FR3037165B1 (en) * | 2015-06-03 | 2022-07-29 | Bull Sas | PROGRAMMING INTERFACE DEVICE FOR GENERATING DEDICATED COMPUTER PROGRAMS FOR USE OF SHARED COMPUTER RESOURCES |
US9948746B2 (en) | 2015-06-15 | 2018-04-17 | International Business Machines Corporation | Request processing according to degradation monitoring |
JP6673355B2 (en) * | 2015-07-27 | 2020-03-25 | 日本電気株式会社 | Deployment device, deployment method, and program |
EP3329449A4 (en) * | 2015-07-31 | 2019-02-06 | Ent. Services Development Corporation LP | Federated marketplace portal |
US10769212B2 (en) * | 2015-07-31 | 2020-09-08 | Netapp Inc. | Extensible and elastic data management services engine external to a storage domain |
US20170041386A1 (en) * | 2015-08-05 | 2017-02-09 | International Business Machines Corporation | Provisioning a target hosting environment |
CN105117464B (en) * | 2015-08-25 | 2019-02-15 | 北京金山安全软件有限公司 | Application pushing method and device and service equipment |
US20170063597A1 (en) * | 2015-08-31 | 2017-03-02 | Ca, Inc. | Api provider insights collection |
CN106559438B (en) * | 2015-09-24 | 2019-12-31 | 阿里巴巴集团控股有限公司 | Program uploading method and device based on target network platform |
US9584440B1 (en) * | 2015-10-12 | 2017-02-28 | Xirsys Llc | Real-time distributed tree |
US10095482B2 (en) | 2015-11-18 | 2018-10-09 | Mastercard International Incorporated | Systems, methods, and media for graphical task creation |
US10083217B2 (en) * | 2015-11-26 | 2018-09-25 | International Business Machines Corporation | Method and system for upgrading a set of replicated state machine processes |
US10394789B1 (en) | 2015-12-07 | 2019-08-27 | Amazon Technologies, Inc. | Techniques and systems for scalable request handling in data processing systems |
US10250452B2 (en) | 2015-12-14 | 2019-04-02 | Microsoft Technology Licensing, Llc | Packaging tool for first and third party component deployment |
US20170171026A1 (en) * | 2015-12-14 | 2017-06-15 | Microsoft Technology Licensing, Llc | Configuring a cloud from aggregate declarative configuration data |
CN105607903A (en) * | 2015-12-15 | 2016-05-25 | 国云科技股份有限公司 | Openstack component deployment method |
US20170171034A1 (en) * | 2015-12-15 | 2017-06-15 | Microsoft Technology Licensing, Llc | Dynamic/on-demand packaging as part of deployment |
US10666517B2 (en) | 2015-12-15 | 2020-05-26 | Microsoft Technology Licensing, Llc | End-to-end automated servicing model for cloud computing platforms |
US9542219B1 (en) * | 2015-12-17 | 2017-01-10 | International Business Machines Corporation | Automatic analysis based scheduling of jobs to appropriate cloud resources |
US9917856B2 (en) | 2015-12-23 | 2018-03-13 | Centripetal Networks, Inc. | Rule-based network-threat detection for encrypted communications |
US11729144B2 (en) | 2016-01-04 | 2023-08-15 | Centripetal Networks, Llc | Efficient packet capture for cyber threat analysis |
US10762285B2 (en) | 2016-02-23 | 2020-09-01 | Wolfram Research, Inc. | Methods and systems for generating electronic forms |
US10652126B2 (en) | 2016-02-26 | 2020-05-12 | Arista Networks, Inc. | System and method of a cloud service provider tracer |
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 |
CN105959138B (en) * | 2016-04-29 | 2019-05-17 | 深圳大数点科技有限公司 | The system and method for micro services Dynamical Deployment based on cloud computing |
US10250456B2 (en) * | 2016-05-17 | 2019-04-02 | Microsoft Technology Licensing, Llc | Operational management in cloud computing systems |
US10452451B2 (en) * | 2016-06-10 | 2019-10-22 | Board Of Regents, The University Of Texas System | Systems and methods for scheduling of workload-aware jobs on multi-clouds |
US9977670B2 (en) | 2016-08-10 | 2018-05-22 | Bank Of America Corporation | Application programming interface for providing access to computing platform definitions |
US10469315B2 (en) | 2016-08-10 | 2019-11-05 | Bank Of America Corporation | Using computing platform definitions to provide segmented computing platforms in a computing system |
US10650621B1 (en) | 2016-09-13 | 2020-05-12 | Iocurrents, Inc. | Interfacing with a vehicular controller area network |
US10778810B2 (en) * | 2016-09-25 | 2020-09-15 | Salesforce.Com, Inc. | Staging and deployment to multiple service clouds |
US11038986B1 (en) * | 2016-09-29 | 2021-06-15 | Amazon Technologies, Inc. | Software-specific auto scaling |
US10776385B2 (en) | 2016-12-02 | 2020-09-15 | Vmware, Inc. | Methods and apparatus for transparent database switching using master-replica high availability setup in relational databases |
US10873501B2 (en) * | 2016-12-09 | 2020-12-22 | Vmware, Inc. | Methods, systems and apparatus to propagate node configuration changes to services in a distributed environment |
US10560540B2 (en) * | 2016-12-12 | 2020-02-11 | Sap Se | Optimizing provisioning of Java-based web applications on PaaS like cloud foundry |
CN108206745B (en) * | 2016-12-16 | 2020-03-20 | 华为技术有限公司 | Business operation method and device and cloud computing system |
US10802810B2 (en) * | 2016-12-27 | 2020-10-13 | Sap Se | Consuming persistent library bundles |
US10691474B2 (en) | 2017-01-03 | 2020-06-23 | International Business Machines Corporation | Text resources processing in an application |
US10776332B2 (en) * | 2017-02-08 | 2020-09-15 | International Business Machines Corporation | Managing cooperative computer software applications |
US10593009B1 (en) * | 2017-02-22 | 2020-03-17 | Amazon Technologies, Inc. | Session coordination for auto-scaled virtualized graphics processing |
CN108628661B (en) * | 2017-03-24 | 2021-11-26 | 郑芳田 | Automatic establishment method of cloud manufacturing service and cloud manufacturing system |
CN107153556A (en) * | 2017-04-28 | 2017-09-12 | 武汉票据交易中心有限公司 | The collocation method and its system of a kind of application server basic framework |
US10868719B2 (en) * | 2017-04-28 | 2020-12-15 | Oracle International Corporation | System and method for federated configuration in an application server environment |
JP6823203B2 (en) * | 2017-05-22 | 2021-01-27 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Methods and devices for creating network slices and communication systems |
US10728186B2 (en) | 2017-05-24 | 2020-07-28 | Sap Se | Preventing reader starvation during order preserving data stream consumption |
US11005733B2 (en) | 2017-06-08 | 2021-05-11 | Vmware, Inc | Methods, systems, and apparatus to scale in and/or scale out resources managed by a cloud automation system |
CN107273165B (en) * | 2017-06-19 | 2021-03-23 | 苏州浪潮智能科技有限公司 | System and method for realizing module dynamic calling |
US10503899B2 (en) | 2017-07-10 | 2019-12-10 | Centripetal Networks, Inc. | Cyberanalysis workflow acceleration |
US10284526B2 (en) | 2017-07-24 | 2019-05-07 | Centripetal Networks, Inc. | Efficient SSL/TLS proxy |
US11233777B2 (en) | 2017-07-24 | 2022-01-25 | Centripetal Networks, Inc. | Efficient SSL/TLS proxy |
CN109327490B (en) * | 2017-07-31 | 2021-01-15 | 华为技术有限公司 | Method and server for deploying cloud service component |
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US10496396B2 (en) * | 2017-09-29 | 2019-12-03 | Oracle International Corporation | Scalable artificial intelligence driven configuration management |
WO2019067747A1 (en) | 2017-09-29 | 2019-04-04 | Qloudable, Inc. | Device communication and management in computer data networks |
US10496434B2 (en) * | 2017-10-30 | 2019-12-03 | EMC IP Holding Company LLC | Elastic scaling job thread pool in a cloud event process infrastructure |
US10514935B2 (en) * | 2017-10-31 | 2019-12-24 | Salesforce.Com, Inc. | System and method for third party application enablement |
US10782887B2 (en) | 2017-11-08 | 2020-09-22 | Robin Systems, Inc. | Window-based prority tagging of IOPs in a distributed storage system |
US10846001B2 (en) | 2017-11-08 | 2020-11-24 | Robin Systems, Inc. | Allocating storage requirements in a distributed storage system |
US10353716B2 (en) | 2017-11-13 | 2019-07-16 | International Business Machines Corporation | Automated deployment and performance evaluation of a virtualized-computing environment |
US10896102B2 (en) | 2018-01-11 | 2021-01-19 | Robin Systems, Inc. | Implementing secure communication in a distributed computing system |
US11099937B2 (en) | 2018-01-11 | 2021-08-24 | Robin Systems, Inc. | Implementing clone snapshots in a distributed storage system |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US10628235B2 (en) | 2018-01-11 | 2020-04-21 | Robin Systems, Inc. | Accessing log files of a distributed computing system using a simulated file system |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US10642697B2 (en) | 2018-01-11 | 2020-05-05 | Robin Systems, Inc. | Implementing containers for a stateful application in a distributed computing system |
US10846137B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Dynamic adjustment of application resources in a distributed computing system |
US10579364B2 (en) * | 2018-01-12 | 2020-03-03 | Robin Systems, Inc. | Upgrading bundled applications in a distributed computing system |
US10642694B2 (en) | 2018-01-12 | 2020-05-05 | Robin Systems, Inc. | Monitoring containers in a distributed computing system |
US10845997B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Job manager for deploying a bundled application |
US10887167B2 (en) | 2018-04-30 | 2021-01-05 | At&T Intellectual Property I, L.P. | Adaptive software-defined storage for cloud storage workloads |
US10789065B2 (en) | 2018-05-07 | 2020-09-29 | Oracle lnternational Corporation | Method for automatically selecting configuration clustering parameters |
US10333898B1 (en) | 2018-07-09 | 2019-06-25 | Centripetal Networks, Inc. | Methods and systems for efficient network protection |
US11023328B2 (en) | 2018-07-30 | 2021-06-01 | Robin Systems, Inc. | Redo log for append only storage scheme |
US10976938B2 (en) | 2018-07-30 | 2021-04-13 | Robin Systems, Inc. | Block map cache |
US10599622B2 (en) | 2018-07-31 | 2020-03-24 | Robin Systems, Inc. | Implementing storage volumes over multiple tiers |
US10817380B2 (en) | 2018-07-31 | 2020-10-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity constraints in a bundled application |
US10860339B2 (en) * | 2018-08-03 | 2020-12-08 | Dell Products L.P. | Autonomous creation of new microservices and modification of existing microservices |
US10999163B2 (en) * | 2018-08-14 | 2021-05-04 | Juniper Networks, Inc. | Multi-cloud virtual computing environment provisioning using a high-level topology description |
US10809987B2 (en) * | 2018-08-14 | 2020-10-20 | Hyperblox Inc. | Software acceleration platform for supporting decomposed, on-demand network services |
US10868709B2 (en) | 2018-09-10 | 2020-12-15 | Oracle International Corporation | Determining the health of other nodes in a same cluster based on physical link information |
US11036439B2 (en) | 2018-10-22 | 2021-06-15 | Robin Systems, Inc. | Automated management of bundled applications |
US10908848B2 (en) | 2018-10-22 | 2021-02-02 | Robin Systems, Inc. | Automated management of bundled applications |
US10620871B1 (en) | 2018-11-15 | 2020-04-14 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10521220B1 (en) * | 2018-12-18 | 2019-12-31 | Palantir Technologies Inc. | Systems and methods for coordinating the deployment of components to defined user groups |
US11467882B2 (en) * | 2018-12-21 | 2022-10-11 | Target Brands, Inc. | Methods and systems for rapid deployment of configurable computing resources |
US11086725B2 (en) | 2019-03-25 | 2021-08-10 | Robin Systems, Inc. | Orchestration of heterogeneous multi-role applications |
US11256434B2 (en) | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
US10831387B1 (en) | 2019-05-02 | 2020-11-10 | Robin Systems, Inc. | Snapshot reservations in a distributed storage system |
CN110134458B (en) * | 2019-05-14 | 2022-04-26 | 中国人民解放军海军工程大学 | QNX operating system universal passive code software parameter adjusting method and system implementation method |
US10877684B2 (en) | 2019-05-15 | 2020-12-29 | Robin Systems, Inc. | Changing a distributed storage volume from non-replicated to replicated |
WO2020247499A1 (en) * | 2019-06-03 | 2020-12-10 | Cerebri AI Inc. | Machine learning pipeline optimization |
US11635990B2 (en) | 2019-07-01 | 2023-04-25 | Nutanix, Inc. | Scalable centralized manager including examples of data pipeline deployment to an edge system |
US11501881B2 (en) | 2019-07-03 | 2022-11-15 | Nutanix, Inc. | Apparatus and method for deploying a mobile device as a data source in an IoT system |
CN110324191B (en) * | 2019-07-09 | 2022-08-23 | 西安点告网络科技有限公司 | Hybrid cloud deployment method, device and system |
WO2021034241A1 (en) * | 2019-08-22 | 2021-02-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and packet core system for common charging of network connectivity and cloud resource utilization |
US11226847B2 (en) | 2019-08-29 | 2022-01-18 | Robin Systems, Inc. | Implementing an application manifest in a node-specific manner using an intent-based orchestrator |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11249851B2 (en) | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11113158B2 (en) | 2019-10-04 | 2021-09-07 | Robin Systems, Inc. | Rolling back kubernetes applications |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
CN110888646B (en) * | 2019-11-28 | 2021-11-12 | 京东数字科技控股有限公司 | Deployment method, device, system and storage medium |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
CN111198726B (en) * | 2019-12-30 | 2023-07-14 | 中科星图股份有限公司 | Configuration system and method suitable for traditional application clouding |
US11138004B1 (en) * | 2020-05-22 | 2021-10-05 | Paypal, Inc. | Modification of application functionality using object-oriented configuration data |
CN111752723B (en) * | 2020-06-06 | 2021-05-04 | 中国科学院电子学研究所苏州研究院 | Visual multi-source service management system and implementation method thereof |
US11108638B1 (en) | 2020-06-08 | 2021-08-31 | Robin Systems, Inc. | Health monitoring of automatically deployed and managed network pipelines |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
US11516096B2 (en) | 2020-06-17 | 2022-11-29 | Red Hat, Inc. | Automatically managing performance of software in a distributed computing environment |
CA3177385A1 (en) | 2020-06-29 | 2022-01-06 | Prabhu PALANISAMY | Policy-based genomic data sharing for software-as-a-service tenants |
JP2023532297A (en) * | 2020-06-29 | 2023-07-27 | イルミナ インコーポレイテッド | Temporary cloud provider credentials via secure discovery framework |
US11032160B1 (en) * | 2020-07-31 | 2021-06-08 | Boomi, Inc. | Serverless elastic scale API gateway management system and method of an API service control plane system |
US11740882B2 (en) * | 2020-08-21 | 2023-08-29 | Omni Technologies | Modular software integration tools and systems |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
CN112153156B (en) * | 2020-09-28 | 2023-01-10 | 上海骞云信息科技有限公司 | Data processing method and device for cloud service |
US11044139B1 (en) * | 2020-09-29 | 2021-06-22 | Atlassian Pty Ltd | Apparatuses, methods, and computer program products for dynamic generation and traversal of object dependency data structures |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11467947B2 (en) * | 2020-10-19 | 2022-10-11 | EMC IP Holding Company LLC | Automated mocking of computer system deployments |
US11362996B2 (en) | 2020-10-27 | 2022-06-14 | Centripetal Networks, Inc. | Methods and systems for efficient adaptive logging of cyber threat incidents |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
US11726764B2 (en) | 2020-11-11 | 2023-08-15 | Nutanix, Inc. | Upgrade systems for service domains |
US11665221B2 (en) | 2020-11-13 | 2023-05-30 | Nutanix, Inc. | Common services model for multi-cloud platform |
GB202017948D0 (en) | 2020-11-13 | 2020-12-30 | Microsoft Technology Licensing Llc | Deploying applications |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
TWI810502B (en) | 2020-12-11 | 2023-08-01 | 財團法人工業技術研究院 | Motion control system and method |
CN112968808B (en) * | 2021-02-01 | 2022-06-21 | 中科视拓(南京)科技有限公司 | Universal method for deploying deep target detection network API |
US11736585B2 (en) | 2021-02-26 | 2023-08-22 | Nutanix, Inc. | Generic proxy endpoints using protocol tunnels including life cycle management and examples for distributed cloud native services and applications |
US11159546B1 (en) | 2021-04-20 | 2021-10-26 | Centripetal Networks, Inc. | Methods and systems for efficient threat context-aware packet filtering for network protection |
US11960918B2 (en) * | 2021-07-23 | 2024-04-16 | Dell Products L.P. | Creating product orchestration engines |
US11868319B2 (en) * | 2021-12-08 | 2024-01-09 | International Business Machines Corporation | File storage system based on attributes of file components |
US11789948B2 (en) * | 2021-12-10 | 2023-10-17 | Sap Se | Computational dependency directory |
US12063263B2 (en) * | 2022-02-02 | 2024-08-13 | Grass Valley Canada | System and method for dynamically managing a media production work package for a media production |
CN114546473A (en) * | 2022-02-23 | 2022-05-27 | 北京金堤科技有限公司 | Method and device for automatically and integrally deploying service, electronic equipment and storage medium |
US12086269B2 (en) * | 2022-03-21 | 2024-09-10 | Bank Of America Corporation | System for deployable software vulnerability testing platform |
US20230362234A1 (en) * | 2022-05-04 | 2023-11-09 | Microsoft Technology Licensing, Llc | Method and system of managing resources in a cloud computing environment |
US11875196B1 (en) * | 2023-03-07 | 2024-01-16 | Appian Corporation | Systems and methods for execution in dynamic application runtime environments |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020065957A1 (en) * | 1996-04-30 | 2002-05-30 | International Business Machines Corporation | Object oriented information retrieval framework mechanism |
US20040193388A1 (en) * | 2003-03-06 | 2004-09-30 | Geoffrey Outhred | Design time validation of systems |
US20050132007A1 (en) * | 2002-03-29 | 2005-06-16 | Scian Anthony F. | System and method for object oriented interface checking and method dispatching |
US20050216908A1 (en) * | 2004-03-25 | 2005-09-29 | Keohane Susann M | Assigning computational processes in a computer system to workload management classes |
US20090276771A1 (en) * | 2005-09-15 | 2009-11-05 | 3Tera, Inc. | Globally Distributed Utility Computing Cloud |
US20120096134A1 (en) * | 2007-06-22 | 2012-04-19 | Suit John M | System and method for migration of network entities to a cloud infrastructure |
Family Cites Families (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463768A (en) | 1994-03-17 | 1995-10-31 | General Electric Company | Method and system for analyzing error logs for diagnostics |
US5778444A (en) | 1996-05-06 | 1998-07-07 | Motorola, Inc. | Method and apparatus for reset-sensitive and controlled register write accesses in a data processing system with user and test modes |
US6178482B1 (en) | 1997-11-03 | 2001-01-23 | Brecis Communications | Virtual register sets |
US6505211B1 (en) * | 1999-01-26 | 2003-01-07 | International Business Machines Corporation | Method for providing for persistence of java classes where the persistence semantics may be orthogonal to the class definition |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US7266766B1 (en) * | 1999-09-30 | 2007-09-04 | International Business Machines Corporation | Method for developing a custom tagbean |
US6598179B1 (en) | 2000-03-31 | 2003-07-22 | International Business Machines Corporation | Table-based error log analysis |
WO2001098936A2 (en) * | 2000-06-22 | 2001-12-27 | Microsoft Corporation | Distributed computing services platform |
JP2002207620A (en) | 2001-01-10 | 2002-07-26 | Toshiba Corp | File system and data caching method of the same system |
US7367028B2 (en) * | 2001-08-14 | 2008-04-29 | National Instruments Corporation | Graphically deploying programs on devices in a system |
US7117243B2 (en) | 2001-10-02 | 2006-10-03 | Citrix Systems, Inc. | Methods for distributed program execution with file-type association in a client-server network |
US6898697B1 (en) | 2002-03-29 | 2005-05-24 | Advanced Micro Devices, Inc. | Efficient method for mode change detection and synchronization |
US7555538B2 (en) * | 2002-12-26 | 2009-06-30 | Research In Motion Limited | System and method for building and execution of platform-neutral generic services' client applications |
US7055071B2 (en) | 2003-01-09 | 2006-05-30 | International Business Machines Corporation | Method and apparatus for reporting error logs in a logical environment |
US7496648B2 (en) * | 2003-10-23 | 2009-02-24 | Microsoft Corporation | Managed peer name resolution protocol (PNRP) interfaces for peer to peer networking |
US7373451B2 (en) | 2003-12-08 | 2008-05-13 | The Board Of Trustees Of The Leland Stanford Junior University | Cache-based system management architecture with virtual appliances, network repositories, and virtual appliance transceivers |
US20050166011A1 (en) | 2004-01-23 | 2005-07-28 | Burnett Robert J. | System for consolidating disk storage space of grid computers into a single virtual disk drive |
US20070271604A1 (en) | 2004-03-17 | 2007-11-22 | Fidelitygenetic Ltd. | Secure Transaction of Dna Data |
JP4147198B2 (en) | 2004-03-23 | 2008-09-10 | 株式会社日立製作所 | Storage system |
US7478388B1 (en) | 2004-04-21 | 2009-01-13 | Vmware, Inc. | Switching between multiple software entities using different operating modes of a processor in a computer system |
US7512721B1 (en) | 2004-05-25 | 2009-03-31 | Qlogic, Corporation | Method and apparatus for efficient determination of status from DMA lists |
US7650331B1 (en) | 2004-06-18 | 2010-01-19 | Google Inc. | System and method for efficient large-scale data processing |
GB2418326B (en) | 2004-09-17 | 2007-04-11 | Hewlett Packard Development Co | Network vitrualization |
WO2006043012A1 (en) * | 2004-10-22 | 2006-04-27 | New Technology/Enterprise Limited | Data processing system and method |
GB2419702A (en) | 2004-10-29 | 2006-05-03 | Hewlett Packard Development Co | Virtual overlay infrastructures which can be suspended and later reactivated |
GB2419697A (en) | 2004-10-29 | 2006-05-03 | Hewlett Packard Development Co | Virtual overlay infrastructures each having an infrastructure controller |
GB2419701A (en) | 2004-10-29 | 2006-05-03 | Hewlett Packard Development Co | Virtual overlay infrastructure with dynamic control of mapping |
US20060161753A1 (en) | 2005-01-18 | 2006-07-20 | Aschoff John G | Method, apparatus and program storage device for providing automatic performance optimization of virtualized storage allocation within a virtualized storage subsystem |
US20070067384A1 (en) * | 2005-09-21 | 2007-03-22 | Angelov Dimitar V | System and method for web services configuration creation and validation |
US7761573B2 (en) | 2005-12-07 | 2010-07-20 | Avaya Inc. | Seamless live migration of virtual machines across optical networks |
EP1818844B1 (en) | 2006-02-10 | 2013-03-13 | Secunet Security Networks Aktiengesellschaft | Method for using security tokens |
US20070288921A1 (en) | 2006-06-13 | 2007-12-13 | King Steven R | Emulating a network-like communication connection between virtual machines on a physical device |
US20080086515A1 (en) | 2006-10-06 | 2008-04-10 | International Business Machines Corporation | Method and System for a Soft Error Collection of Trace Files |
US7653833B1 (en) | 2006-10-31 | 2010-01-26 | Hewlett-Packard Development Company, L.P. | Terminating a non-clustered workload in response to a failure of a system with a clustered workload |
US20080205415A1 (en) | 2007-02-28 | 2008-08-28 | Morales Henry N Jerez | Access, Connectivity and Interoperability for Devices and Services |
US20080270704A1 (en) | 2007-04-30 | 2008-10-30 | He Dingshan | Cache arrangement for improving raid i/o operations |
US7836285B2 (en) | 2007-08-08 | 2010-11-16 | Analog Devices, Inc. | Implementation of variable length instruction encoding using alias addressing |
US8478880B2 (en) * | 2007-08-31 | 2013-07-02 | Palm, Inc. | Device profile-based media management |
US8892454B2 (en) * | 2007-09-27 | 2014-11-18 | Sap Se | Configuration of web services |
US20090097657A1 (en) | 2007-10-05 | 2009-04-16 | Scheidt Edward M | Constructive Channel Key |
JP4480756B2 (en) | 2007-12-05 | 2010-06-16 | 富士通株式会社 | Storage management device, storage system control device, storage management program, data storage system, and data storage method |
US8156491B2 (en) | 2008-02-29 | 2012-04-10 | Red Hat, Inc. | Fault tolerant virtual machine |
US9753712B2 (en) * | 2008-03-20 | 2017-09-05 | Microsoft Technology Licensing, Llc | Application management within deployable object hierarchy |
US20090249471A1 (en) | 2008-03-27 | 2009-10-01 | Moshe Litvin | Reversible firewall policies |
US8990911B2 (en) | 2008-03-30 | 2015-03-24 | Emc Corporation | System and method for single sign-on to resources across a network |
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 |
US8103776B2 (en) | 2008-08-29 | 2012-01-24 | Red Hat, Inc. | Systems and methods for storage allocation in provisioning of virtual machines |
US8065714B2 (en) | 2008-09-12 | 2011-11-22 | Hytrust, Inc. | Methods and systems for securely managing virtualization platform |
US8271974B2 (en) * | 2008-10-08 | 2012-09-18 | Kaavo Inc. | Cloud computing lifecycle management for N-tier applications |
CN101425010B (en) * | 2008-12-03 | 2011-01-12 | 中国人民解放军国防科学技术大学 | Deploy and collocation method under general computation surroundings |
JP5802137B2 (en) | 2009-02-05 | 2015-10-28 | ダブリューダブリューパス コーポレイションWwpass Corporation | Centralized authentication system and method with secure private data storage |
US8578076B2 (en) | 2009-05-01 | 2013-11-05 | Citrix Systems, Inc. | Systems and methods for establishing a cloud bridge between virtual storage resources |
US8429647B2 (en) | 2009-05-06 | 2013-04-23 | Vmware, Inc. | Virtual machine migration across network by publishing routes to the associated virtual networks via virtual router after the start of migration of the virtual machine |
US8463885B2 (en) | 2009-08-31 | 2013-06-11 | Red Hat, Inc. | Systems and methods for generating management agent installations |
US8693485B2 (en) | 2009-10-14 | 2014-04-08 | Dell Products, Lp | Virtualization aware network switch |
US8537860B2 (en) | 2009-11-03 | 2013-09-17 | International Business Machines Corporation | Apparatus for switching traffic between virtual machines |
US8949408B2 (en) | 2009-12-18 | 2015-02-03 | Microsoft Corporation | Session monitoring of virtual desktops in a virtual machine farm |
CN101840346B (en) * | 2009-12-30 | 2013-08-21 | 北京世纪互联宽带数据中心有限公司 | Method and system for deploying cloud host computer |
CN101763266A (en) * | 2010-01-13 | 2010-06-30 | 上海动量软件技术有限公司 | Platform system and method for realizing cloud component deployment and configuration of computer software system |
US9021046B2 (en) * | 2010-01-15 | 2015-04-28 | Joyent, Inc | Provisioning server resources in a cloud resource |
US9953178B2 (en) | 2010-02-03 | 2018-04-24 | Os Nexus, Inc. | Role based access control utilizing scoped permissions |
WO2011116248A1 (en) * | 2010-03-17 | 2011-09-22 | Siamak Farah | A cloud-based desktop and subscription application platform apparatuses, methods and systems |
US9547676B2 (en) * | 2010-03-30 | 2017-01-17 | Disos Pty Ltd. | Cloud computing operating system and method |
US9443078B2 (en) | 2010-04-20 | 2016-09-13 | International Business Machines Corporation | Secure access to a virtual machine |
US8954564B2 (en) * | 2010-05-28 | 2015-02-10 | Red Hat, Inc. | Cross-cloud vendor mapping service in cloud marketplace |
US8661132B2 (en) * | 2010-05-28 | 2014-02-25 | International Business Machines Corporation | Enabling service virtualization in a cloud |
US10235439B2 (en) * | 2010-07-09 | 2019-03-19 | State Street Corporation | Systems and methods for data warehousing in private cloud environment |
US8739157B2 (en) * | 2010-08-26 | 2014-05-27 | Adobe Systems Incorporated | System and method for managing cloud deployment configuration of an application |
US20120102506A1 (en) * | 2010-10-20 | 2012-04-26 | Microsoft Corporation | Web service patterns for globally distributed service fabric |
CN101969391B (en) * | 2010-10-27 | 2012-08-01 | 北京邮电大学 | Cloud platform supporting fusion network service and operating method thereof |
US20120103506A1 (en) * | 2010-11-02 | 2012-05-03 | Magnum Magnetics Corporation | Magnetic Sheet Systems |
CN101969475A (en) * | 2010-11-15 | 2011-02-09 | 张军 | Business data controllable distribution and fusion application system based on cloud computing |
US8909784B2 (en) | 2010-11-23 | 2014-12-09 | Red Hat, Inc. | Migrating subscribed services from a set of clouds to a second set of clouds |
US20120159517A1 (en) * | 2010-12-20 | 2012-06-21 | Microsoft Corporation | Managing a model-based distributed application |
US20120185688A1 (en) | 2011-01-13 | 2012-07-19 | Google Inc. | Processor mode locking |
US9419921B1 (en) | 2011-01-13 | 2016-08-16 | Google Inc. | Network address translation for virtual machines |
US9258271B1 (en) | 2011-01-13 | 2016-02-09 | Google Inc. | Network address translation for virtual machines |
US8874888B1 (en) | 2011-01-13 | 2014-10-28 | Google Inc. | Managed boot in a cloud system |
US9135037B1 (en) | 2011-01-13 | 2015-09-15 | Google Inc. | Virtual network protocol |
US9619662B1 (en) | 2011-01-13 | 2017-04-11 | Google Inc. | Virtual network pairs |
US8745329B2 (en) | 2011-01-20 | 2014-06-03 | Google Inc. | Storing data across a plurality of storage nodes |
US20120204187A1 (en) * | 2011-02-08 | 2012-08-09 | International Business Machines Corporation | Hybrid Cloud Workload Management |
US10678602B2 (en) * | 2011-02-09 | 2020-06-09 | Cisco Technology, Inc. | Apparatus, systems and methods for dynamic adaptive metrics based application deployment on distributed infrastructures |
US8812586B1 (en) | 2011-02-15 | 2014-08-19 | Google Inc. | Correlating status information generated in a computer network |
US9454406B2 (en) * | 2011-02-28 | 2016-09-27 | Novell, Inc. | Techniques for cloud bursting |
US8261295B1 (en) | 2011-03-16 | 2012-09-04 | Google Inc. | High-level language for specifying configurations of cloud-based deployments |
US9237087B1 (en) | 2011-03-16 | 2016-01-12 | Google Inc. | Virtual machine name resolution |
US8533796B1 (en) | 2011-03-16 | 2013-09-10 | Google Inc. | Providing application programs with access to secured resources |
US9176759B1 (en) | 2011-03-16 | 2015-11-03 | Google Inc. | Monitoring and automatically managing applications |
US9063818B1 (en) | 2011-03-16 | 2015-06-23 | Google Inc. | Automated software updating based on prior activity |
US9069616B2 (en) | 2011-09-23 | 2015-06-30 | Google Inc. | Bandwidth throttling of virtual disks |
US8276140B1 (en) | 2011-11-14 | 2012-09-25 | Google Inc. | Adjustable virtual network performance |
US8958293B1 (en) | 2011-12-06 | 2015-02-17 | Google Inc. | Transparent load-balancing for cloud computing services |
US8800009B1 (en) | 2011-12-30 | 2014-08-05 | Google Inc. | Virtual machine service access |
US8983860B1 (en) | 2012-01-30 | 2015-03-17 | Google Inc. | Advertising auction system |
US9672052B1 (en) | 2012-02-16 | 2017-06-06 | Google Inc. | Secure inter-process communication |
US8677449B1 (en) | 2012-03-19 | 2014-03-18 | Google Inc. | Exposing data to virtual machines |
US8909939B1 (en) | 2012-04-04 | 2014-12-09 | Google Inc. | Distribution of cryptographic host keys in a cloud computing environment |
US8813240B1 (en) | 2012-05-30 | 2014-08-19 | Google Inc. | Defensive techniques to increase computer security |
-
2011
- 2011-09-28 US US13/247,830 patent/US8261295B1/en active Active
-
2012
- 2012-03-15 WO PCT/US2012/029210 patent/WO2012125815A2/en active Application Filing
- 2012-03-15 AU AU2012229110A patent/AU2012229110B2/en active Active
- 2012-03-15 CA CA2830237A patent/CA2830237C/en active Active
- 2012-03-15 US US14/005,548 patent/US9870211B2/en active Active
- 2012-03-15 CN CN201710094976.3A patent/CN108614716B/en active Active
- 2012-03-15 CN CN201280023417.9A patent/CN103582867B/en active Active
- 2012-03-15 EP EP16195727.9A patent/EP3153964B1/en active Active
- 2012-03-15 US US13/421,124 patent/US20120266159A1/en not_active Abandoned
- 2012-03-15 EP EP24167191.6A patent/EP4369197A3/en active Pending
- 2012-03-15 EP EP12757835.9A patent/EP2686766B1/en active Active
-
2016
- 2016-02-22 US US15/050,137 patent/US9557978B2/en active Active
- 2016-12-20 US US15/385,223 patent/US10241770B2/en active Active
-
2019
- 2019-03-21 US US16/360,630 patent/US11237810B2/en active Active
-
2022
- 2022-01-13 US US17/647,942 patent/US20220137943A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020065957A1 (en) * | 1996-04-30 | 2002-05-30 | International Business Machines Corporation | Object oriented information retrieval framework mechanism |
US20050132007A1 (en) * | 2002-03-29 | 2005-06-16 | Scian Anthony F. | System and method for object oriented interface checking and method dispatching |
US20040193388A1 (en) * | 2003-03-06 | 2004-09-30 | Geoffrey Outhred | Design time validation of systems |
US20050216908A1 (en) * | 2004-03-25 | 2005-09-29 | Keohane Susann M | Assigning computational processes in a computer system to workload management classes |
US20090276771A1 (en) * | 2005-09-15 | 2009-11-05 | 3Tera, Inc. | Globally Distributed Utility Computing Cloud |
US20120096134A1 (en) * | 2007-06-22 | 2012-04-19 | Suit John M | System and method for migration of network entities to a cloud infrastructure |
Cited By (105)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9058571B2 (en) | 2007-08-31 | 2015-06-16 | Red Hat, Inc. | Tool for automated transformation of a business process definition into a web application package |
US20090063225A1 (en) * | 2007-08-31 | 2009-03-05 | Tom Baeyens | Tool for automated transformation of a business process definition into a web application package |
US20090144729A1 (en) * | 2007-11-30 | 2009-06-04 | Alejandro Guizar | Portable business process deployment model across different application servers |
US8954952B2 (en) * | 2007-11-30 | 2015-02-10 | Red Hat, Inc. | Portable business process deployment model across different application servers |
US11604630B2 (en) | 2010-04-26 | 2023-03-14 | Pivotal Software, Inc. | Droplet execution engine for dynamic server application deployment |
US9772831B2 (en) | 2010-04-26 | 2017-09-26 | Pivotal Software, Inc. | Droplet execution engine for dynamic server application deployment |
US10817273B1 (en) | 2010-04-26 | 2020-10-27 | Pivotal Software, Inc. | Droplet execution engine for dynamic server application deployment |
US9448790B2 (en) | 2010-04-26 | 2016-09-20 | Pivotal Software, Inc. | Rapid updating of cloud applications |
US9135037B1 (en) | 2011-01-13 | 2015-09-15 | Google Inc. | Virtual network protocol |
US9740516B1 (en) | 2011-01-13 | 2017-08-22 | Google Inc. | Virtual network protocol |
US8874888B1 (en) | 2011-01-13 | 2014-10-28 | Google Inc. | Managed boot in a cloud system |
US9250830B2 (en) | 2011-01-20 | 2016-02-02 | Google Inc. | Storing data across a plurality of storage nodes |
US9237087B1 (en) | 2011-03-16 | 2016-01-12 | Google Inc. | Virtual machine name resolution |
US10241770B2 (en) | 2011-03-16 | 2019-03-26 | Google Llc | Cloud-based deployment using object-oriented classes |
US9231933B1 (en) | 2011-03-16 | 2016-01-05 | Google Inc. | Providing application programs with access to secured resources |
US9557978B2 (en) | 2011-03-16 | 2017-01-31 | Google Inc. | Selection of ranked configurations |
US11237810B2 (en) | 2011-03-16 | 2022-02-01 | Google Llc | Cloud-based deployment using templates |
US9063818B1 (en) | 2011-03-16 | 2015-06-23 | Google Inc. | Automated software updating based on prior activity |
US9870211B2 (en) | 2011-03-16 | 2018-01-16 | Google Inc. | High-level language for specifying configurations of cloud-based deployments |
US8997078B2 (en) | 2011-04-12 | 2015-03-31 | Pivotal Software, Inc. | Release lifecycle management system for a multi-node application |
US10942724B2 (en) | 2011-04-12 | 2021-03-09 | Pivotal Software, Inc. | Release lifecycle management system for multi-node application |
US10241774B2 (en) | 2011-04-12 | 2019-03-26 | Pivotal Software, Inc. | Release lifecycle management system for multi-node application |
US9015710B2 (en) | 2011-04-12 | 2015-04-21 | Pivotal Software, Inc. | Deployment system for multi-node applications |
US9569198B2 (en) | 2011-04-12 | 2017-02-14 | Pivotal Software, Inc. | Release lifecycle management system for multi-node application |
US9043767B2 (en) | 2011-04-12 | 2015-05-26 | Pivotal Software, Inc. | Release management system for a multi-node application |
US9710259B2 (en) | 2011-07-13 | 2017-07-18 | Vmware, Inc. | System and method for customizing a deployment plan for a multi-tier application in a cloud infrastructure |
US9075979B1 (en) | 2011-08-11 | 2015-07-07 | Google Inc. | Authentication based on proximity to mobile device |
US9769662B1 (en) | 2011-08-11 | 2017-09-19 | Google Inc. | Authentication based on proximity to mobile device |
US10212591B1 (en) | 2011-08-11 | 2019-02-19 | Google Llc | Authentication based on proximity to mobile device |
US20130055203A1 (en) * | 2011-08-31 | 2013-02-28 | International Business Machines Corporation | Locating isolation points in an application under multi-tenant environment |
US8949787B2 (en) * | 2011-08-31 | 2015-02-03 | International Business Machines Corporation | Locating isolation points in an application under multi-tenant environment |
US20130055204A1 (en) * | 2011-08-31 | 2013-02-28 | International Business Machines Corporation | Locating isolation points in an application under multi-tenant environment |
US8966198B1 (en) | 2011-09-01 | 2015-02-24 | Google Inc. | Providing snapshots of virtual storage devices |
US9251234B1 (en) | 2011-09-01 | 2016-02-02 | Google Inc. | Providing snapshots of virtual storage devices |
US9501233B2 (en) | 2011-09-01 | 2016-11-22 | Google Inc. | Providing snapshots of virtual storage devices |
US9811370B2 (en) | 2011-09-21 | 2017-11-07 | International Business Machines Corporation | Determining an optimal datacenter for placing a resource instance in a cloud that would benefit an intended set of end users in a geographical region |
US20130073716A1 (en) * | 2011-09-21 | 2013-03-21 | International Business Machines Corporation | Determining resource instance placement in a networked computing environment |
US9229784B2 (en) * | 2011-09-21 | 2016-01-05 | International Business Machines Corporation | Determining resource instance placement in a networked computing environment |
US20150113020A1 (en) * | 2011-09-23 | 2015-04-23 | The Mathworks, Inc. | Requirements framework |
US9348889B2 (en) * | 2011-09-23 | 2016-05-24 | The Mathworks, Inc. | Requirements framework |
US8958293B1 (en) | 2011-12-06 | 2015-02-17 | Google Inc. | Transparent load-balancing for cloud computing services |
US8800009B1 (en) | 2011-12-30 | 2014-08-05 | Google Inc. | Virtual machine service access |
US8983860B1 (en) | 2012-01-30 | 2015-03-17 | Google Inc. | Advertising auction system |
US11941452B2 (en) | 2012-03-02 | 2024-03-26 | Vmware, Inc. | System to generate a deployment plan for a cloud infrastructure according to logical, multi-tier application blueprint |
US9047133B2 (en) * | 2012-03-02 | 2015-06-02 | Vmware, Inc. | Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud environment |
US9645858B2 (en) | 2012-03-02 | 2017-05-09 | Vmware, Inc. | Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud infrastructure |
US20130232480A1 (en) * | 2012-03-02 | 2013-09-05 | Vmware, Inc. | Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud environment |
US9170798B2 (en) | 2012-03-02 | 2015-10-27 | Vmware, Inc. | System and method for customizing a deployment plan for a multi-tier application in a cloud infrastructure |
US9052961B2 (en) | 2012-03-02 | 2015-06-09 | Vmware, Inc. | System to generate a deployment plan for a cloud infrastructure according to logical, multi-tier application blueprint |
US10095496B2 (en) | 2012-03-02 | 2018-10-09 | Vmware, Inc. | Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud infrastructure |
US10031783B2 (en) | 2012-03-02 | 2018-07-24 | Vmware, Inc. | Execution of a distributed deployment plan for a multi-tier application in a cloud infrastructure |
US8677449B1 (en) | 2012-03-19 | 2014-03-18 | Google Inc. | Exposing data to virtual machines |
US9720952B2 (en) | 2012-03-27 | 2017-08-01 | Google Inc. | Virtual block devices |
US10911524B2 (en) | 2012-07-02 | 2021-02-02 | Vmware, Inc. | Multi-tenant-cloud-aggregation and application-support system |
US11856050B2 (en) | 2012-07-02 | 2023-12-26 | Vmware, Inc. | Multi-tenant-cloud-aggregation and application-support system |
US9348652B2 (en) | 2012-07-02 | 2016-05-24 | Vmware, Inc. | Multi-tenant-cloud-aggregation and application-support system |
US11516283B2 (en) | 2012-07-02 | 2022-11-29 | Vmware, Inc. | Multi-tenant-cloud-aggregation and application-support system |
US10257261B2 (en) | 2012-07-02 | 2019-04-09 | Vmware, Inc. | Multi-tenant-cloud-aggregation and application-support system |
US20140025827A1 (en) * | 2012-07-18 | 2014-01-23 | Cloud vLab, Inc. | Methods and systems for dynamically provisioning resources for on-demand courses |
US10051037B2 (en) | 2012-07-18 | 2018-08-14 | Google Llc | Methods and systems for dynamically provisioning resources for on-demand courses |
US9674270B2 (en) * | 2012-07-18 | 2017-06-06 | Google Inc. | Methods and systems for dynamically provisioning resources for on-demand courses |
US20140047434A1 (en) * | 2012-08-10 | 2014-02-13 | Adobe Systems Incorporated | Systems and Methods for Cloud Management |
US9292352B2 (en) * | 2012-08-10 | 2016-03-22 | Adobe Systems Incorporated | Systems and methods for cloud management |
US10963420B2 (en) | 2012-08-10 | 2021-03-30 | Adobe Inc. | Systems and methods for providing hot spare nodes |
US20140059194A1 (en) * | 2012-08-21 | 2014-02-27 | Verizon Patent And Licensing Inc. | Cloud services layer dynamic api |
US9098346B2 (en) * | 2012-08-21 | 2015-08-04 | Verizon Patent And Licensing Inc. | Cloud services layer dynamic API |
US10430172B2 (en) * | 2012-09-03 | 2019-10-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Re-configuration in cloud computing environments |
US20150242200A1 (en) * | 2012-09-03 | 2015-08-27 | Telefonaktiebolaget L M Ericsson (Publ) | Re-configuration in cloud computing environments |
US20150295781A1 (en) * | 2012-12-03 | 2015-10-15 | Hewlett-Packard Development Company, L.P. | Cloud object |
FR3000857A1 (en) * | 2013-01-10 | 2014-07-11 | Virtuor | METHOD, HOUSING AND SYSTEM FOR ACCESSING A COMPUTER SERVICE THROUGH A COMMUNICATION NETWORK |
WO2014108271A1 (en) * | 2013-01-10 | 2014-07-17 | Virtuor | Method, box, and system for accessing a computer service via a communication network |
US20140215430A1 (en) * | 2013-01-30 | 2014-07-31 | International Business Machines Corporation | Method and apparatus for enabling layered property definition in traditional and cloud computing environments |
US9268533B2 (en) * | 2013-01-30 | 2016-02-23 | International Business Machines Corporation | Method and apparatus for enabling layered property definition in traditional and cloud computing environments |
US9552232B2 (en) * | 2013-03-12 | 2017-01-24 | Xerox Corporation | System and process to recommend cloud service cloud configuration based on service similarity |
US20140280946A1 (en) * | 2013-03-12 | 2014-09-18 | Xerox Corporation | System and process to recommend cloud service cloud configuration based on service similarity |
US10649761B2 (en) | 2013-08-13 | 2020-05-12 | Huawei Technologies Co., Ltd. | Application upgrade method and apparatus |
US9696984B2 (en) * | 2013-08-13 | 2017-07-04 | Huawei Technologies Co., Ltd. | Application upgrade method and apparatus |
US10191730B2 (en) * | 2013-08-13 | 2019-01-29 | Huawei Technologies Co., Ltd. | Application upgrade method and apparatus |
US20150347123A1 (en) * | 2013-08-13 | 2015-12-03 | Huawei Technologies Co., Ltd. | Application upgrade method and apparatus |
US11394659B2 (en) * | 2013-08-27 | 2022-07-19 | Red Hat, Inc. | Tracking costs for a deployable instance |
US20150113042A1 (en) * | 2013-10-23 | 2015-04-23 | Sap Ag | Open user interface |
US9509761B2 (en) * | 2013-10-23 | 2016-11-29 | Sap Se | Open user interface |
US20150186823A1 (en) * | 2013-12-26 | 2015-07-02 | Infosys Limited | Methods, systems and computer-readable media for componentizing a business requirement |
US9766940B2 (en) | 2014-02-10 | 2017-09-19 | International Business Machines Corporation | Enabling dynamic job configuration in mapreduce |
WO2015136309A1 (en) * | 2014-03-13 | 2015-09-17 | Vodafone Ip Licensing Limited | Management of resource allocation in a mobile telecommunication network |
US20160110183A1 (en) * | 2014-04-30 | 2016-04-21 | Pivotal Software, Inc. | Fast deployment across cloud platforms |
US9959108B2 (en) * | 2014-04-30 | 2018-05-01 | Pivotal Software, Inc. | Fast deployment across cloud platforms |
US10795567B2 (en) | 2014-08-22 | 2020-10-06 | Zoho Corporation Private Limited | Multimedia applications and user interfaces |
US11323401B2 (en) | 2014-09-24 | 2022-05-03 | Zoho Corporation Private Limited | Email interface for application creation and management |
US11392710B2 (en) | 2014-09-24 | 2022-07-19 | Zoho Corporation Private Limited | Methods and apparatus for document creation via email |
US11132727B2 (en) | 2014-11-18 | 2021-09-28 | Zoho Corporation Private Limited | Methods and systems for grouping and prioritization of leads, potential customers and customers |
US10366428B2 (en) | 2014-11-18 | 2019-07-30 | Zoho Corporation Private Limited | Methods and systems for grouping and prioritization of website visitors for live support |
US10482516B2 (en) | 2014-11-18 | 2019-11-19 | Zoho Corporation Private Limited | Methods and systems for grouping and prioritization of customers for live support |
US9720659B2 (en) * | 2015-02-12 | 2017-08-01 | International Business Machines Corporation | Sparse object instantiation |
US10656921B2 (en) | 2015-02-12 | 2020-05-19 | International Business Machines Corporation | Sparse object instantiation |
US20160239273A1 (en) * | 2015-02-12 | 2016-08-18 | International Business Machines Corporation | Sparse object instantiation |
US11082290B2 (en) * | 2015-12-31 | 2021-08-03 | At&T Intellectual Property I, L.P. | Method and apparatus for optimizing a software defined network configuration |
US20170195171A1 (en) * | 2015-12-31 | 2017-07-06 | At&T Intellectual Property I, L.P. | Method and apparatus for optimizing a software defined network configuration |
US20210367835A1 (en) * | 2015-12-31 | 2021-11-25 | At&T Intellectual Property I, L.P. | Method and apparatus for optimizing a software defined network configuration |
US10439867B2 (en) * | 2015-12-31 | 2019-10-08 | At&T Intellectual Property I, L.P. | Method and apparatus for optimizing a software defined network configuration |
US10488835B2 (en) * | 2016-04-27 | 2019-11-26 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for configuring a tester equipped for testing an electronic control unit |
US10685169B2 (en) | 2017-05-08 | 2020-06-16 | Zoho Corporation Private Limited | Messaging application with presentation window |
US11507726B2 (en) | 2017-05-08 | 2022-11-22 | Zoho Corporation Private Limited | Messaging application supporting presentation service |
US10990749B2 (en) | 2017-05-08 | 2021-04-27 | Zoho Corporation Private Limited | Messaging application with presentation service |
US10884815B2 (en) | 2018-10-29 | 2021-01-05 | Pivotal Software, Inc. | Independent services platform |
Also Published As
Publication number | Publication date |
---|---|
CN108614716B (en) | 2021-03-26 |
US20140123129A1 (en) | 2014-05-01 |
US20220137943A1 (en) | 2022-05-05 |
EP3153964A1 (en) | 2017-04-12 |
EP4369197A3 (en) | 2024-07-03 |
US9557978B2 (en) | 2017-01-31 |
US8261295B1 (en) | 2012-09-04 |
US20190265957A1 (en) | 2019-08-29 |
WO2012125815A2 (en) | 2012-09-20 |
US20160224328A1 (en) | 2016-08-04 |
US20120240135A1 (en) | 2012-09-20 |
EP4369197A2 (en) | 2024-05-15 |
US9870211B2 (en) | 2018-01-16 |
EP3153964B1 (en) | 2024-05-01 |
WO2012125815A3 (en) | 2012-11-29 |
EP2686766B1 (en) | 2016-12-14 |
AU2012229110B2 (en) | 2013-10-31 |
US11237810B2 (en) | 2022-02-01 |
AU2012229110A1 (en) | 2013-10-03 |
US10241770B2 (en) | 2019-03-26 |
CN103582867B (en) | 2017-03-15 |
CN103582867A (en) | 2014-02-12 |
CN108614716A (en) | 2018-10-02 |
US20170102931A1 (en) | 2017-04-13 |
EP2686766A2 (en) | 2014-01-22 |
CA2830237A1 (en) | 2012-09-20 |
CA2830237C (en) | 2015-05-12 |
EP2686766A4 (en) | 2014-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237810B2 (en) | Cloud-based deployment using templates | |
US11178207B2 (en) | Software version control without affecting a deployed container | |
US10324709B2 (en) | Apparatus and method for validating application deployment topology in cloud computing environment | |
US9652211B2 (en) | Policy management of deployment plans | |
US10534596B2 (en) | Migrating applications to updated environments | |
US10284634B2 (en) | Closed-loop infrastructure orchestration templates | |
US20130247022A1 (en) | Identifying optimal upgrade scenarios in a networked computing environment | |
US9692653B1 (en) | Automatic generation of validators to validate deployment code used for configuring servers | |
US10503630B2 (en) | Method and system for test-execution optimization in an automated application-release-management system during source-code check-in | |
Maenhaut | Efficient resource management in a multi-tenant cloud environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GOOGLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RISBOOD, PANKAJ;SARDA, PARAG KACHARULAL;KULKARNI, RAHUL S.;AND OTHERS;SIGNING DATES FROM 20120523 TO 20120604;REEL/FRAME:028476/0800 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |