DE202016008047U1 - High-level language for specifying configurations of cloud-based deployments - Google Patents

High-level language for specifying configurations of cloud-based deployments Download PDF

Info

Publication number
DE202016008047U1
DE202016008047U1 DE202016008047.5U DE202016008047U DE202016008047U1 DE 202016008047 U1 DE202016008047 U1 DE 202016008047U1 DE 202016008047 U DE202016008047 U DE 202016008047U DE 202016008047 U1 DE202016008047 U1 DE 202016008047U1
Authority
DE
Germany
Prior art keywords
class
cloud
definition
definitions
deployment
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.)
Active
Application number
DE202016008047.5U
Other languages
German (de)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to DE202016008047.5U priority Critical patent/DE202016008047U1/en
Publication of DE202016008047U1 publication Critical patent/DE202016008047U1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0233Object-oriented techniques, for representation of network management data, e.g. common object request broker architecture [CORBA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5048Automatic or semi-automatic definitions, e.g. definition templates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/508Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement
    • H04L41/5096Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement wherein the managed service relates to distributed or central networked applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

Nicht-transitorisches computerlesbares Medium mit darauf gespeicherten Befehlen, wobei die Anweisungen, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, die Prozessoren dazu veranlasst, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Konfigurationsspezifikation zum Konfigurieren einer Cloud-basierten Bereitstellung, wobei die Konfigurationsspezifikation in einer Spezifikationssprache geschrieben ist und eine Instanziierung der jeweiligen Klassendefinitionen einer oder mehrerer Klassen erfordert, wobei jede Klasse eine entsprechende Daten- oder Funktionskomponente der Cloud-basierten Implementierung unter Verwendung einer Gruppe konfigurierbarer Klassenparameter modelliert und die jeweilige Klassendefinition jeder Klasse einen angeforderten Zustand der Daten- oder Funktionskomponenten, die von der Klasse modelliert werden, darstellt; Ableiten einer Vielzahl von Anwendungsprogrammierungsschnittstellen-(API)Aufrufen zum Konfigurieren der Cloud-basierten Bereitstellung basierend auf den Klassendefinitionen der einen oder mehreren Klassen; Veranlassen, dass die Vielzahl von API-Aufrufen ausgeführt wird, um die Cloud-basierte Bereitstellung zu konfigurieren; Speichern jeweiliger Klassendefinitionen einer Vielzahl von Kernklassen der Spezifikationssprache, wobei jede Kernklasse einer modularen Komponente einer Cloud-basierten Umgebung entspricht, wobei jede Kernklasse mit zusätzlichen Klassenparametern erweitert werden kann, um die jeweilige modulare Komponente zu konfigurieren; Speichern einer Abbildung zwischen jeder der Kernklassen und einer jeweiligen Gruppe von API-Aufrufen, wobei die jeweilige Gruppe von API-Aufrufen zum Konfigurieren der modularen Komponente dient, die der Kernklasse zugeordnet ist, gemäß den Klassenparametern der Kernklasse; und Speichern einer Vielzahl von Protokollen zum Modifizieren der jeweiligen Gruppen von API-Aufrufen, die jeder Kernklasse zugeordnet sind, um eine neue Gruppe von API-Aufrufen für eine neue Klassendefinition zu erhalten, die von der Kernklasse abgeleitet ist.A non-transitory computer-readable medium having instructions stored thereon, the instructions, when executed by one or more processors, causing the processors to perform operations comprising: receiving a configuration specification to configure a cloud-based deployment, wherein the configuration specification is written in a specification language and requires instantiation of the respective class definitions of one or more classes, each class modeling a corresponding data or function component of the cloud-based implementation using a group of configurable class parameters and the respective class definition of each class representing a requested state of the data or functional components modeled by the class; Deriving a plurality of application programming interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; Causing the plurality of API calls to be executed to configure the cloud-based deployment; Storing respective class definitions of a plurality of specification-language core classes, each core class corresponding to a modular component of a cloud-based environment, wherein each core class may be augmented with additional class parameters to configure the respective modular component; Storing a mapping between each of the core classes and a respective set of API calls, the respective set of API calls for configuring the modular component associated with the core class according to the class parameters of the core class; and storing a plurality of protocols for modifying the respective groups of API calls associated with each core class to obtain a new set of API calls for a new class definition derived from the core class.

Description

HINTERGRUNDBACKGROUND

Diese Spezifikation bezieht sich generell auf Cloud-Computing.This specification generally refers to cloud computing.

Cloud-Computing ist ein Rechenmodell, das entwickelt wurde, um einen bequemen, bedarfsabhängigen Netzzugang zu einem geteilten Pool von Rechenressourcen zu ermöglichen (z. B. Netzwerke, Server, Speicherung, Anwendungen und Dienste), der schnell, dynamisch und mit minimalem manuellem Verwaltungsaufwand und menschlichen Interaktionen mit den Dienstanbietern bereitgestellt und ausgegeben werden kann.Cloud computing is a computing model designed to provide convenient on-demand network access to a shared pool of computing resources (eg, networks, servers, storage, applications, and services) that is fast, dynamic, and with minimal manual overhead and human interactions with the service providers and can be issued.

Ein paar übliche cloudbasierte Dienstmodelle enthalten Software (z. B. kommerziell verfügbare Software-Anwendungen) als einen Service (SaaS), eine Plattform (z. B. Hosting-Umgebung von Software-Anwendungen, wie z. B. virtuelle Maschinen oder Anwendungsframeworks) als einen Service (PaaS) und Infrastruktur (z. B. Rechenleistung, Speicherung, Datenbank, Vernetzungsdienste usw.) als einen Service (IaaS). Bevor ein cloudbasierter Dienst einem Clouddienst-Kunden verfügbar gemacht wird, werden mehrere Aspekte des Dienstes gemäß einer Konfigurationsspezifikation konfiguriert, sodass wenn der Dienst bereitgestellt wird, dieser die Bedürfnisse und Nutzungsanforderungen des Kunden erfüllt.A few common cloud-based service models include software (eg, commercially available software applications) as a service (SaaS), a platform (eg, hosting environment of software applications, such as virtual machines or application frameworks). as a service (PaaS) and infrastructure (eg computing power, storage, database, networking services, etc.) as a service (IaaS). Before a cloud-based service is made available to a cloud service customer, several aspects of the service are configured according to a configuration specification so that when the service is provided, it meets the customer's needs and usage requirements.

Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.Under protection and subject to the utility model are, according to the provisions of the utility model law, only devices as defined in the appended claims, but no method. Wherever in the description, if appropriate, reference is made to methods, these references are merely illustrative of the device or devices set forth in the appended claims.

ZUSAMMENFASSUNGSUMMARY

Diese Spezifikation beschreibt Technologien in Bezug auf die Verwendung und Verwaltung von Cloud-Computing-Umgebungen.This specification describes technologies related to the use and management of cloud computing environments.

Generell kann ein anderer innovativer Aspekt des beschriebenen Gegenstands in dieser Spezifikation in Verfahren ausgeführt werden, die die folgenden Aktionen enthalten: Erhalten einer Konfigurationsspezifikation zum Konfigurieren einer cloudbasierten Bereitstellung, wobei die Konfigurationsspezifikation in einer Spezifikationssprache geschrieben ist und eine Instanziierung von jeweiligen Klassendefinitionen von einer oder mehreren Klassen erfordert, jede Klasse eine jeweilige Daten- oder Funktionskomponente der cloudbasierten Bereitstellung unter Verwendung einer Gruppe von konfigurierbaren Klassenparametern modelliert und die jeweilige Klassendefinition von jeder Klasse einen angeforderten Zustand der modellierten Daten- oder Funktionskomponente durch die Klasse darstellt; Ableiten einer Vielzahl von Anwendungsprogrammschnittstellen-Aufrufen (Application Program Interface, API) zum Konfigurieren der cloudbasierten Bereitstellung beruhend auf der Klassendefinitionen der einen oder mehreren Klassen; und Veranlassen, dass die Vielzahl von API-Aufrufen ausgeführt werden, um die cloudbasierte Bereitstellung zu konfigurieren.In general, another innovative aspect of the described subject matter in this specification may be performed in methods that include the following actions: Obtaining a configuration specification to configure a cloud-based deployment, wherein the configuration specification is written in a specification language and an instantiation of respective class definitions of one or more Classes, each class models a respective cloud-based deployment data or functional component using a set of configurable class parameters, and the respective class definition of each class represents a requested state of the modeled data or functional component by the class; Deriving a plurality of application program interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; and causing the plurality of API calls to be executed to configure the cloud-based deployment.

Diese und andere Ausführungsformen können jeweils eines oder mehrere der folgenden zusätzlichen Merkmale enthalten. Die eine oder mehreren Klassen enthalten mindestens eine vorhandene Basisklasse und mindestens eine angepasste Klasse, die sich aus der vorhandenen Basisklasse erstreckt, wobei die angepasste Klasse jeweilige Klassenparameter von der vorhandenen Basisklasse übernimmt, und die angepasste Klasse einen Wert von mindestens einem der Klassenparameter ändert, die von der vorhandenen Basisklasse übernommen wurde, oder sie enthält mindestens einen neuen Klassenparameter, der in der vorhandenen Basisklasse nicht vorhanden ist. Die modellierte Daten- oder Funktionskomponente durch jede Klasse ist eine von einer virtuellen Vorrichtung, die eine cloudbasierte Umgebung unterstützt, ein verwendeter Dienst in der cloudbasierten Umgebung, eine ausgeführte Software-Rolle durch eine installierte Anwendung in der cloudbasierten Umgebung, ein Datenpaket, das Daten enthält, die während der Bereitstellung oder des Betriebs der cloudbasierten Umgebung verwendet werden sollen, oder eine Kombination von einem oder mehreren davon. Die Spezifikationssprache unterstützt eine Abhängigkeit zwischen Klassendefinitionen, und eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse stellt eine Bereitstellungabhängigkeit zwischen jeweiligen Komponenten dar, die von der ersten und der zweiten Klasse modelliert sind. Die Spezifikationssprache unterstützt eine Konnektivität zwischen Klassendefinitionen, und eine Wertezuordnung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verknüpft, stellt eine Konnektivität zwischen jeweiligen Komponenten dar, die von der ersten und der zweiten Klasse modelliert sind. Identifizieren beruhend auf den jeweiligen Klassendefinitionen der einen oder mehreren Klassen, einer Vielzahl von Daten- und Funktionskomponenten modelliert durch die eine oder mehrere Klassen, und eine oder mehrere Abhängigkeits- und Konnektivitätsverhältnisse, die zwischen der Vielzahl von Daten- oder Funktionskomponenten vorhanden sind; Ableiten eines Blockdiagramms einer cloudbasierten Umgebung beruhend auf der identifizierten Vielzahl von Daten- und Funktionskomponenten und der identifizierten Abhängigkeits- und Konnektivitätsverhältnisse; und Darstellen von Auslöseereignissen zur dynamischen Neukonfiguration der cloudbasierten Umgebung in dem Blockdiagramm. Identifizieren einer Vielzahl von cloudbasierten Bereitstellungen, die jeweils gemäß einer jeweiligen Konfigurationsspezifikation, die in der Spezifikationssprache geschrieben ist, durchgeführt wurden; Identifizieren von mindestens einer Basisklasse, deren Klassendefinition in vielfachen der Vielzahl von cloudbasierten Bereitstellungen verwendet wird; Überwachen einer jeweiligen Leistung von jeder der vielfachen auf der Vielzahl von cloudbasierten Bereitstellungen; und Berechnen einer Qualitätsmessgröße der mindestens einen Basisklasse beruhend auf der aggregierten Leistung der vielfachen der Vielzahl von cloudbasierten Bereitstellungen. Speichern jeweiliger Klassendefinitionen von einer Vielzahl von Kernklassen der Spezifikationssprache, wobei jede Kernklasse einer modularen Komponente einer cloudbasierten Umgebung entspricht, jede Kernklasse mit zusätzlichen Klassenparametern erweiterbar ist, um die jeweilige modulare Komponente zu konfigurieren; Speichern eines Mapping zwischen jeder der Kernklassen und einer jeweiligen Gruppe von API-Aufrufen, der jeweiligen Gruppe von API-Aufrufen zum Konfigurieren der modularen Komponente in Verbindung mit der Kernklasse gemäß dem Klassenparameter der Kernklasse; und Speichern einer Vielzahl von Protokollen zum Ändern der jeweiligen Gruppen von API-Aufrufen in Verbindung mit jeder Kernklasse, um eine neue Gruppe von API-Aufrufen für eine neue Klassendefinition zu erlangen, die von der Kernklasse abgeleitet ist. Ein Ableiten der Vielzahl von API-Aufrufen zum Konfigurieren der cloudbasierten Bereitstellung umfasst ferner: Ableiten der Vielzahl von API-Aufrufen beruhend auf den jeweiligen Gruppen von API-Aufrufen in Verbindung mit einer oder mehreren auf der Vielzahl von Kernklassen, wovon die eine oder mehreren Klassen der Konfigurationsspezifikation abgeleitet sind, und beruhend auf der Vielzahl von Protokollen zum Ändern der jeweiligen Gruppen von API-Aufrufen. Die Vielzahl von Protokollen enthält ferner Regeln zum Vorgeben einer Ordnung der Gruppen von API-Aufrufen gemäß Abhängigkeits- und Konnektivitätsverhältnissen, die in Klassendefinitionen spezifiziert sind, die gemäß der Spezifikationssprache geschrieben sind.These and other embodiments may each include one or more of the following additional features. The one or more classes contain at least one existing base class and at least one custom class extending from the existing base class, wherein the customized class inherits respective class parameters from the existing base class, and the custom class changes a value of at least one of the class parameters has been inherited from the existing base class, or it contains at least one new class parameter that does not exist in the existing base class. The modeled data or functional component through each class is one of a virtual device supporting a cloud-based environment, a service used in the cloud-based environment, a running software role by an installed application in the cloud-based environment, a data packet containing data to be used during deployment or operation of the cloud-based environment, or a combination of one or more of them. The specification language supports a 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 second classes. The specification language supports connectivity between class definitions, and a value map that associates an instance of a second class with a class parameter of a first class represents connectivity between respective components modeled by the first and second classes. Identifying, based on the respective class definitions of the one or more classes, a plurality of data and functional components modeled by the one or more classes, and one or more dependency and connectivity relationships existing between the plurality of data or functional components; Deriving 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; and presenting trigger events for dynamically reconfiguring the cloud-based environment in the block diagram. Identifying a plurality of cloud-based deployments, each performed according to a respective configuration specification written in the specification language; Identify at least one base class whose class definition is used in multiple of the plurality of cloud-based deployments; Monitoring a respective performance of each of the multiple ones on the plurality of cloud-based deployments; and calculating a quality measure of the at least one base class based on the aggregate performance of the multiple of the plurality of cloud-based deployments. Storing respective class definitions of a plurality of specification-language core classes, each core class of a modular component corresponding to a cloud-based environment, each core class being expandable with additional class parameters to configure the respective modular component; Storing a mapping between each of the core classes and a respective set of API calls, the respective set of API calls for configuring the modular component in conjunction with the core class according to the class parameter of the core class; and storing a plurality of protocols for changing the respective groups of API calls associated with each core class to obtain a new set of API calls for a new class definition derived from the core class. Deriving the plurality of API calls for configuring the cloud-based deployment further comprises: deriving the plurality of API calls based on the respective groups of API calls associated with one or more of the plurality of core classes, one or more of the classes derived from the configuration specification, and based on the plurality of protocols for changing the respective groups of API calls. The plurality of protocols further include rules for specifying an order of the groups of API calls according to dependency and connectivity ratios specified in class definitions written according to the specification language.

Generell kann ein anderer innovativer Aspekt des beschriebenen Gegenstands in dieser Spezifikation in Verfahren ausgeführt werden, die die folgenden Aktionen enthalten: Erhalten einer jeweiligen Definitionsvorlage von jeder von einer Vielzahl von Definitionsversorgern, wobei die jeweilige Definitionsvorlage eine oder mehrere Klassendefinitionen enthält, die in einer Spezifikationssprache geschrieben ist, und jede Klassendefinition eine Daten- oder Funktionskomponente einer cloudbasierten Bereitstellung unter Verwendung einer Gruppe von konfigurierbaren Klassenparameter modelliert und erweiterbar ist, um mindestens eine neue Klassendefinition durch eine Modifikation an einer oder mehreren der Gruppe von konfigurierbaren Klassenparametern oder eine Addition von einem oder mehreren neuen Klassenparameter zu schaffen; und Bereitstellen einer Benutzeroberfläche, die die erhaltenen Klassendefinitionen von der Vielzahl von Definitionsversorger zur Überprüfung und Auswahl von einer Vielzahl von Definitionsnutzern darstellt.In general, another innovative aspect of the described subject matter in this specification may be embodied in methods including the following actions: obtaining a respective definition template from each of a plurality of definition providers, the respective definition template including one or more class definitions written in a specification language and each class definition is modeled and extendable a data or function component of a cloud-based deployment using a set of configurable class parameters, 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 ones To create class parameters; and providing a user interface representing the obtained class definitions of the plurality of definition providers for reviewing and selecting a plurality of definition users.

Diese und andere Ausführungsformen können jeweils eines oder mehrere der folgenden zusätzlichen Merkmale enthalten. Erhalten einer Vielzahl von unterschiedlichen Konfigurationsspezifikationen, die in der Spezifikationssprache geschrieben sind, der Vielzahl von unterschiedlichen Konfigurationsspezifikationen jeweils zum Konfigurieren einer unterschiedlichen cloudbasierten Bereitstellung und enthaltend eine unterschiedliche Klassendefinition, die sich von einer gleichen der erhaltenen Klassendefinitionen von der Vielzahl von Definitionsversorgern erstreckt; und Konfigurieren jeder der unterschiedlichen cloudbasierten Bereitstellungen beruhend mindestens auf der gleichen der erhaltenen Klassendefinitionen und der unterschiedlichen Klassendefinition, die sich davon erstreckt, in der unterschiedlichen Konfigurationsspezifikation der unterschiedlichen cloudbasierten Bereitstellung. Für jede der erhaltenen Klassendefinitionen: Überwachen einer Verwendung der Klassendefinition in einer Vielzahl von Konfigurationsspezifikationen, die verwendet wurden, um eine Vielzahl von cloudbasierten Bereitstellungen zu konfigurieren; und Aufzeichnen für jede Verwendung der Klassendefinition in der Vielzahl von Konfigurationsspezifikationen, um einem Definitionsversorger der Klassendefinition gutzuschreiben und einen Definitionsnutzer in Verbindung mit der Verwendung zu belasten. Die Verwendung der Klassendefinition enthält eine Instanziierung der Klassendefinition in einer jeweiligen Konfigurationsspezifikation, die verwendet wurde, um eine jeweilige cloudbasierte Bereitstellung durchzuführen. Die Verwendung der Klassendefinition enthält eine Erweiterung der Klassendefinition, um eine neue Klassendefinition zu schaffen, die in einer jeweiligen Konfigurationsspezifikation, die verwendet wird, um eine jeweilige cloudbasierte Bereitstellung durchzuführen, instanziiert wird. Erhalten einer Software-Vorlage von einem Software-Lieferanten, die Software-Vorlage enthaltend eine Software-Anwendung, die in einer cloudbasierten Umgebung bereitgestellt werden soll und eine Vielzahl von unterschiedlichen Konfigurationsspezifikationen jeweils zum Bereitstellen der Software-Anwendung in der cloudbasierten Umgebung auf eine unterschiedliche Weise; und Bereitstellen der Vielzahl von unterschiedlichen Konfigurationsspezifikationen zur Überprüfung und Auswahl von einem Software-Nutzer. Erhalten einer Auswahl von einer der Vielzahl von unterschiedlichen Konfigurationsspezifikation von dem Software-Nutzer; Bereitstellen der Software-Anwendung in der cloudbasierten Umgebung gemäß der ausgewählten unterschiedlichen Konfigurationsspezifikation; und Aufzeichnen einer Belastung an den Software-Nutzer und einer Gutschrift an den Software-Lieferanten beruhend auf einem jeweiligen Preis in Verbindung mit der ausgewählten unterschiedlichen Konfigurationsspezifikation.These and other embodiments may each include one or more of the following additional features. Obtaining a plurality of different configuration specifications written in the specification language, the plurality of different configuration specifications each for configuring a different cloud-based provision, and including a different class definition extending from an equal one of the obtained class definitions of the plurality of definition providers; and configuring each of the different cloud-based deployments based on at least the same of the obtained class definitions and the different class definition that extends therefrom in the different configuration specification of the different cloud-based deployment. For each of the obtained class definitions: monitoring use 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, to credit a definition provider of the class definition and debiting a definition user in connection with the usage. The use of the class definition includes an instantiation of the class definition in each configuration specification that was used to perform each cloud-based deployment. The use of the class definition includes an extension of the class definition to create a new class definition that is instantiated in a particular configuration specification used to perform each cloud-based deployment. Obtaining a software template from a software vendor, the software template including a software application to be deployed in a cloud-based environment, and a plurality of different configuration specifications each for providing the software application in the cloud-based environment in a different manner ; and providing the plurality of different configuration specifications for review and selection by a software user. Getting a selection one of the plurality of different configuration specifications from the software user; Providing the software application in the cloud-based environment according to the selected different configuration specification; and recording a charge to the software user and a credit to the software vendor based on a respective price associated with the selected different configuration specification.

Generell kann ein anderer innovativer Aspekt des beschriebenen Gegenstands in dieser Spezifikation in Verfahren ausgeführt werden, die die folgenden Aktionen enthalten: Bereitstellen einer Vielzahl von Klassendefinitionen zur Auswahl, wobei jede Klassendefinition eine jeweilige Daten- oder Funktionskomponente einer cloudbasierten Umgebung unter Verwendung einer Gruppe von konfigurierbaren Klassenparameter modelliert, jede Klassendefinition eine Instanziierung und Übernahme der Klassendefinition in eine Konfigurationsspezifikation für eine cloudbasierte Bereitstellung unterstützt; Ableiten jeweiliger Leistungsmesswerte in Verbindung mit jeder der Vielzahl von Klassendefinitionen beruhend auf einer aggregierten Leistung von vielfachen cloudbasierten Bereitstellungen, wobei die vielfachen cloudbasierten Bereitstellungen gemäß jeweiliger Konfigurationsspezifikationen durchgeführt wurden, die eine Instanziierung der Klassendefinition oder eine neue Klassendefinition abgeleitet von der Klassendefinition erfordern; und Verwenden der jeweiligen Leistungsmesswerte in Verbindung mit jeder der Vielzahl von Klassendefinitionen beim Ordnen der Vielzahl von Klassendefinitionen.In general, another innovative aspect of the described subject matter in this specification may be embodied in methods including the following actions: providing a plurality of class definitions for selection, each class definition defining a respective data or functional component of a cloud-based environment using a set of configurable class parameters modeling, each class definition supports instantiation and adoption of the class definition in a cloud-based deployment configuration specification; Deriving respective performance metrics in association with each of the plurality of class definitions based on aggregate performance of multiple cloud-based deployments, the multiple cloud-based deployments performed according to respective configuration specifications that require instantiation of the class definition or new class definition derived from the class definition; and using the respective performance metrics in conjunction with each of the plurality of class definitions in ordering the plurality of class definitions.

Diese und andere Ausführungsformen können jeweils eines oder mehrere der folgenden zusätzlichen Merkmale enthalten. Kategorisieren der Vielzahl von Klassendefinitionen beruhend auf den jeweiligen Daten- oder Funktionskomponenten der cloudbasierten Umgebung, modelliert durch die Vielzahl von Klassendefinitionen; und Ordnen der Vielzahl von Klassendefinitionen in den jeweiligen Kategorien der Klassendefinitionen. Ein Bereitstellen der Vielzahl von Klassendefinitionen zur Auswahl umfasst ferner: Bereitstellen der jeweiligen Leistungsmesswerte mit jeder der Vielzahl von Klassendefinitionen zur Überprüfung durch den Nutzer in einer Auswahl-Benutzeroberfläche. Für jede der Vielzahl von Klassendefinitionen: Identifizieren einer Vielzahl von cloudbasierten Bereitstellungen, die gemäß jeweiliger Konfigurationsspezifikationen durchgeführt wurden, die eine Instanziierung der Klassendefinition oder mindestens eine neue Klassendefinition abgeleitet von der Klassendefinition erforderten; Überwachen jeweiliger Leistungen von der Vielzahl von cloudbasierten Bereitstellungen; und Verbinden der jeweiligen Leistungen von der Vielzahl von Bereitstellungen mit der Klassendefinition. Ein Ableiten jeweiliger Leistungsmesswerte in Verbindung mit jeder der Vielzahl von Klassendefinitionen beruhend auf einer aggregierten Leistung von vielfachen cloudbasierten Bereitstellungen umfasst ferner: für jede der Vielzahl von Klassendefinitionen: Identifizieren einer oder mehrerer Daten- oder Funktionskomponenten in der Vielzahl von cloudbasierten Bereitstellungen, die gemäß der Klassendefinition definiert wurden oder einer neuen Klassendefinition, die von der Klassendefinition abgeleitet ist; Identifizieren eines oder mehrerer Leistungsmesswerte in Verbindung mit der identifizierten eine oder den mehreren Daten- oder Funktionskomponenten; und Ableiten der jeweiligen Leistungsmesswerte in Verbindung mit der Klassendefinition durch Aggregieren des einen oder der mehreren Leistungsmesswerte. Die Leistungsmesswerte enthalten eine oder mehrere Messungen von Latenz, Zuverlässigkeit, Skalierbarkeit Verfügbarkeit oder Sicherheit. Für jede der Vielzahl von Klassendefinitionen: Verfolgen einer jeweiligen Zählung von cloudbasierten Bereitstellungen, die mindestens teilweise gemäß der Klassendefinition konfiguriert wurden; und Verwenden der jeweiligen Zählungen in Verbindung mit der Vielzahl von Klassendefinitionen beim Ordnen der Vielzahl von Klassendefinitionen. Für jede der Vielzahl von Klassendefinitionen: Verfolgen einer jeweiligen Zählungen von festgestellten Problemen in cloudbasierten Bereitstellungen, die mindestens teilweise gemäß der Klassendefinition konfiguriert wurden; und Verfolgen einer Anzahl von erforderlichen Änderungen zum Lösen der festgestellten Probleme in den cloudbasierten Bereitstellungen, die mindestens teilweise gemäß der Klassendefinition konfiguriert wurden; und Verwenden der jeweiligen Zählungen der Probleme und der Anzahl von erforderlichen Änderungen in Verbindung mit der Vielzahl von Klassendefinitionen beim Ordnen der Vielzahl von Klassendefinitionen. Die jeweiligen Anzahlen von erforderlichen Änderungen in Verbindung mit der Vielzahl von Klassendefinitionen werden dazu verwendet, jeweilige Gewichtungen zu berechnen, die den jeweiligen Leistungsmesswerten in Verbindung mit der Vielzahl von Klassendefinitionen beim Ordnen der Vielzahl von Klassendefinitionen gegeben werden.These and other embodiments may each 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 ordering the plurality of class definitions in the respective categories of the 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 review by the user in a selection user interface. For each of the plurality of class definitions: identifying a plurality of cloud-based deployments performed in accordance with respective configuration specifications that required instantiation of the class definition or at least one new class definition derived from the class definition; Monitoring respective services from the plurality of cloud-based deployments; and connecting the respective services from the plurality of deployments with the class definition. Deriving respective performance metrics associated with each of the plurality of class definitions based on aggregate 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 according to the class definition defined or a new class definition derived from the class definition; Identifying one or more performance metrics in association with the identified one or more data or functional components; and deriving the respective performance metrics in association with the class definition by aggregating the one or more performance metrics. The performance measurements include one or more measurements of latency, reliability, scalability availability, or security. For each of the plurality of class definitions: tracking a respective count of cloud-based deployments configured at least in part according to the class definition; and using the respective counts in conjunction with the plurality of class definitions in ordering the plurality of class definitions. For each of the plurality of class definitions: tracking a respective count of detected issues in cloud-based deployments configured at least in part according to the class definition; and tracking a number of changes required to resolve the identified issues in the cloud-based deployments configured at least in part according to the class definition; and using the respective counts of the problems and the number of changes required in connection with the plurality of class definitions in ordering 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 measurements in association with the plurality of class definitions in ordering the plurality of class definitions.

Besondere Ausführungsformen des beschriebenen Gegenstands in dieser Spezifikation können implementiert werden, um einen oder mehrere der folgenden Vorteile auszuführen.Particular embodiments of the described subject matter in this specification may be implemented to carry out one or more of the following advantages.

Eine übergeordnete objektorientierte Spezifikationssprache ermöglicht, dass konfigurierbare Komponenten einer cloudbasierten Bereitstellung durch eine Klassendefinition modelliert werden, die eine Gruppe von konfigurierbaren Klassenparametern enthält. Die objektorientierte Spezifikationssprache unterstützt eine Erweiterung einer vorhandenen Basisklassendefinition, um neue Klassendefinitionen zu schaffen, und unterstützt eine Übernahme von Klassenparametern von der vorhandenen Basisklassendefinition durch die neuen Klassendefinitionen. Ein Verwaltungsnutzer eines cloudbasierten Dienstes kann eine cloudbasierte Bereitstellung beruhend auf verwendeten Klassendefinitionen beim Konfigurieren einer oder mehrerer generischer Bereitstellungen anpassen, wie z. B. durch Ändern von Klassenparameterwerten der Klassendefinitionen, variieren von Beziehungen zwischen den Klassen und Ergänzen vorhandener Klassenparameter mit neuen Klassenparametern.A parent object-oriented specification language allows configurable components of a cloud-based deployment to be modeled by a class definition that contains a set of configurable class parameters. The object-oriented specification language supports extending an existing base class definition to create new class definitions, and supports inheriting class parameters from the existing one Base class definition by the new class definitions. An administrative user of a cloud-based service may customize a cloud-based deployment based on used class definitions when configuring one or more generic deployments, such as: By modifying class parameter values of the class definitions, varying relationships between the classes and supplementing existing class parameters with new class parameters.

Die objektorientierte Spezifikationssprache das Herstellen von vielfachen Abstraktionsschichten auf die verschiedenen Typen von Clouddienst-Komponenten, die konfigurierbar sind. Beispielsweise unterstützt die übergeordnete objektorientierte Spezifikationssprache nicht nur Klassendefinitionen, die Hardware und virtuelle Ressourcen modellieren, sondern auch Software-Rollen und Dienst-Rollen, die von Software-Anwendungen und Diensten in einer cloudbasierten Bereitstellung bedient werden. Zusätzlich stellt die objektorientierte Spezifikationssprache eine Syntax zum Spezifizieren einer Abhängigkeit und Konnektivität zwischen Klassen bereit. Cloud-Komponenten, die vielfache Unterkomponenten und komplexe Strukturen involvieren, können durch Klassendefinitionen modelliert werden, die sich auf vielfache Typen von Basisklassen beziehen und jeweilige Beziehungen zwischen den Basisklassen spezifizieren.The object-oriented specification language makes multiple abstraction layers possible on the different types of cloud service components that are configurable. For example, the parent object-oriented specification language supports not only class definitions that model hardware and virtual resources, but also software roles and service roles that are served by software applications and services in a cloud-based deployment. In addition, the object-oriented specification language provides a syntax for specifying a dependency and connectivity between classes. Cloud components involving multiple subcomponents and complex structures may be modeled by class definitions that refer to multiple types of base classes and specify respective relationships between the base classes.

Eine Konfigurationsspezifikation kann auf vorhandenen Klassendefinitionen beruhen, um einige Aspekte einer Cloud-Bereitstellung auf einer hohen Abstraktionsebene zu konfigurieren, während andere Aspekte auf einer detaillierteren Ebene unter Verwendung neu abgeleiteter Klassendefinitionen angepasst werden. Ein Verwaltungsnutzer eines cloudbasierten Dienstes ist in der Lage, den Anpassungsgrad für eine cloudbasierte Bereitstellung durch Wählen eines geeigneten Satzes von Klassendefinitionen zu kontrollieren, um sie in die Konfigurationsspezifikation für die cloudbasierte Bereitstellung aufzunehmen und zu instanziieren.A configuration specification can be based on existing class definitions to configure some aspects of cloud provisioning at a high level of abstraction, while other aspects are customized on a more granular 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 cloud-based deployment configuration specification.

Zusätzlich ermöglicht die objektorientierte Spezifikationssprache viele Klassendefinitionen, die übliche oder spezielle Clouddienst-Komponenten modellieren, die geschaffen und gespeichert werden sollen. Diese gespeicherten Klassendefinitionen können in Konfigurationsspezifikationen zukünftiger Bereitstellungen durch verschiedene Clouddienst-Kunden erweitert oder wiederverwendet werden. Diese Wiederverwendung von Klassendefinitionen in Spezifikationskonfigurationen kann die Geschwindigkeit und Effizienz des Bereitstellungsprozesses verbessern.In addition, the object-oriented specification language allows many class definitions to model common or specialized cloud service components to be created and stored. These stored class definitions can be augmented or reused 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.

Da Klassendefinitionen wiederverwendet und unter vielen Clouddienst-Kunden geteilt werden können, müssen die Anstrengungen zum Entwickeln geeigneter Konfigurationsspezifikationen für die gleichen oder ähnlichen Zwecke von den Clouddienst-Kunden nicht dupliziert werden. Ein Marktplatz zum Teilen wiederverwendbarer Klassendefinitionen kann entwickelt werden, sodass ein Clouddienst-Kunde wählen kann, die Verwendung von vorhandenen Klassendefinitionen, die von anderen Clouddienst-Kunden entwickelt und bereitgestellt werden, gegen eine Gebühr zu kaufen oder zu lizenzieren. Zusätzlich können Software-Anwendungen mit verschiedenen Typen von Konfigurationsspezifikationen bereitgestellt werden (d. h. als „konfig-umhüllte” Software-Lösungen), die für verschiedene Nutzungsanforderungen und organisatorische Infrastrukturen der Cloud-Kunden geeignet sind.Because class definitions can be reused and shared among many cloud service customers, efforts to develop appropriate configuration specifications for the same or similar purposes need not be duplicated by cloud service customers. A marketplace for sharing reusable class definitions may be developed so that a cloud service customer may choose to buy or license the use of existing class definitions developed and provided by other cloud service customers for a fee. In addition, software applications may be provided with different types of configuration specifications (i.e., "config-wrapped" software solutions) that are appropriate for different usage requirements and organizational infrastructures of cloud customers.

Wenn eine Konfigurationsspezifikation einer cloudbasierten Bereitstellung in der objektorientierten Spezifikationssprache geschrieben ist, kann der Clouddienst-Anbieter die Konfigurationsspezifikation parsen, um die Klassendefinitionen zu identifizieren, die beim Konfigurieren jeder Daten- oder Funktionskomponente der cloudbasierten Bereitstellung involviert sind. Wenn die Bereitstellung ferner gemäß der Konfigurationsspezifikation durchgeführt wird, kann der Clouddienst-Anbieter auch die zugrundeliegenden Software- oder virtuellen Ressourcen in Verbindung mit jeder der Daten- oder Funktionskomponenten der Bereitstellung zu identifizieren. Daher ermöglicht es die objektorientierte Spezifikationssprache dem Clouddienst-Anbieter, die Leistung der Daten- und Funktionskomponenten der cloudbasierten Bereitstellung zu überwachen, und die Leistung mit den Klassendefinitionen zu verbinden, die verwendet werden, um jede der Daten- und Funktionskomponenten zu konfigurieren. Somit kann der Clouddienst-Anbieter dem Clouddienst-Kunden eine Anleitung bereitstellen, welche Teile der Konfigurationsspezifikation geändert werden müssen, um die Leistung der Bereitstellung zu verbessern.When a configuration specification of a cloud-based deployment is written in the object-oriented specification language, the cloud service provider can parse the configuration specification to identify the class definitions involved in configuring each data or function component of the cloud-based deployment. Further, if the deployment is performed according to the configuration specification, the cloud service provider may also 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 allows the cloud service provider to monitor the performance of the cloud-based deployment data and function components, and to connect the performance to the class definitions used to configure each of the data and function components. Thus, the cloud service provider may provide guidance to the cloud service customer as to which portions of the configuration specification need to be changed to improve the performance of the deployment.

In einigen Implementierungen kann der Clouddienst-Anbieter ein Blockdiagramm für die cloudbasierte Bereitstellung beruhend auf der Konfigurationsspezifikation erzeugen. Die Leistung der verschiedenen Komponenten der Bereitstellung kann visuell im Blockdiagramm dargestellt werden. Mehrere Neukonfigurationsauslöser, die in der Konfigurationsspezifikation spezifiziert sind, können auch im Blockdiagramm dargestellt werden. Diese visuelle Darstellung ermöglicht einem Administrator der cloudbasierten Bereitstellung, die Konfigurationsparameter der Bereitstellung schnell und in geeigneter Form einzustellen.In some implementations, the cloud service provider may generate a block diagram for cloud-based deployment based on the configuration specification. The performance of the various components of the deployment can be visually illustrated in the block diagram. Several reconfiguration triggers specified in the configuration specification can also be shown in the block diagram. This visual representation allows a cloud-based deployment administrator to quickly and appropriately set the configuration parameters of the deployment.

Die objektorientierte Spezifikationssprache ermöglicht es, dass Klassendefinitionen in vielfachen Konfigurationsspezifikationen und potenziell durch vielfache Clouddienst-Kunden wiederverwendet werden können. Der Clouddienst-Anbieter kann die Leistungen von vielfachen cloudbasierten Bereitstellungen verfolgen, die unter Verwendung von Konfigurationsspezifikationen konfiguriert wurden, die wiederverwendete Klassendefinitionen involvieren. Für jede wiederverwendete Klassendefinition kann der Clouddienst-Anbieter die Qualität der Klassendefinition beruhend auf der aggregierten Leistung der vielfachen Bereitstellungen bewerten, die unter Verwendung der Klassendefinition konfiguriert wurden. Auf einem Marktplatz zum Teilen wiederverwendbarer Klassendefinitionen kann ein Ordnen oder können Qualitätspunktzahlen der Klassendefinitionen beruhend auf der Qualität der Klassendefinitionen bereitgestellt werden. Dieses Ordnen oder diese Qualitätspunktzahlen helfen Clouddienst-Kunden dabei, die Klassendefinitionen zur Wiederverwendung in ihren eigenen cloudbasierten Bereitstellungen besser auszuwählen. Das Ordnen oder die Qualitätspunktzahlen können auch Bereitstellern von wiederverwendbaren Klassendefinitionen dabei helfen, ihre Klassendefinitionen zu verbessern.The object-oriented specification language allows class definitions to be reused in multiple configuration specifications and potentially by multiple cloud service customers can be. The cloud service provider may track the performance of multiple cloud-based deployments configured using configuration specifications involving reused class definitions. For each reused class definition, the cloud service provider can rate the quality of the class definition based on the aggregate performance of the multiple deployments configured using the class definition. In a marketplace for sharing reusable class definitions, ordering or quality scores of the class definitions may be provided based on the quality of the class definitions. These ordering or quality scores help cloud service customers better choose the class definitions for reuse in their own cloud-based deployments. Ranking or quality scores can also help reusable class definitions providers improve their class definitions.

Die Details von einer oder mehreren Ausführungsformen des beschriebenen Gegenstands in dieser Spezifikation werden in den begleitenden Zeichnungen und der Beschreibung unten dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen offensichtlich.The details of one or more embodiments of the described subject matter 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, drawings and claims.

KURZBESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

1 veranschaulicht eine beispielhafte Cloud-Computing-Umgebung. 1 illustrates an example cloud computing environment.

2A zeigt ein Beispiel einer konventionellen Konfigurationsspezifikation für eine cloudbasierte Bereitstellung. 2A shows an example of a conventional configuration specification for a cloud-based deployment.

2B veranschaulicht eine resultierende Topologie der cloudbasierten Bereitstellung, die gemäß der gezeigten Konfigurationsspezifikation in 2A konfiguriert ist. 2 B FIG. 12 illustrates a resulting topology of the cloud-based deployment that, according to the configuration specification shown in FIG 2A is configured.

3A ist eine beispielhafte geschriebene Konfigurationsspezifikation in einer beispielhaften objektorientierten Spezifikationssprache. 3A FIG. 10 is an exemplary written configuration specification in an exemplary object-oriented specification language.

3B ist ein beispielhaftes Modul, das wiederverwendbare Klassendefinitionen enthält, die in der beispielhaften objektorientierten Spezifikationssprache geschrieben sind. 3B is an exemplary module containing reusable class definitions written in the example object-oriented specification language.

3C ist eine beispielhafte Konfigurationsspezifikation, die die gezeigten wiederverwendbaren Klassendefinitionen in 3B verwendet. 3C FIG. 10 is an example configuration specification illustrating the reusable class definitions shown in FIG 3B used.

4 ist ein Blockdiagramm eines beispielhaften Clouddienst-Managers eines beispielhaften Clouddienst-Anbieters. 4 Figure 10 is a block diagram of an example cloud service manager of an example cloud service provider.

5 ist ein Blockdiagramm, das eine Topologie einer beispielhaften cloudbasierten Bereitstellung zeigt, die gemäß der gezeigten Konfigurationsspezifikation in 3C konfiguriert ist. 5 FIG. 10 is a block diagram illustrating a topology of an exemplary cloud-based deployment that is maintained in accordance with the configuration specification shown in FIG 3C is configured.

6 ist ein Flussdiagramm eines Beispielprozesses zum Verarbeiten einer geschriebenen Konfigurationsspezifikation in einer objektorientierten Spezifikationssprache. 6 FIG. 10 is a flowchart of an example process for processing a written configuration specification in an object-oriented specification language.

7 ist ein Flussdiagramm eines Beispielprozesses zum Ableiten eines Blockdiagramms, das eine Topologie einer cloudbasierten Bereitstellung beruhend auf der Konfigurationsspezifikation der cloudbasierten Bereitstellung zeigt. 7 FIG. 10 is a flowchart of an example process for deriving a block diagram showing a cloud-based deployment topology based on the cloud-based deployment configuration specification.

8 ist ein Flussdiagramm eines Beispielprozesses zum Überwachen einer Leistung von cloudbasierten Bereitstellungen und verbinden der Leistung mit Klassendefinitionen, die beim Konfigurieren der cloudbasierten Bereitstellungen verwendet werden. 8th Figure 10 is a flow diagram of an example process for monitoring cloud-based deployment performance and connecting the performance to class definitions used in configuring the cloud-based deployments.

9 ist ein Flussdiagramm eines Beispielprozesses zum Bewerten der Qualität einer wiederverwendeten Klassendefinition beruhend auf einer aggregierten Leistung von vielfachen cloudbasierten Bereitstellungen, die mindestens teilweise beruhend auf der wiederverwendeten Klassendefinition konfiguriert wurden. 9 FIG. 10 is a flow chart of an example process for assessing the quality of a reused class definition based on aggregate performance of multiple cloud-based deployments that have been configured based at least in part on the reused class definition.

10 ist ein Flussdiagramm eines Beispielprozesses zum Ableiten von API-Aufrufen zum Konfigurieren einer cloudbasierten Bereitstellung beruhend auf Klassendefinitionen, die in einer Konfigurationsspezifikation verwendet werden. 10 Figure 10 is a flow chart of an example process for deriving API calls to configure a cloud-based deployment based on class definitions used in a configuration specification.

11 ist ein Flussdiagramm eines Beispielprozesses zum Bereitstellen einer Plattform zum Teilen von wiederverwendbaren Klassendefinitionen. 11 FIG. 10 is a flow chart of an example process for providing a reusable class definition sharing platform.

12 ist ein Flussdiagramm eines Beispielprozesses zum Konfigurieren vielfacher unterschiedlicher cloudbasierter Bereitstellungen beruhend auf unterschiedlichen Konfigurationsspezifikationen, die alle mindestens eine gemeinsame wiederverwendbare Klassendefinition verwenden. 12 FIG. 10 is a flowchart of an example process for configuring multiple different cloud-based deployments based on different configuration specifications, all of which use at least one common reusable class definition.

13 ist ein Flussdiagramm eines Beispielprozesses zum Belasten von Definitionsnutzern und Gutschreiben an Definitionsversorger beruhend auf einer Verwendung der wiederverwendbaren Klassendefinitionen, die von den Definitionsversorgern bereitgestellt werden. 13 FIG. 10 is a flowchart of an example process for loading definition users and credit to definition providers based on use of the reusable class definitions provided by the definition providers.

14 ist ein Flussdiagramm eines Beispielprozesses zum Bereitstellen einer Plattform zum Verkaufen „konfigurationsumhüllter” Software-Lösungen. 14 FIG. 10 is a flowchart of an example process for providing a platform for selling "configuration wrapped" software solutions.

15 ist ein Flussdiagramm eines Beispielprozesses zum Belasten von Software-Nutzern und Gutschreiben an Software-Anbieter beruhend auf der Auswahl von konfigurationsumhüllten Software-Lösungen durch Software-Nutzer. 15 FIG. 10 is a flow chart of an example process for loading software users and crediting software providers based on the selection of configuration-wrapped software solutions by software users.

16 ist ein Flussdiagramm eines Beispielprozesses zum Verwenden aggregierter Leistungsmesswerte von vielfachen cloudbasierten Bereitstellungen beim Ordnen von wiederverwendbaren Klassendefinitionen, die beim Konfigurieren der vielfachen cloudbasierten Bereitstellungen verwendet wurden. 16 FIG. 10 is a flowchart of an example process for using aggregated performance metrics from multiple cloud-based deployments in ordering reusable class definitions used in configuring the multiple cloud-based deployments.

17 ist ein Flussdiagramm eines Beispielprozesses zum Kategorisieren wiederverwendbarer Klassendefinitionen und Ordnen der wiederverwendbaren Klassendefinitionen innerhalb ihrer jeweiligen Kategorien. 17 FIG. 10 is a flow chart of an example process for categorizing reusable class definitions and ordering the reusable class definitions within their respective categories.

18 ist ein Flussdiagramm eines Beispielprozesses zum Verbinden von Leistungen von vielfachen cloudbasierten Bereitstellungen mit einer Klassendefinition, die verwendet wurde, um die vielfachen cloudbasierten Bereitstellungen zu konfigurieren. 18 Figure 10 is a flow chart of an example process for connecting multiple cloud-based deployments to a class definition used to configure the multiple cloud-based deployments.

19 ist ein Flussdiagramm eines Beispielprozesses zum Ableiten von Leistungsmesswerten in Verbindung mit einer wiederverwendeten Klassendefinition beruhend auf einer aggregierten Leistung von vielfachen Bereitstellungen. 19 FIG. 10 is a flow chart of an example process for deriving performance measurements associated with a reused class definition based on aggregate performance of multiple deployments.

20 ist ein Flussdiagramm eines Beispielprozesses zum Verwenden vielfacher Faktoren beim Ordnen von wiederverwendbaren Klassendefinitionen. 20 FIG. 10 is a flow chart of an example process for using multiple factors in ordering reusable class definitions.

Ähnliche Referenznummern und Kennzeichnungen in den verschiedenen Zeichnungen zeigen ähnliche Elemente an.Similar reference numbers and labels in the various drawings indicate similar elements.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

In einer Cloud-Computing-Umgebung erlangen Clouddienst-Kunden (z. B. Endbenutzer oder Unternehmen) Zugang zu Software-, Plattform- und/oder Infrastruktur-Diensten über ein oder mehrere Netzwerke (z. B. das Internet). Die Clouddienst-Kunden sind in der Lage, die Dienstebene (z. B. in Bezug auf Diensttyp, Qualität und Menge) je nach Bedarf auf- und abwärts zu skalieren, z. B. durch Konfiguration von Benutzeroberflächen, die von den Clouddienst-Anbietern bereitgestellt werden, und/oder durch programmdefinierte Konfigurationsspezifikationen, die bei den Clouddienst-Anbietern gespeichert sind. Dementsprechend vereinigen Clouddienst-Anbieter Ressourcen und bedienen ihre Kunden über ein mandantenfähiges Modell, wo physische und virtuelle Ressourcen gemäß den Kundenbedürfnissen zugeordnet und neu zugeordnet, konfiguriert und neu konfiguriert werden. Die Standorte der physischen Ressourcen, die der Cloud-Infrastruktur zugrunde liegen, sind nicht an die Clouddienst-Kunden ausgesetzt und können sich dynamisch ändern.In a cloud computing environment, cloud service customers (e.g., end users or enterprises) gain access to software, platform, and / or infrastructure services over one or more networks (eg, the Internet). The cloud service customers are able to scale up and down the service level (eg, in terms of service type, quality and quantity) as needed, e.g. By configuring user interfaces provided by the cloud service providers and / or by program-defined configuration specifications stored at the cloud service providers. Accordingly, cloud service providers pool resources and serve their customers through a multi-tenant model where physical and virtual resources are allocated and reassigned, configured, and reconfigured according to customer needs. The locations of the physical resources underlying the cloud infrastructure are not exposed to the cloud service customers and can change dynamically.

1 ist ein Blockdiagramm, das eine beispielhafte Cloud-Computing-Umgebung 100 veranschaulicht. In der beispielhaften Cloud-Computing-Umgebung 100 kommunizieren Clouddienst-Kunden (z. B. 102a, 102b, 102c) mit einem Clouddienst-Anbieter 104 unter Verwendung eines Kundengeräts über ein oder mehrere Netzwerke 106. Die Clouddienst-Kunden beinhalten Endbenutzer von Software-Anwendungen, die von dem Clouddienst-Anbieter 104 bereitgestellt werden, wie z. B. in einem Modell „Software as a Service” (SaaS). Der Clouddienst-Kunde kann auch Unternehmenskunden enthalten, die Plattform- und/oder Infrastruktur-Dienste von dem Clouddienst-Anbieter 104 erhalten, wie z. B. in den Modellen „Platform as a Service” (PaaS) und/oder „Infrastructure as a Service” (IaaS). Die Software-Anwendungsdienste, Plattform-Dienste und Infrastruktur-Dienste, die vom Clouddienst-Anbieter 104 bereitgestellt werden, werden intern oder von dritten Dienstentwicklern 108 entwickelt, und den Clouddienst-Kunden durch den Clouddienst-Anbieter 104 bereitgestellt. Ein Clouddienst-Kunde kann mehr als einen Diensttyp von dem Clouddienst-Anbieter 104 verwenden. 1 is a block diagram illustrating an exemplary cloud computing environment 100 illustrated. In the exemplary cloud computing environment 100 communicate to cloud service customers (eg 102 . 102b . 102c ) with a cloud service provider 104 using a customer device over one or more networks 106 , The cloud service customers include end users of software applications provided by the cloud service provider 104 be provided, such. For example, in a model "Software as a Service" (SaaS). The cloud service customer may also include enterprise customers who provide platform and / or infrastructure services from the cloud service provider 104 obtained, such. 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 be provided internally or by third party service developers 108 and the cloud service customer through the cloud service provider 104 provided. A cloud service customer may have more than one type of service from the cloud service provider 104 use.

In einem Beispiel ist der Clouddienst-Anbieter 104 konzeptuell in vielfache Schichten strukturiert. Die unterste Schicht ist die Firmware- und Hardware-Schicht 110, auf der andere Schichten des Clouddienst-Anbieters 104 aufgebaut sind. Die Firmware- und Hardware-Schicht 110 enthält generisch beitragende Knoten (z. B. Datenzentren, Computer und Speichervorrichtungen), die geografisch über das Internet verteilt sind und die physischen Ressourcen zum Implementieren der oberen Schichten des Clouddienst-Anbieters 104 bereitstellen.In one example, the cloud service provider 104 conceptually structured in multiple layers. The lowest layer is the firmware and hardware layer 110 , on the other layers of the cloud service provider 104 are constructed. The firmware and hardware layer 110 contains generically contributing nodes (eg, data centers, computers, and storage devices) geographically distributed over the Internet and the physical resources to implement the upper layers of the cloud service provider 104 provide.

Über der Firmware- und Hardware-Schicht 110 ist die Software-Systemkernschicht 112. Die Software-Systemkernschicht 112 enthält das Betriebssystem 111 und/oder den virtuelle Maschine-Manager 113, der die Cloud-Infrastruktur-Dienste hostet, die von dem Clouddienst-Anbieter 104 bereitgestellt werden. Die Software-Systemkernschicht 112 kontrolliert und kommuniziert mit der zugrundeliegenden Firmware- und Hardware-Schicht 110 über eine oder mehrere Anwendungsprogrammierungsschnittstellen (APIs) auf Hardware/Firmware-Ebene. Die APIs auf Hardware/Firmware-Ebene können anbieterspezifisch und implementiert sein, um Kommunikationsprotokolle beruhend auf Hypertext Transfer Protocol (HTTP) und HTTP Secure (HTTPS) zu unterstützen. Beispiele für anbieterspezifische APIs enthalten Amazon Web Services APIs, Google App Engine APIs und Microsoft SQL Azure APIs.About the firmware and hardware layer 110 is the software kernel layer 112 , The software kernel layer 112 contains the operating system 111 and / or the virtual machine manager 113 who hosts the cloud infrastructure services provided by the cloud service provider 104 to be provided. The software kernel layer 112 controls and communicates with the underlying firmware and hardware layer 110 via one or more hardware / firmware application programming interfaces (APIs). The APIs at the hardware / firmware level can vendor-specific and implemented to support communication protocols based on Hypertext Transfer Protocol (HTTP) and HTTP Secure (HTTPS). Examples of vendor-specific APIs include Amazon Web Services APIs, Google App Engine APIs, and Microsoft SQL Azure APIs.

Die bereitgestellten Infrastruktur-Dienste von dem Clouddienst-Anbieter 104 enthalten virtualisierte Ressourcen, wie z. B. virtuelle Maschinen, virtuelle Speicherung (z. B. virtuelle Festplatten), virtuelle Netzwerkanwendungen (z. B. Firewalls) usw. Die Infrastruktur-Dienste enthalten auch virtualisierte Dienste, wie z. B. Datenbank-Dienste, Vernetzungs-Dienste, Dateisystem-Dienste, Webhosting-Dienste, Lastausgleichs-Dienste, MapReduce-Dienste, Nachrichtenschlangen-Dienste, Map-Dienste, E-Mail-Dienste usw. Jeder dieser Infrastruktur-Dienste kann von einem Clouddienst Kunden verwendet und in einer Infrastruktur-Dienstschicht 114 oberhalb der Software- Systemkernschicht 112 bereitgestellt werden.The provided infrastructure services from the cloud service provider 104 contain virtualized resources, such as Virtual machines, virtual storage (for example, virtual disks), virtual networking applications (such as firewalls), and so on. The infrastructure services also include virtualized services such as virtual machines. Database services, networking services, file system services, web hosting services, load balancing services, MapReduce services, message queuing services, map services, e-mail services, etc. Each of these infrastructure services may be provided by a cloud service Customers used and in an infrastructure service layer 114 above the software kernel layer 112 to be provided.

Die Skala und mehrere Aspekte (z. B. Daten, Konnektivität und Abhängigkeitsverhältnisse innerhalb und zwischen Dienst Komponenten) von einer Infrastruktur-Dienstbereitstellung sind konfigurierbar von einem Administrator-Benutzer des Clouddienst-Kunden. In einem Beispiel sendet der Administrator-Benutzer eine Konfigurationsspezifikation zu dem Clouddienst-Anbieter 104 über eine Frontend-Schnittfläche 120 des Clouddienst-Anbieters 104. Der Clouddienst-Anbieter 104 übersetzt die Konfigurationsspezifikation in Anweisungen (z. B. API-Aufrufe) zu der Infrastruktur-Dienstschicht 114 und der Systemkernschicht 112 gemäß den APIs von den involvierten Infrastruktur-Diensten und den APIs der zugrundeliegende Software Systemkernschicht 112. Diese Anweisungen werden ausgeführt, um die angeforderten Infrastruktur-Dienste in der Konfigurationsspezifikation der Bereitstellung zu konfigurieren. Beispielsweise kann eine Konfigurationsspezifikation in Infrastruktur- und Systemkern-APIs-Aufrufe übersetzt werden, die Komponenten (z. B. virtuelle Maschinen und Dienste) schaffen, neu schaffen, bewegen oder löschen und Attribute (z. B. Speicher- und CPU-Zuordnungen, Netzwerkeinstellungen, Größe und Volumen von Festplatten) der Komponenten zuweisen oder ändern.The scale and multiple aspects (eg, 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 sends a configuration specification to the cloud service provider 104 via a frontend cut surface 120 of the cloud service provider 104 , The cloud service provider 104 translates the configuration specification into instructions (such as API calls) to the infrastructure service layer 114 and the kernel layer 112 according to the APIs of the infrastructure services involved and the APIs the underlying software kernel layer 112 , These instructions are executed to configure the requested infrastructure services in the configuration specification of the deployment. For example, a configuration specification may be translated into infrastructure and kernel API calls that create, re-create, move, or delete components (e.g., virtual machines and services) and attributes (e.g., memory and CPU mappings). Network settings, size and volume of disks) to the components.

Zusätzlich zu den Infrastruktur-Diensten stellt der beispielhafte Clouddienst-Anbieter 104 auch Plattform-Dienste bereit, wie z. B. eine Umgebung (z. B. Linux, Solaris, Microsoft Windows usw.) zum Ausführen von virtuellen Maschinen oder ein Framework (z. B. NET, Java, Oracle Database usw.) zum Entwickeln und Starten eines bestimmten Typs von Software-Anwendungen. Die Plattform-Dienste werden in einer Plattform-Dienstschicht 116 über der Infrastruktur-Dienstschicht 114 implementiert und können eine oder mehrere Infrastruktur-Dienste verwenden, die auf eine besondere Art konfiguriert sind. Eine Konfiguration von Plattform-Diensten kann durch Programmcode erfolgen, der gemäß den APIs der Plattform-Dienste und optional gemäß den APIs der Infrastruktur-Dienste, die beim Aktivieren der Plattform-Dienste verwendet werden, geschrieben ist.In addition to the infrastructure services, the exemplary cloud service provider provides 104 also platform services ready, such as For example, an environment (such as Linux, Solaris, Microsoft Windows, and so on) that runs virtual machines or a framework (such as .NET, Java, Oracle Database, etc.) to develop and launch a particular type of software. applications. The platform services are in a platform service layer 116 over the infrastructure service layer 114 implements and can use one or more infrastructure services that are configured in a particular way. A configuration of platform services may be done by program code written in accordance with the APIs of the platform services and optionally according to the APIs of the infrastructure services used in activating the platform services.

In diesem Beispiel stellt der Clouddienst-Anbieter 104 auch Software-Anwendungsdienste in einer Anwendungs-Dienstschicht 118 bereit. Eine Software-Anwendung (z. B. eine kommerziell verfügbare Software-Anwendung) kann auf einer oder mehreren virtuelle Maschinen installiert oder in einem Anwendungs-Framework in der Plattform-Dienstschicht 116 bereitgestellt werden. Die Software-Anwendung kann auch mit einer oder mehreren Infrastruktur-Dienstkomponenten (z. B. Firewalls, Datenbanken, Webserver usw.) in der Infrastruktur-Schicht 114 kommunizieren. Die Installation und Konfiguration der Software-Anwendung in der Anwendungs-Dienstschicht 118 kann durch APIs der Software an sich und die APIs der zugrundeliegenden Plattform und Infrastruktur-Dienstkomponenten erfolgen.In this example, the cloud service provider represents 104 also software application services in an application service layer 118 ready. A software application (eg, a commercially available software application) may be installed on one or more virtual machines or in an application framework in the platform service layer 116 to be provided. The software application may also work with one or more infrastructure service components (eg, firewalls, databases, web servers, etc.) in the infrastructure layer 114 communicate. Installation and configuration of the software application in the application service layer 118 can be done through APIs of the software itself and the APIs of the underlying platform and infrastructure service components.

Zum Verwalten der Bereitstellung und Betrieb der bereitgestellten cloudbasierten Dienste an den Clouddienst-Kunden (z. B. 102a, 102b, 102c) enthält der beispielhafte Clouddienst-Anbieter 104 einen Clouddienst-Manager 122. Der beispielhafte Clouddienst-Manager 122 kommuniziert mit der Frontend-Schnittfläche 120, um Dienstanforderungen von dem Clouddienst-Kunden zu erhalten. Der beispielhafte Clouddienst-Manager 122 ist ferner für das Verwalten der Cloud-Ressourcen und Cloud-Dienste verantwortlich, einschließlich Registrierung, Bereitstellung, Koordination, Überwachung, Zeitplanung usw. der Dienste. Wie in dieser Spezifikation beschrieben, enthält der beispielhafte Clouddienst-Manager 122 auch Tools und Bibliotheken zum Übersetzen von Benutzeranforderungen (z. B. wie ausgedrückt in einer oder mehreren Konfigurationsspezifikationen und Dienstebenen-Vereinbarungen (SLAs)) in den verschiedenen Dienstschichten (z. B. die Schichten 114, 116 und 118) in physische Ressourcenanforderungen (z. B. wie ausgedrückt in einem oder mehreren API-Aufrufen auf Systemkern- und Hardware/Firmware-Ebene).To manage the provisioning and operation of the deployed cloud-based services to the cloud service customer (e.g. 102 . 102b . 102c ) contains the example cloud service provider 104 a cloud service manager 122 , The exemplary cloud service manager 122 communicates with the frontend interface 120 to receive service requests from the cloud service customer. The exemplary cloud service manager 122 is also responsible for managing the cloud resources and services, including the registration, provision, coordination, monitoring, scheduling, etc. of the Services. As described in this specification, the exemplary cloud service manager includes 122 also tools and libraries for translating user requests (eg, as expressed in one or more configuration specifications and service level agreements (SLAs)) in the various service layers (eg, the layers 114 . 116 and 118 ) into physical resource requests (eg, as expressed in one or more API calls at kernel and hardware / firmware levels).

Obwohl der beispielhafte Clouddienst-Anbieter 104 alle drei Typen von cloudbasierten Diensten bereitstellt, können in einigen Implementierungen weniger oder mehr Diensttypen bereitgestellt werden. In einigen Implementierungen kann der Clouddienst-Anbieter 104 einige der Clouddienste oder Teile eines Dienstes an andere Clouddienst-Anbieter auslagern. Der Clouddienst-Manager 120 kann API-Aufrufe zu diesen anderen Clouddienst-Anbietern implementieren, um einige seiner Dienste an den Clouddienst-Kunden zu unterstützen. Zusätzlich sind die konzeptuellen Schichten des Clouddienst-Anbieters 104, die in 1 gezeigt werden, rein illustrativ. Eine andere konzeptuelle Struktur eines Clouddienst-Anbieters kann bereitgestellt werden, z. B. abhängig von den diensttypen, die tatsächlich vom Clouddienst-Anbieter angeboten werden.Although the exemplary cloud service provider 104 provides all three types of cloud-based services, in some implementations fewer or more service types may be provided. In some implementations, the cloud service provider may 104 outsource some of the cloud services or parts of a service to other cloud service providers. The cloud service manager 120 can implement API calls to these other cloud service providers to support some of its services to the cloud service customer. In addition are the conceptual layers of the cloud service provider 104 , in the 1 to be shown, purely illustrative. Another conceptual structure of a cloud service provider may be provided, e.g. Depending on the types of services actually offered by the cloud service provider.

In diesem Beispiel können die Clouddienst-Kunden cloudbasierte Dienste verwenden, die in jeder der Dienst-Schichten 114, 116 und 118 angeboten werden. Je nach Art der Dienste, die ein Clouddienst-Kunde verwendet hat, werden dem Clouddienst-Kunden verschiedene Kontrollebenen beim Konfigurieren der Dienste gewährt. Wenn beispielsweise ein Software-Anwendungsdienst verwendet wird, erhält ein Administrator-Benutzer des Clouddienst-Kunden Kontrolle darüber, wie die Software-Anwendung konfiguriert wird, aber die Kontrollen über die zugrundeliegenden Plattform- und Infrastruktur-Dienste, die die Software-Anwendung stützen, bleiben beim Clouddienst-Anbieter 104. Wenn ein Plattform-Dienst verwendet wird, erhält ein Verwaltungsnutzer des Clouddienst-Kunden Kontrolle darüber, wie die Plattform- und/oder Anwendungs-Frameworks konfiguriert werden, aber die Kontrolle über die Infrastruktur-Dienste, die die Plattform- und/oder Anwendungs-Frameworks stützen, bleibt beim Clouddienst-Anbieter 104. Wenn auf ähnliche Art Infrastruktur-Dienste verwendet werden, erhält ein Verwaltungsnutzer des Clouddienst-Kunden Kontrolle über die verwendeten spezifischen Infrastruktur-Dienste, aber nicht über die zugrundeliegende Systemkernschicht 112 und Firmware- und Hardware-Schicht 110.In this example, cloud service customers can use cloud-based services that reside in each of the service layers 114 . 116 and 118 Tobe offered. Depending on the type of service a cloud service customer has used, the cloud service customer is granted different levels of control when configuring the services. For example, when using a software application service, an administrator user of the cloud service customer gains control over how the software application is configured but controls over the underlying platform and infrastructure services that support the software application remain at the cloud service provider 104 , When a platform service is used, an administrative user of the cloud service customer gains control over how the platform and / or application frameworks are configured, but takes control of the infrastructure services that make up the platform and / or application frameworks support, stays with the cloud service provider 104 , Similarly, when infrastructure services are used, an administrative user of the cloud service customer gains control over the specific infrastructure services used, but not on the underlying kernel layer 112 and firmware and hardware layer 110 ,

In der Cloud-Computing-Umgebung 100 greifen die Clouddienst-Kunden unter Verwendung von Datenverarbeitungsvorrichtungen, wie z. B. Personal Computer, Smartphones und Tablet-Computer auf die cloudbasierten Dienste zu. Je nach Art des verwendeten Dienstes können verschiedene Benutzeroberflächen oder Programmierungsschnittstellen verwendet werden um mit dem Clouddienst-Anbieter 104 zu kommunizieren.In the cloud computing environment 100 the cloud service customers are using data processing devices such. For example, personal computers, smartphones, and tablet computers rely on the cloud-based services. Depending on the type of service used, different user interfaces or programming interfaces can be used to connect with the cloud service provider 104 to communicate.

Wenn beispielsweise ein Software-Anwendungsdienst verwendet wird, kann ein Nutzer über einen Webbrowser auf die Software-Anwendung zugreifen und diese verwenden. Wenn Plattform- oder Infrastruktur-Dienste verwendet werden, kann ein Nutzer des Dienstes (z. B. ein Administrator-Benutzer eines Clouddienst-Kunden) auf eine Konfiguration-Benutzerschnittstelle zugreifen, die Verwaltungsfunktionen enthält, um die Dienste zu kontrollieren und zu konfigurieren. Die Verwaltungsfunktionen enthalten z. B. Ein- und Ausschalten von virtuelle Maschinen, Verwalten von Cloud-Speicher, Installieren und Bereitstellen von Software auf virtuelle Maschinen oder Einrichten von Webservern usw. Zusätzlich kann ein Clouddienst-Anbieter 104 optional einem Administrator-Benutzer eines Clouddienst-Kunden erlauben, einen Programmcode gemäß mehreren Anbieter-, Plattform-, Framework- und/oder Dienst-abhängigen Anwendungsprogramm-Schnittstellen (APIs) zu schreiben, um mehrere Aspekte der Dienste zu kontrollieren und zu konfigurieren, die der Clouddienst-Kunde erhält. Wenn in einigen Implementierungen ein offener Standard für eine Cloud-Computing-Umgebung verwendet wird, können die Anbieter-, Plattform-, Framework- und/oder Dienst-abhängigen APIs verwendet werden, um auch die Dienste zu kontrollieren und zu konfigurieren.For example, when using a software application service, a user can access and use the software application through a web browser. When platform or infrastructure services are used, a user of the service (eg, an administrator user of a cloud service customer) may access a configuration user interface that includes administrative functions to control and configure the services. The administrative functions contain z. For example, turning on and off virtual machines, managing cloud storage, installing and deploying software to virtual machines, or setting up web servers, etc. Additionally, a cloud service provider may 104 optionally, allow an administrator user of a cloud service customer to write a program code according to multiple provider, platform, framework, and / or service dependent application program interfaces (APIs) to control and configure several aspects of the services that the cloud service customer receives. In some implementations, when an open standard is used for a cloud computing environment, the provider, platform, framework, and / or service dependent APIs can be used to also control and configure the services.

Beim Konfigurieren eines cloudbasierten Dienstes zur Bereitstellung stellt ein Dienstnutzer oder Dienstentwickler eine oder mehrere Konfigurationsdateien an den Clouddienst-Anbieter 104 bereit. Die Konfigurationsdateien legen den gewünschten Ausgangsstatus des Dienstes ausgedrückt in der Form von mehreren Konfigurationsparametern fest. Normalerweise ist die Konfigurationsdatei strukturiert gemäß den Regeln und der Syntax geschrieben, die durch den Clouddienst-Anbieter 104 bereitgestellt oder anerkannt werden, sodass die Konfigurationsdatei durch den Clouddienst-Anbieter 104 korrekt geparst und interpretiert wird.When configuring a cloud-based service for deployment, a service user or service developer presents one or more configuration files to the cloud service provider 104 ready. The configuration files determine the desired output status of the service expressed in the form of several configuration parameters. Normally, the configuration file is structured according to the rules and syntax written by the cloud service provider 104 be provided or recognized, so that the configuration file by the cloud service provider 104 correctly parsed and interpreted.

2A ist ein Beispiel einer konventionellen Konfigurationsspezifikation 200 zum Bereitstellen einer einfachen Web-Anwendung in einer Cloud-Computing-Umgebung. Die beispielhafte Konfigurationsspezifikation 200 ist in einer Extensible Markup Language (XML) geschrieben, was eine üblicherweise verwendete Sprache zum Spezifizieren von Konfigurationen für cloudbasierte Bereitstellungen ist. Die beispielhafte Konfigurationsspezifikation 200 wird einem Clouddienst-Anbieter in einer Textdatei bereitgestellt. Der Clouddienst-Anbieter verwendet Tools (z. B. einen Parser oder API-Übersetzer), der die Konfigurationsdatei gemäß den Markups (z. B. die MXL-Tags, -Element und -Attribute usw.) in der Konfigurationsdatei parst und die spezifizieren Anforderungen in der Konfigurationsdatei in einen oder mehrere Sätze von API-Aufrufen umwandelt. Nachdem die geeigneten Sätze von API-Aufrufen bestimmt wurden, führt der Clouddienst-Anbieter die API-Aufrufe aus, um die Bereitstellung gemäß den festgelegten Anforderungen in der Konfigurationsdatei durchzuführen. 2A is an example of a conventional configuration specification 200 to deploy a simple web application in a cloud computing environment. The example configuration specification 200 is written in Extensible Markup Language (XML), which is a commonly used language for specifying configurations for cloud-based deployments. The example configuration specification 200 is provided to a cloud service provider in a text file. The cloud service provider uses tools (eg, a parser or API translator) that parse and specify the configuration file according to the markup (eg, the MXL tags, element and attributes, etc.) in the configuration file Converts requests in the configuration file into one or more sets of API calls. After the appropriate sets of API calls have been determined, the cloud service provider executes the API calls to perform the deployment according to the specified requirements in the configuration file.

2B veranschaulicht die resultierende Topologie 208 des Web-Anwendungsdienstes, nachdem er gemäß der Konfigurationsspezifikation 200 bereitgestellt wurde. Zuerst wird gemäß dem Codeblock 202 ein einzelner Grid Service Manager (GSM) 210 auf einer einzelnen virtuelle GSM-Maschine 212 bereitgestellt. Nachdem der GSM 210 auf der GSM-Maschine 212 bereitgestellt wurde, werden zwei Grid Service Containers (GSCs) 214a und 214b bereitgestellt, jeder GSC auf einer jeweiligen GSC-Maschine (216a oder 216b), wie es durch den Codeblock 204 spezifiziert wird. Dann installiert der GSM gemäß dem Codeblock 202 eine Kopie der Web-Anwendungssoftware (z. B. Anwendungskopie 218a oder 218b) in jedem der zwei GSCs 214a und 214b. Gemäß dem Codeblock 206 wird ein Lastausgleichsdienst 220 auf einer Lastausgleichsmaschine 222 gestartet und verwendet, um den Verkehr (z. B. HTTP-Anforderungen von Client-Browsern 224) zu den zwei GSC-Maschinen 216a und 216b zu richten, und vorbereitete Antworten durch die Web-Anwendungen, die auf den GSC-Maschinen 216a und 216b laufen, zurückzumelden. 2 B illustrates the resulting topology 208 the web application service after it has been configured according to the configuration specification 200 was provided. First, according to the code block 202 a single Grid Service Manager (GSM) 210 on a single virtual GSM machine 212 provided. After the GSM 210 on the GSM machine 212 two Grid Service Containers (GSCs) 214a and 214b each GSC on a given GSC machine ( 216a or 216b ), as indicated by the code block 204 is specified. Then the GSM installs according to the code block 202 a copy of the web application software (for example, application copy 218a or 218b ) in each of the two GSCs 214a and 214b , According to the code block 206 becomes a load balancing service 220 on a load-balancing machine 222 started and used the traffic (for example, HTTP requests from client browsers 224 ) to the two GSC machines 216a and 216b to set up and prepared responses through the web applications running on the GSC machines 216a and 216b run, to report back.

Wie in den 2A und 2B gezeigt, beruht die beispielhafte konventionelle Konfigurationsspezifikation 200 auf verschachtelten Markup-Konstrukten (z. B. Codeblock 202, 204 und 206), um die Komponenten einer Bereitstellung und Verhältnisse unter den Komponenten zu beschreiben. Der Nutzer, der die Konfigurationsspezifikation 200 schreibt, muss mit den Details in jedem Markup-Konstrukt, das in die Konfigurationsspezifikation 200 eingeht, und der Bedeutung des Markup-Konstrukts für den API-Übersetzer des Clouddienst-Anbieters vertraut sein. Für eine große und komplexe Bereitstellung kann die Konfigurationsdatei sehr lang und komplex mit vielen Schichten von Markups und duplizierten Anweisungen werden. Außerdem nimmt die Möglichkeit einer Code-Wiederverwendung mit zunehmender Länge und Komplexität einer Konfigurationsspezifikation ab, weil eine Anpassung der Konfigurationsspezifikation für eine andere Bereitstellung sehr viele Änderungen erfordern würde, und auch ein Debugging der angepassten Konfigurationsdatei würde schwieriger werden.As in the 2A and 2 B As shown, the exemplary conventional configuration specification is based 200 on nested markup constructs (for example, code block 202 . 204 and 206 ) to describe the components of a provision and relationships among the components. The user of the configuration specification 200 writes with the details in every markup construct that is in the configuration specification 200 and understand the meaning of the markup construct for the cloud service provider API translator. For a large and complex deployment, the configuration file can become very long and complex with many layers of markup and duplicated instructions. In addition, the possibility of code reuse decreases with increasing length and complexity of a configuration specification, because adapting the configuration specification to another deployment would require a great deal of change, and debugging the custom configuration file would be more difficult.

Wie in dieser Spezifikation offenbart, kann ein Clouddienst-Kunde oder Dienstentwickler anstelle eines Bereitstellens einer geschriebenen Konfigurationsspezifikation in einer Markup-Sprache oder durch eine grafische Benutzeroberfläche, eine geschriebene Konfigurationsspezifikation in einer übergeordneten objektorientierten Spezifikationssprache bereitstellen. Die übergeordnete objektorientierte Spezifikationssprache ermöglicht die Spezifikation von Komponenten (z. B. Infrastrukturen, Speichervorrichtungen, Dienste, zu installierendes Software-Paket, und „Software-Rollen”, die von installierten Software-Anwendungen gespielt werden) einer cloudbasierten Bereitstellung als Instanzen einer oder mehreren wiederverwendbaren und änderbaren Klassen, wobei jede Klasse eine Komponente der Bereitstellung unter Verwendung von einer Gruppe von konfigurierbaren Klassenparametern modelliert. Der Wert von jedem Klassenparameter kann für besondere Bereitstellungen unter Verwendung von der Syntax und den Funktionen, die durch die objektorientierte Spezifikationssprache bereitgestellt werden, spezifiziert, wiederverwendet, oder geändert werden. Die Instanz von jeder wiederverwendbaren und änderbaren Klasse erklärt den gewünschten Status der Komponente, die durch die Klasse modelliert wird.As disclosed in this specification, instead of providing a written configuration specification in a markup language or through a graphical user interface, a cloud service customer or service developer may provide a written configuration specification in a higher-level object-oriented specification language. The parent object-oriented specification language allows the specification of components (eg, infrastructures, storage devices, services, software package to be installed, and "software roles" played by installed software applications) of a cloud-based deployment as instances of one or more reusable and modifiable classes, each class modeling a component of the deployment using a set of configurable class parameters. The value of each class parameter may be specified, reused, or changed for particular deployments using the syntax and functions provided by the object-oriented specification language. The instance of each reusable and modifiable class explains the desired state of the component modeled by the class.

Wie in dieser Spezifikation beschrieben, wird eine Übernahme von Klassendefinitionen durch die übergeordnete objektorientierte Spezifikationssprache unterstützt. Neue Klassendefinitionen können beruhend auf Anweisungen, die eine oder mehrere vorhandene Klassendefinitionen unter Verwendung der übergeordneten Spezifikationssprache in Bezug setzen oder ändern, bereitgestellt werden. Anweisungen, die verschiedene Klassen in Bezug setzen, erfassen die Verhältnisse zwischen vielfachen Aspekten (z. B. Daten- oder Funktionskomponenten) einer Bereitstellung. Beispiele solcher Verhältnisse enthalten die Abhängigkeiten zwischen Software-Installationen und Dienstaktivierungen in einer Bereitstellung, die Konnektivität zwischen vielfachen Software-Rollen in einer Bereitstellung, und die Konnektivität zwischen einer Software-Rolle und einem Dienst oder einer virtuellen Vorrichtung in einer Bereitstellung. Neue Klassendefinitionen können auch durch Erweitern einer vorhandenen Klassendefinition mit der Addition neuer Klassenparameter und/oder Verfahren geschaffen werden. Ein Nutzer kann eine Bereitstellung durch Spezifizieren einer neuen Klasse abgeleitet von einer oder mehreren vorhandenen Basisklassen und Instanziieren der neuen Klasse anpassen.As described in this specification, the adoption of class definitions is supported by the parent object-oriented specification language. New class definitions may be provided based on instructions relating or changing one or more existing class definitions using the parent specification language. Statements that relate to different classes capture the relationships between multiple aspects (eg, 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 instantiating the new class.

Gemäß dieser Spezifikation ist ein Clouddienst-Anbieter in der Lage, geschriebene Konfigurationsspezifikation in der übergeordneten objektorientierten Spezifikationssprache in einen Satz von API-Aufrufen beruhend auf den spezifizierten Anforderungen durch die enthaltenen Klassendefinitionen in der Konfigurationsspezifikation zu kompilieren. Die Aufnahme einer Klassendefinition in eine Konfigurationsspezifikation bezieht sich auf eine Anforderung in einer Konfigurationsspezifikation, die Klassendefinition zu instanziieren oder eine neue Klassendefinition abgeleitet von der Klassendefinition zu instanziieren.According to this specification, a cloud service provider is able to compile written configuration specification in the parent object-oriented specification language into a set of API calls based on the specified requirements through the included class definitions in the configuration specification. Including a class definition in a configuration specification refers to a request in a configuration specification to instantiate the class definition or to instantiate a new class definition derived from the class definition.

In einigen Implementierungen haben verschiedene Dienst-Schichten des Clouddienst-Anbieters und verschiedene Dienste innerhalb derselben Schicht verschiedene APIs. Zum Kompilieren der geschriebenen Konfigurationsspezifikation in der objektorientierten Spezifikationssprache speichert der Clouddienst-Anbieter einen Satz von Regeln und Protokollen zum Übersetzen jeweils eines Satzes der grundlegendsten Klassendefinitionen (oder Kernklassendefinitionen) der Spezifikationssprache zu einer jeweiligen Gruppe von API-Aufrufen. Die Gruppe von API-Aufrufen von jeder Kernklassendefinition entspricht der API des modellierten Komponententyps durch die Kernklassendefinition. Der Compiler ist dann in der Lage, den Satz von Regeln und Protokollen dazu zu verwenden, alle abgeleiteten Klassendefinitionen von den Kernklassendefinitionen in eine geeignete Kombination von API-Aufrufen zu übersetzen, um alle Komponenten einer spezifischen Bereitstellung zu konfigurieren. In einigen Implementierungen werden die API-Aufrufe zu einem oder mehreren Servern des Clouddienst-Anbieters gesendet und dort ausgeführt. Alternativ können einige der API-Aufrufe zu einer Zwischenkomponente des Clouddienst-Anbieters oder einem dritten Dienstanbieter weitergeleitet werden, wo die API-Aufrufe weiter in untergeordnete API-Aufrufe verarbeitet und durch die Unterkomponenten der Zwischenkomponente oder den dritten Dienstanbieter durchgeführt werden.In some implementations, different service layers of the cloud service provider and different services within the same layer have different APIs. To compile the written configuration specification in the object-oriented specification language, the cloud service provider stores a set of rules and protocols for translating a set of the most basic class definitions (or core class definitions) of the specification language into a respective set of API calls. The group of API calls from each core class definition corresponds to the model component type API through the core class definition. The compiler is then able to change the set of rules and Use protocols to translate all derived class definitions from the core class definitions into an appropriate combination of API calls to configure all components of a specific 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 routed to an intermediary component of the cloud service provider or a third service provider, where the API calls are further processed into child API calls and performed by the subcomponents of the intermediate component or the third service provider.

In einigen Implementierungen enthält die übergeordnete objektorientierte Spezifikationssprache auch eine Syntax zum Spezifizieren von Auslösern für ein Skalieren oder dynamisches Neukonfigurieren mehrerer Aspekte der Bereitstellung. Beispielsweise kann eine Klassendefinition, die eine virtuelle Maschine modelliert, eine oder mehrere Klassenparameter für die Skalierungsrichtlinie enthalten, sodass der Compiler API-Aufrufe ableiten kann, um die Anzahl von bereitgestellten virtuelle Maschinen beruhend auf mehreren Leistungsmesswerte, die durch den Clouddienst-Manager überwacht werden (z. B. der gezeigte Clouddienst-Manager 122 in 1) dynamisch einzustellen.In some implementations, the parent object-oriented specification language also includes a syntax for specifying triggers for scaling or dynamically reconfiguring multiple aspects of the deployment. For example, a class definition that models a virtual machine can contain one or more scaling policy class parameters, so that the compiler can derive API calls to estimate the number of virtual machines deployed based on multiple performance metrics that are monitored by the cloud service manager ( For example, the cloud service manager shown 122 in 1 ) dynamically adjust.

Die folgenden Beispiele (gezeigt in den 3A3C) illustrieren die Syntax und verschiedenen Eigenschaften einer beispielhaften objektorientierten Spezifikationssprache, und wie eine cloudbasierte Bereitstellung gemäß der beispielhaften objektorientierten Spezifikationssprache und beruhend auf vorhandenen und neu abgeleiteten Klassendefinitionen spezifiziert werden kann.The following examples (shown in the 3A - 3C ) illustrate the syntax and various properties of an exemplary object-oriented specification language, and how to specify a cloud-based deployment according to the example object-oriented specification language and based on existing and newly-derived class definitions.

Im ersten Beispiel wird eine beispielhafte Konfigurationsspezifikation 300, die in einer beispielhaften objektorientierten Spezifikationssprache geschrieben ist, in 3A gezeigt. Die erfolgte Bereitstellung gemäß dieser Konfigurationsspezifikation 300 dient zum Starten einer virtuellen Maschine mit einem installierten Webserver (z. B. ein Apache-Webserver), der die vorhandenen Dateien in einem Datenpaket liefert.The first example shows an example configuration specification 300 , which is written in an exemplary object-oriented specification language, in 3A shown. The provision made according to this configuration specification 300 Used to boot a virtual machine with an installed web server (for example, an Apache web server) that delivers the existing files in a data packet.

Dieses Beispiel setzt ein Vorhandensein einer Anzahl von Basisklassendefinitionen voraus, die der Compiler parsen und in API-Aufrufe übersetzen kann. Die vorhandenen Basisklassendefinitionen enthalten einen Satz von Kernklassendefinitionen, die durch den Compiler bereitgestellt werden, und möglicherweise andere Klassendefinitionen, die sich von einer oder mehreren der Kernklassendefinitionen entweder direkt oder über eine oder mehrere Zwischenklassendefinitionen erstreckt.This example assumes that there are a number of base class definitions that the compiler can parse and translate into API calls. The existing base class definitions contain 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 through one or more intermediate class definitions.

In einigen Implementierungen sind die vorhandenen Basisklassendefinitionen in Modulen gruppiert (z. B. die gezeigten Module „utils”, „std” in 3A), und enthaltene Klassen werden in einer Konfigurationsspezifikation durch einen Modulnamen gefolgt von einem Klassennamen bezeichnet (z. B. „std.Parameters”, „utils.ConfiguratorLAMP”, „std.DataPackage”, „std.Role”, „utils.PublicTCPFirewall”, „utils.BaseDeployment”, wie es in der Spezifikation 300 gezeigt wird). Jede der Basisklassendefinitionen spezifiziert einen anfänglichen Konfigurationszustand einer entsprechenden Komponente einer cloudbasierten Bereitstellung, die den Änderungen und Komponentenverhältnissen unterliegt, die in der Konfigurationsspezifikation 300 festgelegt sind.In some implementations, the existing base class definitions are grouped in modules (eg, the shown modules "utils", "std" in 3A ), and contained classes are named in a configuration specification by a module name followed by a class name (for example, std.Parameters, utils.ConfiguratorLAMP, std.DataPackage, std.Role, utils.PublicTCPFirewall "," Utils.BaseDeployment "as stated in the specification 300 will be shown). Each of the base class definitions specifies an initial configuration state of a corresponding component of a cloud-based deployment subject to the changes and component relationships set forth in the configuration specification 300 are fixed.

Wie in 3A gezeigt, enthält die Konfigurationsspezifikation 300 neue Klassendefinitionen, die sich von den vorhandenen Basisklassendefinitionen erstreckt. Beispielsweise erstreckt sich eine neue Klasse „Params” von der Basisklasse „std.Parameters”, eine neue Klasse „SimpleHostingPackage” erstreckt sich von der Basisklasse „std.DataPackage”, eine neue Klasse „SimpleHostingVM” erstreckt sich von der Basisklasse „utils.Configurator.LAMP”, eine neue Klasse „SimpleHostingRole” erstreckt sich von der Basisklasse „std.Role”, eine Klasse „SimpleHostingFirewall” erstreckt sich von der Basisklasse „utils.PublicTCPFirewell”, und eine Klasse „SimpleHostingDeployment” erstreckt sich von der Basisklasse „utils.BaseDeployment”, wie gezeigt durch die neue Klassendefinitionen 302, 304, 306, 308, 310, bzw. 312. Die Konfigurationsspezifikation 300 löst die Bereitstellung einer einfachen Hosting-Anwendung durch Schaffen einer Instanz der Klasse „SimpleHostingDeployment” aus (z. B. wie gezeigt durch die Anweisung 314), was wiederum Instanzen von anderen Klassen schafft, von denen die Klasse „SimpleHostingDeployment” abgeleitet wird.As in 3A shown, contains the configuration specification 300 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 , respectively. 312 , The configuration specification 300 triggers the deployment of a simple hosting application by creating an instance of the SimpleHostingDeployment class (for example, through the statement as shown) 314 ), which in turn creates instances of other classes from which the class "SimpleHostingDeployment" is derived.

In diesem Beispiel passt die Klassendefinition 312 „SimpleHostingDeployment” die Definition der Basisklasse „utils.BaseDeployment” durch Ändern von zwei Klassenparametern an, ein Parameter „roles” und ein Parameter „Firewall”. Der Parameter „roles” spezifiziert die jeweiligen Software-Rollen, die eine oder mehrere installierte Software-Paket in der Bereitstellung spielen sollen. Der Parameter „Firewall” spezifiziert, dass ein Firewall-Dienst als Teil der Bereitstellung aufgenommen werden soll. In diesem Fall spezifiziert die Klassendefinition 312, dass eine einzelne Software-Rolle aufgenommen werden soll, was durch eine Instanz der Klasse „SimpleHostingRole” dargestellt wird. Die Klassendefinition 312 spezifiziert ferner, dass der Firewall-Dienst, der in dieser Bereitstellung aufgenommen werden soll, durch eine Instanz der Klasse „SimpleHostingFirewall” dargestellt wird. Gemäß den Eigenschaften der objektorientierten Spezifikationssprache übernimmt die Klasse „SimpleHostingDeployment” andere Klassenparameter, die in der Basisklasse „utils.BaseDeployment” definiert sind, ohne weitere Änderung. Diese anderen Klassenparameter beschreiben andere Aspekte der Bereitstellung, die für diese einfache Hosting-Bereitstellung nicht weiter angepasst werden müssen.In this example, the class definition fits 312 "SimpleHostingDeployment" defines the definition of the base class "utils.BaseDeployment" by changing two class parameters, a parameter "roles" and a parameter "Firewall". The "roles" parameter specifies the respective software roles that are to play one or more installed software packages in the deployment. The Firewall parameter specifies that a firewall service should be included as part of the deployment. In this case, the class definition specifies 312 that a single software role should be included, which is represented by an instance of the class "SimpleHostingRole". 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. According to the properties of the object-oriented specification language, the class "SimpleHostingDeployment" takes over others Class parameters defined in the base class "utils.BaseDeployment" without further modification. These other class parameters describe other aspects of deployment that do not need further customization for this simple hosting deployment.

Gemäß der Klassendefinition 312 erfordert eine Instanziierung der Klasse „SimpleHostingDeployment” auch eine Instanziierung der Klassen „SimpleHostingRole” und „SimpleHostingFirewall”. Wie in 3A gezeigt, erstreckt sich die Klassendefinition 308 „SimpleHostingRole” von der Basisklasse „std.Role”. Beide Klassen beruhen auf einem Modell „software role”, das eine Software-Installation gemäß der Rolle, die die Software-Installation in einer cloudbasierten Bereitstellung spielt, kategorisiert. Beispielsweise kann ein Software-Paket installiert werden, um eine Rolle eines Webhost, eines Frontend, eines Backend, einer Kommunikationsschnittstelle zu spielen. Je nach der spezifischen Rolle, die eine Software-Installation spielt, können verschiedene Parameter verwendet werden, um die Software-Installation zu konfigurieren. Jeder konfigurierbare Parameter für die Software-Rolle kann einen entsprechenden Klassenparameter oder eine Funktion in der Klassendefinition haben, der/die beruhend auf dem Modell „software role” geschaffen wurde.According to the class definition 312 Instancing the SimpleHostingDeployment class also requires instantiation of the SimpleHostingRole and SimpleHostingFirewall classes. As in 3A shown, the class definition extends 308 "SimpleHostingRole" of 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 web host, a front end, a backend, a communication interface. Depending on the specific role played by a software installation, various parameters may be used to configure the software installation. Each configurable parameter for the software role may have a corresponding class parameter or function in the class definition created based on the "software role" model.

In einem Beispiel kann zusätzlich zu einem Identifikator oder Namen der Rolle, die die Software-Installation in einer Bereitstellung spielt, ein Modell „software role” Modellparameter zum Konfigurieren mehrerer Aspekte der Software-Installation enthalten, einschließlich der die virtuellen Maschinen, auf denen die Software installiert werden soll, der Lage der Software-Binärdaten, Anweisungen dazu, welches Installationsprogramm verwendet werden soll, um die Software zu installieren usw. Wenn die Software-Installation erfordert, dass zuerst andere Dienste oder Software-Installationen ausgeführt werden müssen, ist diese Abhängigkeit optional auch im Modell „software role” enthalten. Ein Beispiel für Abhängigkeitsverhältnisse sind „start after” oder „stop before”. Andere Abhängigkeitstypen (z. B. auf derselben virtuellen Maschine installieren usw.) können auch unterstützt werden.In one example, in addition to an identifier or name of the role that the software installation plays in a deployment, a model "software role" may include model parameters for configuring several aspects of the software installation, including the virtual machines on which the software resides installation, the location of the software binary data, instructions on which installer to use to install the software, and so on. If the software installation requires that other services or software installations be run first, this dependency is optional also included in the model "software role". An example of dependency relationships are "start after" or "stop before". Other dependency types (for example, installing on the same virtual machine, etc.) can also be supported.

In diesem Beispiel in 3A spezifiziert die Klassendefinition 308 für die Klasse „SimpleHostingRole”, dass die Rolle der Software-Installation in der Bereitstellung ist, als ein „webhost” zu dienen. Wie die Software „webhost” bereitgestellt werden soll, wird dem Compiler durch die Klassendefinition der Klasse „simplehosting.webhost” bekanntgegeben. In diesem Beispiel enthält die Klassendefinition „simplehosting.webhost” die Konfigurationen eines einfachen Apache-Webserver, der bereits geschrieben und dem Compiler bekanntgegeben ist. Wenn die Klasse „SimpieHostingRole” instanziiert wird, wird auch die Klasse „simplehosting.webhost” instanziiert.In this example in 3A specifies the class definition 308 for the class "SimpleHostingRole" that the role of the software installation is in the deployment to serve as a "webhost". How to deploy the software "webhost" is announced to the compiler by the class definition of the class "simplehosting.webhost". In this example, the simplehosting.webhost class definition contains the configurations of a simple Apache Web server that is already written and advertised to the compiler. When the SimpieHostingRole class is instantiated, the simplehosting.webhost class is also instantiated.

Die Klassendefinition 308 für die Klasse „SimpleHostingRole” erklärt ferner, dass das Datenpaket, das zum Ausführen dieses Webhost notwendig ist, durch eine Instanz der Klasse „SimpleHostingPackage” dargestellt wird, und dass der Webhost auf den virtuellen Maschinen installiert werden soll, der durch Instanzen einer Klasse „SimpleHostingVM” dargestellt wird.The class definition 308 for the class "SimpleHostingRole" further declares that the data package necessary to run this web host is represented by an instance of the class "SimpleHostingPackage", and that the web host should be installed on the virtual machines that are protected by instances of a class " SimpleHostingVM "is displayed.

In diesem Beispiel sind jedes von „roleName”, „moduleName”, „dataPackages” und „vms” Parameter der Klasse „std.Role” und sind in der Klassendefinition 308 „SimpleHostingRole” angepasst. Andere Klassenparameter der Klasse „std.Role” werden von der Klasse „SimpleHostingRole” ohne Änderung übernommen. Die Klassendefinition 308 der Klasse „SimpleHostingRole” definiert auch ein paar neue Parameter, wie z. B. die Parameter „serving_domain” und „document_root”, deren Werte entweder indirekt durch einen anderen Parameternamen (z. B. „serving_domain” der Klasse 302 „Params”) oder durch eine direkte Werteeingabe (z. B. „/var/www/static”) zugewiesen werden. In diesem Beispiel wird nur eine Software-Rolle definiert, d. h. es wird keine Abhängigkeit zwischen Software-Rollen für die Software-Rolle (z. B. „SimpleHostingRole”) in Bezug auf Installation oder Ausführung spezifiziert.In this example, each of "roleName", "moduleName", "dataPackages" and "vms" are parameters of class "std.Role" and are in the class definition 308 Customized "SimpleHostingRole". Other class parameters of the std.Role class are inherited by the SimpleHostingRole class without modification. The class definition 308 The SimpleHostingRole class also defines a few new parameters, such as: For example, the serving_domain and document_root parameters, whose values are either indirectly indexed by another parameter name (for example, serving_domain of the class) 302 "Params") or by a direct value input (eg "/ var / www / static"). In this example, only one software role is defined, ie no dependency between software roles for the software role (eg "SimpleHostingRole") with respect to installation or execution is specified.

In Bezug auf die Firewall-Komponente der Bereitstellung beruht die Klassendefinition 310 der Klasse „SimpleHostingFirewall” auf der vorhandenen Klassendefinition „utils.PublicTCPFirewall”. In diesem Beispiel definiert die Klasse „utilis.PublicTCPFirewall” eine öffentliche Firewall mit festgelegtem Transmission Control Protocol (TCP) als Protokoll. Die einzigen Parameter der Klasse „PublicTCPFirewall” für diese Bereitstellung sind die Parameter „target” und „ports”. In der Klassendefinition 310 wird das Ziel der Firewall durch eine Instanz der Klasse „SimpleHostingRole” dargestellt, während der Port der Firewall auf den Port „80” festgelegt ist. Andere Parameter (z. B. die Parameter „source” und „protocol”), die zum Konfigurieren der Firewall notwendig sind, werden in der Basisklassendefinition von „PublicTCPFirewall” spezifiziert und werden von der Klasse „SimpleHostingFirewall” ohne Änderung übernommen. In diesem Beispiel wird eine Konnektivität zwischen der Firewall-Komponente und der Rolle einer einfachen Hosting-Software (z. B. dargestellt durch eine Instanz der Klasse „SimpleHostingRole”) durch die Wertezuweisung zu dem Parameter „target” spezifiziert.The class definition is based on the firewall component of the deployment 310 the class "SimpleHostingFirewall" on the existing class definition "utils.PublicTCPFirewall". In this example, the utilis.PublicTCPFirewall class defines a public firewall with a specified Transmission Control Protocol (TCP) protocol. The only parameters of the PublicTCPFirewall class for this deployment are the target and ports parameters. In the class definition 310 the firewall destination is represented by an instance of the SimpleHostingRole class, while the firewall's port is set to port 80. Other parameters (such as the source and protocol parameters) that are required 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, connectivity between the firewall component and the role of simple hosting software (e.g., represented by an instance of the SimpleHostingRole class) is specified by the value assignment to the target parameter.

In diesem Beispiel beruhen die Klassendefinitionen der Klassen „SimpleHostingFirewall” und „utils.PublicTCPFirewall” beide auf einem Firewall-Dienstmodell. Im Gegensatz zu einem Modell „software role” muss ein Dienstmodell keine Parameters für die zugrundeliegenden virtuellen Maschinen, Festplatten oder Software-Pakete enthalten. Stattdessen werden diese Aspekte vom Clouddienst-Anbieter kontrolliert und unterliegen nicht der Konfiguration durch die Nutzer des Dienstes. Wie bei einem Modell „software role” enthält ein Dienstmodell optional auch Parameter, die Abhängigkeiten zwischen Diensten und zwischen Dienst- und Software-Rollen spezifizieren. In diesem Beispiel ist die Firewall-Komponente mit der Webserver-Komponente verbunden, es werden aber keine Abhängigkeiten des Firewall-Dienstes für diese einfache Hosting-Bereitstellung spezifiziert. Wie vorstehend dargelegt und gezeigt in 3A erfordert die Klassendefinition 308 der Klasse „SimpleHostingRole” eine Instanziierung der Klasse „SimpleHostingPackage” und der Klasse „SimpleHostingVM”. Die Klassendefinition 304 der Klasse „SimpleHostingPackage” spezifiziert die Quelle der Daten (z. B. „data” im aktuellen Verzeichnis), die zu dem Hosting der virtuelle Maschine der „SimpleHostingRole” kopiert werden sollen. Die Klassendefinition 304 spezifiziert ferner ein Zielverzeichnis (z. B. „/var/www/static”) der kopierten Daten auf der virtuellen Maschine. Wenn die Bereitstellung gemäß der Konfigurationsspezifikation 300 erfolgt, wird das Datenpaket „data” von dem Verzeichnis, wo die Konfigurationsdatei residiert, zu dem Zielverzeichnis „/var/www/static” auf der virtuellen Maschine kopiert, die gemäß der Klassendefinition 306 „SimpleHostingVM” bereitgestellt wird.In this example, the class definitions of the SimpleHostingFirewall and utils.PublicTCPFirewall classes are both based on a firewall service model. Unlike a "software role" model, a service model does not have to Parameters for the underlying virtual machines, disks or software packages included. Instead, these aspects are controlled by the cloud service provider and are not subject to configuration by the users of the service. As with a "software role" model, a service model optionally also includes parameters that specify dependencies between services and between service and software roles. In this example, the firewall component is connected to the web server component, but no firewall service dependencies are specified for this simple hosting deployment. As set forth above and shown in FIG 3A requires the class definition 308 the class "SimpleHostingRole" an instantiation of the class "SimpleHostingPackage" and the class "SimpleHostingVM". The class definition 304 the SimpleHostingPackage class specifies the source of the data (for example, data in the current directory) that should be copied to the SimpleHostingRole virtual machine hosting. The class definition 304 further specifies a destination directory (eg, "/ var / www / static") of the copied data on the virtual machine. If the deployment is in accordance with the configuration specification 300 is done, the data packet "data" is copied from the directory where the configuration file resides to the target directory "/ var / www / static" on the virtual machine, according to the class definition 306 "SimpleHostingVM" is provided.

Wie in 3A gezeigt, erstreckt sich die Klassendefinition 306 „SimpleHostingVM” von der Klassendefinition „utils.ConfiguratorLAMP”. Beide Klassen beruhen auf einem virtuellen Maschine-Modell und spezifizieren, wie eine virtuelle Maschine konfiguriert werden kann. In diesem Beispiel konfiguriert die Klasse „utils.ConfiguratorLAMP” eine angepasste virtuelle Maschine, auf der bereits ein Apache-Webserver installiert ist. Daher kann ein Nutzer durch Erweitern von der Klasse „utils.ConfiguratorLAMP” anstatt von einer Standardklasse einer virtueller Maschine Klasse den Konfigurationsprozess vereinfachen und beschleunigen. Die Klassendefinition 306 „SimpleHostingVM” spezifiziert auch die Anzahl von virtuellen Maschinen, die in dieser Bereitstellung bereitgestellt werden sollen und die externen IP-Adressen, die an die virtuellen Maschinen gebunden werden sollen, durch die neu hinzugefügten Klassenparameter „replicas” und „staticIP”. Andere Parameter, die üblicherweise zum Konfigurieren einer virtuellen Maschine oder von virtuellen Maschinen zum Unterstützen eines Software-Rolle verwendet werden, enthalten beispielsweise Konfigurationsparameter für die CPU und Speicheranforderungen der virtuellen Maschine(n), Speicherfestplatten, die an die virtuelle(n) Maschine(n) gebunden werden sollen, Festwertspeicherquellen, die an die virtuelle(n) Maschine(n) gebunden sind, IP-Adressen, Netzwerkschnittstellen der virtuelle(n) Maschine(n), den Datenzentrumstandort der virtuellen Maschine(n) usw. Jeder dieser Modellparameter für virtuelle Maschine ist optional als ein Klassenparameter in einer Klassendefinition einer virtuellen Maschine oder anderen Klasse enthalten, die sich von der Basisklassendefinition einer virtuellen Maschine erstreckt.As in 3A shown, the class definition extends 306 "SimpleHostingVM" of the class definition "utils.ConfiguratorLAMP". 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 custom virtual machine that already has an Apache Web server installed. Therefore, by extending the class "utils.ConfiguratorLAMP" rather than a standard class of a virtual machine class, a user can simplify and speed up the configuration process. The class definition 306 SimpleHostingVM also specifies the number of virtual machines to deploy in this deployment and the external IP addresses to bind 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 to support a software role include, for example, configuration parameters for the CPU and memory requirements of the virtual machine (s), storage disks that are attached to the virtual machine (n ), read-only memory sources bound to the virtual machine (s), IP addresses, network interfaces of the virtual machine (s), virtual machine datacenter location (s), etc. Each of these model parameters for The virtual machine is optionally included as a class parameter in a class definition of a virtual machine or other class that extends from the base class definition of a virtual machine.

Optional ist eine spezielle Klasse „Params” in der Konfigurationsspezifikation einer Bereitstellung enthalten, wie z. B. die gezeigte in der beispielhaften Konfigurationsspezifikation 300. In dieser Klassendefinition können Parameterwerte bereitgestellt und verwendet werden, um Parameter in anderen Klassendefinitionen, die in derselben Konfigurationsdatei enthalten sind, Werte zuzuweisen. Beispielsweise werden die Werte der Parameter „replica_count”, „serving_domain” und „ip_array” in die Klassendefinitionen 306 und 308 durch Bezugnahme auf die jeweiligen Parameternamen eingefügt.Optionally, a special class "Params" is included in the configuration specification of a deployment, such as: The one shown in the example configuration specification 300 , In this class definition, parameter values can be provided and used to assign values to other class definitions contained in the same configuration file. For example, the values of the parameters "replica_count", "serving_domain" and "ip_array" will be in the class definitions 306 and 308 by referring to the respective parameter names.

Wie in der beispielhaften Konfigurationsspezifikation 300 gezeigt, ist es möglich, Klassendefinitionen für verschiedene Komponenten einer cloudbasierten Bereitstellung beruhend auf verschiedenen Komponentenmodellen zu schaffen. Eine übergeordnete objektorientierte Spezifikationssprache kann beruhend auf Modellen mehrerer Arten von Infrastrukturen, Speichern, Diensten und Software-Rollen, die es üblicherweise in einer cloudbasierten Computing-Umgebung gibt, entwickelt werden. Jedes Modell beschreibt eine entsprechende Infrastrukturkomponente, einen Speicher, Dienst oder eine Software-Rolle unter Verwendung einer Reihe von Modellparametern. Kernklassendefinitionen, die generische anfängliche Konfigurationszustände einiger der üblichsten und grundlegenden Komponenten der cloudbasierten Umgebung darstellen, können beruhend auf diesen Komponentenmodellen geschaffen werden. Da komplexere Komponenten aus Kombinationen von vielfachen Basiskomponenten aufgebaut werden können, können Klassendefinitionen, die die anfänglichen Konfigurationszustände von komplexeren Komponenten darstellen, die aus vielfachen Kernklassendefinitionen und/oder anderen Klassendefinitionen, die von den Kernklassendefinitionen abgeleitet sind, geschaffen werden.As in the example configuration specification 300 As shown, it is possible to create class definitions for various 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 multiple types of infrastructures, storage, services, and software roles that typically exist in a cloud-based computing environment. Each model describes a corresponding infrastructure component, memory, service, or software role using a number of model parameters. Core class definitions that represent generic initial configuration states of some of the most common and basic components of the cloud-based environment may be created based on these component models. As more complex components can be built from combinations of multiple base components, class definitions representing the initial configuration states of more complex components can be created from multiple core class definitions and / or other class definitions derived from the core class definitions.

Ein Compiler der übergeordneten objektorientierten Spezifikationssprache wird geschaffen, um die geschaffenen Klassendefinitionen beruhend auf diesen Komponentenmodellen zu parsen, die ausgedrückten Konfigurationsanforderungen durch die Werte der Klassenparameter zu extrahieren und die Anforderungen in einen geeigneten Satz von API-Aufrufen zum Konfigurieren der Arten von Komponenten zu übersetzen, die durch diese Komponentenmodelle dargestellt wird. In einigen Implementierungen wird ein Compiler als ein Software-Programm oder Script implementiert, das eine Konfigurationsdatei liest und einen Satz von API-Aufrufen ausgibt. In einigen Implementierungen richtet der Compiler die API-Aufrufe auch zu geeigneten Komponenten des Clouddienst-Anbieters oder von dritten Anbietern zur Ausführung.A superordinate object-oriented specification language compiler is provided to parse the created class definitions based on these component models, extract the expressed configuration requirements by the values of the class parameters, and translate the requirements into an appropriate set of API calls to configure the types of components. which is represented by these component models. In some implementations, a compiler is implemented as a software program or script that reads a configuration file and issues a set of API calls. In In some implementations, the compiler also directs API calls to appropriate components of the cloud service provider or third party vendors.

Das Beispiel in 3A hat dargestellte Klassendefinitionen, die beruhend auf einem beispielhaften Software-Datenpaketmodell, einem beispielhaften Modell einer virtuellen Maschine, einem beispielhaftem Modell „software role”, einem beispielhaften Firewall-Dienstmodell bzw. einem beispielhaften Bereitstellungsmodell entwickelt wurden. Als ein zusätzliches Beispiel enthält ein beispielhaftes Speichermodell Modellparameter zum Konfigurieren von Aspekten einer Speicheroption einer Bereitstellung, wie z. B. die Größe des Speichers, Montagestellen des Speichers usw. In einigen Implementierungen enthält ein Speichermodell optional eine Skalierungsrichtlinie zum dynamischen Einstellen der Größe des Speichers beruhend auf einer überwachten Verwendung des Speichers. Außerdem kann eine cloudbasierte Umgebung zusätzlich zu einem Firewall-Dienst viele Plattform- und Infrastruktur-Dienste enthalten, wie z. B. ein Datenbank-Dienst, ein Nachrichtenschlangen-Dienst, ein Lastausgleichsdienst, ein Map-Dienst, ein Map-Reduce-Dienst usw. Verschiedene Dienstmodelle können für jeden dieser cloudbasierten Dienste entwickelt werden und Klassendefinitionen zum Konfigurieren der verschiedenen Dienste können beruhend auf den verschiedenen Dienstmodellen geschaffen werden.The example in 3A has illustrated class definitions that have been developed based on an example software data package model, an example virtual machine model, a model "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 a storage option. Memory size, mounting locations, etc. In some implementations, a memory model optionally includes a scaling policy for dynamically adjusting the size of the memory based on a monitored use of the memory. Additionally, in addition to a firewall service, a cloud-based environment may include many platform and infrastructure services, such as: A database service, a message queue service, a load balancing service, a map service, a map reduce service, etc. Various service models may be developed for each of these cloud-based services and class definitions for configuring the various services may be based on the various Service models are created.

Wie gezeigt durch das Beispiel von 3A, ermöglicht eine objektorientierte Spezifikationssprache die Schaffung von Klassenhierarchien, die verschiedene Anpassungsebenen für Komponenten in mehreren Schichten der Cloud-Computing-Umgebung darstellen. Eine geschriebene Konfigurationsspezifikation in der objektorientierten Spezifikationssprache vorhandene Klassendefinitionen durch Erweitern von einer vorhandenen Klassendefinition oder Bezugnahme auf eine Instanz einer vorhandenen Klassendefinition wiederverwenden, wenn einem Klassenparameter ein Wert zugewiesen wird. Ein Wiederverwenden vorhandener Klassendefinitionen vereinfacht die Konfigurationsspezifikation für eine neue Bereitstellung. Außerdem muss ein Nutzer bei Wiederverwendung einer vorhandenen Klassendefinition nur den Konfigurationszustand wissen, der durch die vorhandene Klassendefinition erreicht werden kann, aber nicht alle dargelegten wörtlichen Details in der Klassendefinition, um diesen Konfigurationszustand zu erreichen.As shown by the example of 3A , an object-oriented specification language allows the creation of class hierarchies that represent different levels of customization for components in multiple layers of the cloud computing environment. A written configuration specification in the object-oriented specification language reusing existing class definitions by augmenting an existing class definition or referring to an instance of an existing class definition when a value is assigned to a class parameter. Reusing existing class definitions simplifies the configuration specification for a new deployment. In addition, when reusing an existing class definition, a user only needs to know the configuration state that can be reached by the existing class definition, but not all of the literal details set forth in the class definition to accomplish this configuration state.

Zusätzlich können Klassendefinitionen von hoch komplexen Komponenten (z. B. Komponenten, die vielfache Dienste, vielfache Datenquellen und vielfache Bereitstellungsebenen involvieren) beruhend auf vielfachen vorhandenen Klassendefinitionen mit oder ohne Änderung am Klassenparameter der vorhandenen Klassendefinitionen entwickelt werden. Diese hoch komplexen Klassendefinitionen können von einem Nutzer in einer neuen Bereitstellung ohne tiefgreifendes Verständnis dieser komplexen Klassendefinitionen auf allen Ebenen wiederverwendet werden.In addition, class definitions of highly complex components (e.g., components involving multiple services, multiple data sources, and multiple deployment levels) can be developed based on multiple existing class definitions, with or without change to the class parameter of the existing class definitions. These highly complex class definitions can be reused by a user in a new deployment without deep understanding of these complex class definitions at all levels.

Durch Auswahl der geeigneten Basisklassen, um sie in einer neuen Konfigurationsspezifikation anzupassen und zu ändern, gewinnt der Nutzer auch eine feinere Kontrolle über spezifische Aspekte der Bereitstellung, während er andere Aspekte der Bereitstellung generisch auf den Definitionen der Basisklassen belässt.By choosing the appropriate base classes to customize and change in a new configuration specification, the user also gains finer control over specific aspects of the deployment, while leaving other aspects of the deployment generic to the definitions of the base classes.

3B zeigt einige Basisklassendefinitionen, die gespeichert sind (z. B. in einem Modul 320 „lamp”), und in Konfigurationsspezifikationen von vielfachen cloudbasierten Bereitstellungen wiederverwendet werden. Diese Basisklassendefinitionen sind maßgeschneidert für die verschiedenen Anwendungsbereitstellungen beruhend auf Linux Apache MySQL Per/Python (LAMP). Jede Klassendefinition enthält einige üblicherweise verwendete Klassenparameter zum Konfigurieren einer jeweiligen Daten- oder Funktionskomponente von einer LAMP-basierten Anwendungsbereitstellung. 3B shows some base class definitions that are stored (for example, in a module 320 "Lamp"), and reused in configuration specifications from multiple cloud-based deployments. These base class definitions are tailor made for the various application deployments based on Linux Apache MySQL Per / Python (LAMP). Each class definition contains some commonly used class parameters for configuring a respective data or function component from a LAMP-based application deployment.

3C stellt eine beispielhafte Konfigurationsspezifikation 340 bereit, die die Basisklassen im Modul 320 „lamp” verwendet, um eine Mantis-Debugging-Software in einer LAMP-basierten Anwendungsbereitstellung bereitzustellen. Durch Verwenden der beruhenden Klassendefinitionen auf dem Modul 320 „lamp” muss die Konfigurationsspezifikation 340 für die Mantis-Anwendungsbereitstellung nicht die Details enthalten, wie eine LAMP-basierte Basisumgebung konfiguriert wird, und sie muss nur Aspekte anpassen, die spezifisch für die Mantis Anwendungsbereitstellung sind. Nachfolgend wird beschrieben, wie die beruhenden Klassendefinitionen auf dem Modul 320 „lamp” verwendet werden, um eine grundlegende LAMP-Bereitstellungsstruktur herzustellen. Im Modul 320 „lamp” enthält die Spezialklasse 322 „Params” einige Parameter, die in vielfachen Klassendefinitionen verwendet werden, wie z. B. ein Flag „single_node”, das anzeigt, ob die Apache-Software und die MySQL-Software auf derselben virtuellen Maschine installiert werden müssen, ein Parameter „frontend_ip” zum Spezifizieren der IP-Adressen, die an die LAMP-Frontend-Komponente gebunden werden sollen, ein Parameter „serving domain” zum Spezifizieren des Domänenamens der Apache-Website, ein Parameter „doc_root” zum Festlegen des Dokument-Hauptverzeichnisses des Apache-Servers, ein Parameter „mysqldatafolder” zum Festlegen des Datenbankordners in Bezug auf die Montagestelle der dauerhaften Festplatte, ein Parameter „mysql_pdname” zum Spezifizieren des Namens der dauerhaften Festplatte, ein Parameter „mysql_pd_mount_point” zum Spezifizieren der Montagestelle der dauerhaften Festplatte, ein Parameter „pd_size_gb” zum Spezifizieren der Größe der dauerhaften Festplatte in GB. Optional können die Parameterwerte in der Spezialklasse „Params” durch ein Befehlszeilen-Tool geändert werden, das vom Clouddienst-Anbieter bereitgestellt wird, um den Nutzer das Einstellen von Bereitstellungen beruhend auf dem Modul „lamp” einfacher zu machen. 3C provides an example configuration specification 340 ready to use the base classes in the module 320 "Lamp" is used to provide Mantis debugging software in a LAMP-based application deployment. By using the class based definitions on the module 320 "Lamp" must be the configuration specification 340 Mantis application deployment does not include the details of how to configure a LAMP-based base environment, and it only needs to customize aspects specific to Mantis application deployment. The following describes how the class definitions are based on the module 320 "Lamp" can be used to create a basic LAMP provisioning structure. In the module 320 "Lamp" contains the special class 322 "Params" has some parameters that are used in multiple class definitions, such as: For example, a flag "single_node" indicating whether the Apache software and the MySQL software need to be installed on the same virtual machine has a "frontend_ip" parameter for specifying the IP addresses bound to the LAMP front-end component a parameter "serving domain" for specifying the domain name of the Apache web site, a parameter "doc_root" for setting the main document directory of the Apache server, a parameter "mysqldatafolder" for setting the database folder with respect to the mounting location of the persistent Hard disk, a parameter "mysql_pdname" for specifying the name of the persistent disk, a parameter "mysql_pd_mount_point" for specifying the mounting location of the persistent disk, a parameter "pd_size_gb" for specifying the size of the persistent disk in GB. Optionally, the parameter values in the Params special class may be changed by a command-line tool provided by the cloud service provider to make it easier for the user to set up deployments based on the module "lamp".

Eine LAMP-basierte Anwendungsbereitstellung enthält normalerweise die folgenden Komponenten: ein Frontend (d. h. die Software-Rolle einer Frontend-Software-Anwendung), virtuelle Maschinen, auf denen die Frontend-Software-Anwendung (z. B. eine Apache-Webserver-Anwendung) installiert ist, eine Datenbank (d. h. die Software-Rolle einer Datenbank-Software-Anwendung), virtuelle Maschinen, auf denen die Datenbank-Software-Anwendung (z. B. eine MySQL-Software-Anwendung) installiert ist, eine dauerhafte Festplatte zum Speichern der Datenbank und eine Firewall. Jede der obigen Komponenten wird durch einen jeweiligen Satz von Klassenparametern modelliert, die für eine spezifische LAMP-basierte Anwendungsbereitstellung konfigurierbar sind.A LAMP-based application deployment typically includes the following components: a front-end (that is, the software role of a front-end software application), virtual machines that support the front-end software application (for example, an Apache Web server application) a database (that is, the software role of a database software application), virtual machines on which the database software application (for example, a MySQL software application) is installed, a persistent disk for storage the database and a firewall. Each of the above components is modeled by a respective set of class parameters that are configurable for a specific LAMP-based application deployment.

Wie in 3B gezeigt, erstreckt sich die Klassendefinition „FrontendVM” 324 von einer vorhandenen Klassendefinition „utils.ConfiguratorLAMP”, die ein Bild einer virtuellen Maschine konfiguriert, auf der bereits eine Apache-Webserver-Software vorinstalliert ist. In diesem Fall muss die MySQL-Datenbank-Software auf derselben virtuellen Maschine wie die Apache-Software installiert werden, was durch das Flag „single_node” in der Klassendefinition 322 „Params” angegeben wird. Daher erstreckt sich die Klassendefinition 326 „DatabaseVM” auch von der Klassendefinition „utils.ConfiguratorLAMP”.As in 3B shown, the class definition "FrontendVM" extends 324 from an existing "utils.ConfiguratorLAMP" class definition that configures an image of a virtual machine that already has Apache web server software preinstalled. In this case, the MySQL database software must be installed on the same virtual machine as the Apache software, using the "single_node" flag in the class definition 322 "Params" is specified. Therefore, the class definition extends 326 "DatabaseVM" also from the class definition "utils.ConfiguratorLAMP".

Im Modul 320 „lamp” modelliert die Klassendefinition 328 „MysqlPD” die dauerhafte Festplatte, auf der die Datenbank gespeichert werden soll. Die Klassendefinition 328 MysqlPD enthält Klassenparameter, die z. B. den Namen der dauerhaften Festplatte, die Größe der dauerhaften Festplatte und die Montagestelle der dauerhaften Festplatte spezifiziert. Andere Parameter, die spezifizieren, wie die dauerhafte Festplatte konfiguriert werden muss, werden von einer vorhandenen Klassendefinition „std.PersistentDiskSpec” ohne Änderung übernommen. Die Klassendefinition 330 „FrontendRole” modelliert die Frontend-Komponente der LAMP-basierten Umgebung. Die Klassendefinition 330 „FrontendRole” erstreckt sich von einer standardmäßigen Software-Rolle, die von einer vorhandenen Basisklassendefinition „std.Role” modelliert wird. Die „FrontendRole” bezieht sich auch auf eine Platzhalterklasse „lampfront” und ein Platzhaltermodul „lamp” als temporäre Werte, die den Klassenparametern „roleName” und „moduleName” zugewiesen sind. Diese temporären Werte werden durch die Namen des tatsächlichen Moduls und die Klasse ersetzt, die die LAMP-Frontend-Software-Anwendung definieren, die bereitgestellt werden soll. Wie es in 3C gezeigt wird, ist die Klassendefinition, die die Frontend-Software konfiguriert (z. B. die Mantis-Debugging-Software) die Klasse „mantis_frontend” im Modul „mantis”. Die Klassendefinition 330 legt auch fest, dass die virtuelle Maschine, auf der die LAMP-Frontend-Rolle installiert werden muss, durch eine Instanz der Klasse 324 „FrontVM” dargestellt wird.In the module 320 "Lamp" models the class definition 328 "MysqlPD" is the persistent disk on which the database is to be stored. The class definition 328 MysqlPD contains class parameters, such as For example, specify the name of the persistent disk, the size of the persistent disk, and the location of the permanent disk. Other parameters that specify how the persistent disk must be configured are inherited from an existing class definition "std.PersistentDiskSpec" without modification. The class definition 330 FrontendRole models the frontend component of the LAMP-based environment. The class definition 330 "FrontendRole" extends from a standard software role modeled by an existing base class definition "std.Role". The "FrontendRole" also refers to a placeholder class "lampfront" and a placeholder module "lamp" as temporary values assigned to the class parameters "roleName" and "moduleName". These temporary values are replaced by the names of the actual module and class that define the LAMP front-end software application to be deployed. As it is in 3C is shown, the class definition that the front-end software configures (for example, the Mantis debugging software) is the mantis_frontend class in the mantis module. The class definition 330 also specifies that the virtual machine on which the LAMP front-end role must be installed is through an instance of the class 324 "FrontVM" is displayed.

Die Klassendefinition 332 „DatabaseRole” modelliert die Datenbankkomponente der LAMP-basierten Umgebung. Die Klasse „DatabaseRole” bezieht sich auch auf eine Platzhalterklasse in einem Platzhaltermodul (z. B. „lamp” und „lamp_backend”) für die Konfiguration der Backend-Software. Die Namen der Platzhalterklasse und des Platzhaltermoduls werden durch die tatsächlichen Namen der Klasse und des Moduls ersetzt, die die Backend-Datenbank-Software konfigurieren. Die Klassendefinition 332 „DatabaseRole” spezifiziert auch, dass die dauerhafte Festplatte, die die Datenbank speichert, durch eine Instanz der Klassendefinition 328 „MysqlPD” dargestellt wird. Zusätzlich wird ein Parameter „vms” definiert, um anzugeben, dass die virtuelle Maschine zum Installieren der Backend-Datenbank-Software der LAMP-Umgebung durch eine Instanz der Klasse „FrontendVM” dargestellt werden muss, wenn das Flag „single_node” auf TRUE gesetzt ist, sonst muss die virtuelle Maschine durch eine Instanz der Klasse „DatabaseVM” dargestellt werden.The class definition 332 DatabaseRole models the database component of the LAMP-based environment. The "DatabaseRole" class also refers to a placeholder class in a placeholder module (for example, "lamp" and "lamp_backend") for configuring the backend software. The names of the placeholder class and the placeholder module are replaced by the actual names of the class and module that configure the backend database software. The class definition 332 "DatabaseRole" also specifies that the persistent disk that stores the database is specified by an instance of the class definition 328 "MysqlPD" is displayed. In addition, a parameter "vms" is defined to indicate that the virtual machine for installing the backend database software of the LAMP environment must be represented by an instance of the class "FrontendVM" when the flag "single_node" is set to TRUE Otherwise, the virtual machine must be represented by an instance of the "DatabaseVM" class.

Zuletzt wird im Modul 320 „lamp” die Firewall-Komponente der LAMP-basierten Umgebung durch die Klassendefinition 334 „HttpFirewall” modelliert. Die Klassendefinition „HttpFirewall” erstreckt sich von der vorhandenen Klassendefinition „utils.PublicTCPFirewall”, sodass die Protokoll-, Quellen- und Zielparameter der Klasse „util.PublicTCPFirewall” von der Klasse „HttpFirewall” übernommen werden. Die Klassendefinition „HTTPFirewall” ändert den Parameter „port” der „utils.PublicTCPFirewall” von „any” auf „80”. Jede festgelegte Klassendefinition im Modul 320 „lamp”, gezeigt in 2B ist erweiterbar, änderbar und/oder verwendbar so wie sie ist für eine anwendungsspezifische Bereitstellung und/oder zum Schaffen neuer Klassendefinitionen in anderen Modulen. Die gezeigte Konfigurationsspezifikation 340 in 3C enthält und ist aufgebaut auf den Klassendefinitionen im Modul 320 „lamp”, gezeigt in 3B. Eine Anweisung 342 zu Beginn der Konfigurationsspezifikation 340 verweist auf eine Datei, die die Klassendefinitionen des Moduls 320 „lamp” enthält, um dem Compiler anzugeben, wo sich die Basisklassendefinitionen befinden, die in der Konfigurationsspezifikation 340 verwendet werden.Last will be in the module 320 "Lamp" the firewall component of the LAMP based environment through the class definition 334 Modeled "HttpFirewall". The HttpFirewall class definition extends from the existing class definition utils.PublicTCPFirewall so that the protocol, source, and destination parameters of the util.PublicTCPFirewall class are inherited by the HttpFirewall class. The class definition "HTTPFirewall" changes the parameter "port" of the "utils.PublicTCPFirewall" from "any" to "80". Each defined class definition in the module 320 "Lamp", shown in 2 B is extensible, modifiable, and / or usable as is for application-specific provisioning and / or creating new class definitions in other modules. The configuration specification shown 340 in 3C contains and is based on the class definitions in the module 320 "Lamp", shown in 3B , An instruction 342 at the beginning of the configuration specification 340 Refers to a file containing the class definitions of the module 320 "Lamp" to tell the compiler where the base class definitions are that are in the configuration specification 340 be used.

Die Konfigurationsspezifikation 340 ist zum Konfigurieren einer Anwendungsbereitstellung, die virtuelle Maschinen in einer LAMP-Struktur startet und die Mantis-Debugging-Software auf den virtuellen Maschinen installiert. Mantis ist ein webbasiertes Bug-Verfolgungssystem, das in der PHP-Script-Sprache geschrieben ist und mit einer MySQL-Datenbank und einem Webserver arbeitet. The configuration specification 340 This is to configure an application deployment that starts virtual machines in a LAMP tree and installs the Mantis debugging software on the virtual machines. Mantis is a web-based bug-tracking system written in the PHP script language that works with a MySQL database and a web server.

Wie spezifiziert in der Klassendefinition 354 „Mantis Deployment” ruft die Bereitstellung zwei Software-Rollen und eine Firewall aufm die installiert werden sollen. In diesem Fall werden die zwei Software-Rollen gemäß der Klassendefinition 348 „MantisFrontend” und der Klassendefinition 350 „MantisDatabaseRole” geschaffen, während die Firewall gemäß der Klassendefinition 352 „MantisFirewall” geschaffen wird. Wenn die Konfigurationsspezifikation 340 kompiliert wird, macht die Anweisung 356 eine Instanz von der Klasse „MantisDeployment” und veranlasst, dass auch die anderen Klassen, von denen die Klasse „MantisDeployment” abhängt, instanziiert werden.As specified in the class definition 354 Mantis Deployment calls for the deployment of two software roles and a firewall to install. In this case, the two software roles are named according to the class definition 348 "MantisFrontend" and the class definition 350 "MantisDatabaseRole" created while the firewall according to the class definition 352 "MantisFirewall" is created. If the configuration specification 340 compile, does the instruction 356 an instance of the MantisDeployment class and causes the other classes to which the MantisDeployment class depends to also be instantiated.

In diesem Beispiel erstreckt sich die Klassendefinition 348 „MantisFrontend” von der Klassendefinition 330 „lamp.FrontendRole”, die in 2B gezeigt ist. Die Klassenparameter, die für die Mantis-Softwareinstallation modifiziert werden, umfassen „roleName”, „moduleName” der Softwarekonfigurationsspezifikation, die „dataPackages” von denen die Binärdateien der Mantis-Software kopiert werden können, und den Datenbankhost, der mit der Mantis-Anwendungsbereitstellung assoziiert werden soll. Die Konfigurationsparameter für den Aspekt der virtuellen Maschine des Mantis-Frontends werden von der Klassendefinition 332 „lamp.FrontendRole” ohne Änderungen übernommen. Mit anderen Worten akzeptiert der Benutzer, der die Konfigurationsspezifikation 340 schreibt, die voreingestellte Konfiguration der virtuellen Maschine, die in dem Modul 320 „lamp” spezifiziert ist, und braucht die Mantis-Anwendungsbereitstellung mit dieser Detailebene nicht anzupassen.In this example, the class definition extends 348 "MantisFrontend" from the class definition 330 "Lamp.FrontendRole", which is in 2 B is shown. The class parameters that are modified for the Mantis software installation include "roleName", "moduleName" of the software configuration specification, "dataPackages" from which the Mantis software binaries can be copied, and the database host associated with the Mantis application deployment shall be. The configuration parameters for the Mantis frontend virtual machine aspect are taken from the class definition 332 "Lamp.FrontendRole" without changes. In other words, the user who accepts the configuration specification accepts 340 writes the default configuration of the virtual machine that is in the module 320 "Lamp" is specified, and does not need to adjust the Mantis application delivery to this level of detail.

Ähnlich erstreckt sich die Klassendefinition 350 „MantisDatabaseRole” von der Klassendefinition 332 „lamp.DatabaseRole”, die in 3B gezeigt ist. Die Klassenparameter, die für die Mantis-Softwareinstallation modifiziert werden, umfassen „roleName” und „moduleName” der Konfigurationsspezifikation für die Backend-Datenbankrolle. Darüber hinaus wird der Frontend-Host der Datenbankrolle als eine Instanz der Klasse „MantisFrontendRole” festgelegt. Die Konfigurationen für den virtuellen Maschinenaspekt und den persistenten Datenträgeraspekt der Datenbank-Backend-Rolle werden von der Klassendefinition 332 „lamp.DatabaseRole” ohne Änderung vererbt. Darüber hinaus erbt die Klassendefinition 352 „MantisFirewall” die Parameter aus „lamp.HTTpFirewall” und ändert nur den Wert für den „target”-Parameter zu einer Instanz der Klasse „MantisFrontendRole”. Andere Parameter, wie z. B. die Parameter „Port” und „Protokoll” der Klasse „MantisFirewall” werden von der Basisklasse „lamp.HTTPFirewall” geerbt, die in dem Modul 320 „lamp” definiert ist.Similarly, the class definition extends 350 "MantisDatabaseRole" from the class definition 332 "Lamp.DatabaseRole", which is in 3B is shown. The class parameters that are modified for the Mantis software installation include "roleName" and "moduleName" of the configuration specification for the backend database role. In addition, the database role frontend host is set as an instance of the MantisFrontendRole class. The configurations for the virtual machine aspect and the persistent disk aspect of the database backend role are taken from the class definition 332 "Lamp.DatabaseRole" inherited without change. In addition, the class definition inherits 352 MantisFirewall takes the parameters from lamp.HTTpFirewall and only changes the value for the target parameter to an instance of the MantisFrontendRole class. Other parameters, such as. For example, the "port" and "protocol" parameters of the "MantisFirewall" class are inherited by the base class "lamp.HTTPFirewall" contained in the module 320 "Lamp" is defined.

Weitere Parameter und Werte, die für die Mantis-Implementierung spezifisch sind, sind in der speziellen Klassendefinition 344 „Params” angegeben und das Datenpaket, aus dem die Mantis-Software kopiert wird, wird in der Klassendefinition 346 „MantisPackage” spezifiziert. spezifiziert.Other parameters and values specific to the Mantis implementation are in the specific class definition 344 "Params" is specified and the data package from which the Mantis software is copied is in the class definition 346 "MantisPackage" specified. specified.

Im obigen Beispiel wird die Konfigurationsspezifikation für die Mantis-Softwarebereitstellung von den Basisklassendefinitionen abgeleitet (beispielsweise Klassendefinitionen im Modul 320 „lamp”), die für eine generische LAMP-basierte Anwendungsbereitstellung erstellt wurden. Konfigurationen vieler Aspekte der LAMP-basierten Bereitstellung müssen für die Mantis-Anwendungsbereitstellung nicht neu definiert werden. Die Konfigurationsspezifikation für die Mantis-Anwendungsbereitstellung muss nur neue Parameter oder neue Parameterwerte angeben, die für die Mantis-Anwendungsbereitstellung spezifisch sind oder eine Anpassung erfordern. Parameter, die bereits für andere allgemeinere Aspekte der Implementierung definiert sind, brauchen in der Konfigurationsspezifikation 340 nicht erneut spezifiziert oder modifiziert zu werden. Die Details dieser anderen Aspekte der Implementierung können für den Benutzer undurchsichtig bleiben.In the example above, the configuration specification for Mantis software deployment is derived from the base class definitions (for example, class definitions in the module 320 "Lamp") created for a generic LAMP-based application deployment. Configurations of many aspects of LAMP-based deployment do not need to be redefined for Mantis application deployment. The Mantis application deployment configuration specification only needs to specify new parameters or new parameter values that are specific to Mantis application deployment or require customization. Parameters already defined for other more general aspects of implementation are needed in the configuration specification 340 not to be re-specified or modified. The details of these other aspects of the implementation may remain opaque to the user.

In dem Beispiel, das in 3A3C gezeigten Beispiele zeigen lediglich veranschaulichend die Eigenschaften einer objektorientierten Spezifizierungssprache zum Schreiben von Konfigurationsspezifikationen von Cloud-basierten Implementierungen. In verschiedenen Implementierungen kann die exakte Syntax der objektorientierten Spezifikationssprache von den Angaben in den Beispielen abweichen. Darüber hinaus können viele Arten von Basisklassen erstellt werden, um die Komponenten zu modellieren, die in einer Cloud-Umgebung vorhanden sein können. Syntax zum Festlegen von Beziehungen zwischen Komponenten, die von den Klassen modelliert werden, kann von einer objektorientierten Spezifikationssprache zu einer anderen objektorientierten Spezifikationssprache variieren. Für eine gegebene objektorientierte Spezifizierungssprache kann ein Compiler erstellt werden, um die Klassendefinitionen, die in einer Konfigurationsspezifikation enthalten sind, die in der objektorientierten Spezifizierungssprache geschrieben ist, gemäß einem vorbestimmten Satz von Syntaxregeln zu analysieren, um die Parameter zu extrahieren, die für die Konfiguration der verschiedenen Arten von Komponenten in der Cloud-Umgebung verwendet werden.In the example that is in 3A - 3C The examples shown are merely illustrative of the properties of an object-oriented specification language for writing configuration specifications of cloud-based implementations. In various implementations, the exact syntax of the object-oriented specification language may differ from what is shown in the examples. In addition, many types of base classes can be created to model the components that can exist in a cloud environment. Syntax for defining relationships between components modeled by the classes may vary from an object-oriented specification language to another object-oriented specification language. For a given object-oriented specification language, a compiler may be constructed to parse the class definitions contained in a configuration specification written in the object-oriented specification language according to a predetermined set of syntax rules to extract the parameters necessary for the configuration of the Different types of components are used in the cloud environment.

4 zeigt einen beispielhaften Cloud-Dienst-Manager 222 eines beispielhaften Cloud-Dienstanbieters 104. Der beispielhafte Cloud-Dienst-Manager 222 ist für die Bereitstellung von Cloud-basierten Diensten gemäß der Konfigurationsspezifikation 104 verantwortlich, die von den administrativen Benutzern (beispielsweise 102a, 102b, 102c) der Dienste bereitgestellt wird. Der Cloud-Dienst-Manager 222 empfängt Kommunikationen von den administrativen Benutzern der Cloud-Kunden über das Frontend 120 des Cloud-Dienst-Anbieters 104. In einigen Implementierungen kann der Cloud-Dienst-Manager 222 eigene Frontend-Komponenten aufweisen, die mit den Cloud-Dienst-Kunden direkt kommunizieren. 4 shows an example cloud service manager 222 an exemplary cloud service provider 104 , The exemplary cloud service manager 222 is for the provision of cloud-based services according to the configuration specification 104 responsible, by the administrative users (for example 102 . 102b . 102c ) of the services is provided. The cloud service manager 222 receives communications from cloud user administrative users via the frontend 120 of the cloud service provider 104 , In some implementations, the cloud service manager 222 have their own front-end components communicating directly with the cloud service customers.

Nachdem das Frontend 120 die Konfigurationsspezifikationen 104 von einem administrativen Benutzer der Cloud-Service-Kunden (z. B. 102a, 102b, 102c) empfangen hat, übergibt das Frontend 120 die empfangenen Konfigurationsspezifikationen 104 an einen API-Übersetzer 404 des Cloud-Service-Managers 222. Der APT-Übersetzer 404 hat Zugriff auf eine Bibliothek von Kernklassendefinitionen (z. B. in einer Definitionsdatenbank 406 gespeichert) und Übersetzungsprotokollen (z. B. in einer Regeldatenbank 408 gespeichert) in Bezug darauf, wie die Kernklassendefinitionen in jeweilige Sätze von API-Aufrufen zu übersetzen sind, um verschiedene Komponenten einer Cloud-basierten Umgebung des Cloud-Service-Anbieters 104 zu konfigurieren.After the frontend 120 the configuration specifications 104 by an administrative user of the cloud service customer (eg 102 . 102b . 102c ), hands over the frontend 120 the received configuration specifications 104 to an API translator 404 the cloud service manager 222 , The APT translator 404 has access to a library of core class definitions (for example, in a definition database 406 stored) and translation protocols (eg in a rule database 408 in terms of how to translate the core class definitions into respective sets of API calls to various components of a cloud-based environment of the cloud service provider 104 to configure.

Beispielsweise kann der API-Übersetzer 404 einen Compiler (z. B. ein Analyse-Skript oder -Programm) umfassen, der die in einer Konfigurationsspezifikation 104 empfangenen Klassendefinitionen analysiert, alle Basisklassen identifiziert, aus denen die Klassen in der Konfigurationsspezifikation abgeleitet werden, und die unveränderten Basisklassenparameter sowie die Klassenparameter, die modifiziert oder neu sind, extrahiert. Darüber hinaus identifiziert der Compiler auch alle Beziehungen (z. B. Konnektivität und Abhängigkeiten) unter den Komponenten der Cloud-basierten Bereitstellung aus den Anweisungen in den Klassendefinitionen. Basierend auf den Werten der Klassenparameter und der gespeicherten Übersetzungsprotokolle erzeugt der API-Übersetzer 404 einen geeigneten Satz von API-Aufrufen 410, um verschiedene Aspekte der Cloud-basierten Bereitstellung zu konfigurieren.For example, the API translator 404 include a compiler (eg, an analysis script or program) that conforms to a configuration specification 104 parses received class definitions, identifies all the base classes from which the classes in the configuration specification are derived, and extracts the unchanged base class parameters as well as the class parameters that are modified or new. In addition, the compiler also identifies all 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 logs, the API translator generates 404 a suitable set of API calls 410 to configure various aspects of cloud-based deployment.

Beispielsweise können die Übersetzungsprotokolle eine Abbildung zwischen einer Kernklassendefinition enthalten, die einen jeweiligen modularen Aspekt der Cloud-basierten Umgebung auf eine Gruppe von API-Aufrufen modelliert, die zur Konfiguration dieses Aspekts der Cloud-basierten Umgebung verwendet werden. Die Übersetzungsprotokolle können ferner Protokolle zum Modifizieren des Satzes von API-Aufrufen (zum Beispiel zum Ändern von Standardparametern, die in den API-Aufrufen verwendet werden) mit Parameterwerten, die für diesen modularen Aspekt der Cloud-basierten Umgebung spezifiziert werden, in Klassen, die von der Kernklassendefinition abgeleitet sind, umfassen.For example, the translation protocols may include mapping between a core class definition that models a respective modular aspect of the cloud-based environment to a set of API calls used to configure that aspect of the cloud-based environment. The translation protocols may also include protocols for modifying the set of API calls (for example, to change default parameters used in the API calls) with parameter values specified for this modular aspect of the cloud-based environment into classes that are derived from the core class definition.

Als ein spezifischeres Beispiel wird angenommen, dass eine klassische virtuelle Maschinenklassendefinition (beispielsweise eine „std.VM”-Klasse) eine Kernklassendefinition ist, die dem Compiler bekannt ist. Der Compiler hat Zugriff auf eine Übersetzungsregel, die die Kernklassendefinition zu einem Satz von Provisionierungs-API-Aufrufen abbildet, die an den VM-Manager in der Kernelschicht des Cloud-Dienstanbieters 104 angelegt wurden, um ein virtuelles Standardbild der virtuellen Maschine bereitzustellen. In den Bereitstellungs-API-Aufrufen kann ein Standardsatz von Parametern (z. B. doppelte Anzahl, IP-Adresse, Speicherbedarf usw.) verwendet werden. Das Protokoll zum Ändern der API-Aufrufe kann Protokolle zum Ändern der Standardparameterwerte gemäß den in der Spezifikationskonfiguration und in Zwischenklassendefinitionen spezifizierten Parameterwerten enthalten, die von der Klassendefinition der virtuellen Maschine abgeleitet werden. Wenn beispielsweise ein Klassenparameter einer neuen Klassendefinition, die von dem Standardbild der virtuellen Maschine abgeleitet ist, das Softwarepaket angibt, das auf dem virtuellen Maschinenbild installiert werden soll, legen die Übersetzungsprotokolle fest, wie die zusätzlichen API-Aufrufe für die Installation von Softwarepaketen auf einer bestimmten virtuellen Maschine zu der Gruppe der API-Aufrufe, die der Konfiguration des virtuellen Standardbildes zugeordnet sind, hinzugefügt werden sollen.As a more specific example, it is assumed that a classical virtual machine class definition (for example, an "std.VM" class) is a core class definition known to the compiler. The compiler has access to a translation rule that maps the core class definition into a set of provisioning API calls made to the VM Manager in the cloud service provider's kernel layer 104 created to provide a virtual default image of the virtual machine. Deployment API calls can use a standard set of parameters, such as duplicate numbers, IP addresses, memory requirements, and so on. The API Call Modification Protocol may include protocols for changing the default parameter values according to the parameter values specified in the specification configuration and in interclass definitions derived from the class definition of the virtual machine. For example, if a class parameter of a new class definition derived from the default virtual machine image specifies the software package to be installed on the virtual machine image, the translation logs determine how the additional API calls for installing software packages on a particular one virtual machine to the group of API calls associated with the configuration of the default virtual image.

In einigen Implementierungen werden die Protokolle zum Übersetzen von Klassendefinitionen in API-Aufrufe als Programm-Scripts geschrieben. Wenn neue Klassendefinitionen zu der Klassendefinitionsdatenbank 406 hinzugefügt werden, kann das Protokoll zum Übersetzen der neuen Klassendefinition erstellt und der Übersetzungsregelndatenbank 408 hinzugefügt werden. Die Übersetzungsprotokolle können beispielsweise durch den Cloud-Dienstanbieter 104 erstellt werden. Wenn bei einigen Implementierungen eine bestimmte Klassendefinition beim Analysieren einer empfangenen Konfigurationsspezifikation auftritt, lokalisiert der API-Übersetzer 404 ein entsprechendes Skript und führt dieses aus, um die Klassendefinition in einen Satz von API-Aufrufen zu zerlegen. Wenn die API-Aufrufe ausgeführt werden, veranlassen sie, dass die in der Klassendefinition definierte Konfiguration in der Cloud-basierten Umgebung erreicht wird.In some implementations, the protocols for translating class definitions into API calls are written as program scripts. If new class definitions to the class definition database 406 The protocol can be used to translate the new class definition and the translation rules database 408 to be added. The translation protocols may be provided, for example, by the cloud service provider 104 to be created. In some implementations, if a particular class definition occurs when parsing a received configuration specification, the API translator locates 404 an appropriate script and execute it to break the class definition into a set of API calls. When the API calls are executed, they cause the configuration defined in the class definition to be reached in the cloud-based environment.

In einigen Implementierungen werden die API-Aufrufe 410, die von dem API-Übersetzer 404 erzeugt werden, zu einer Dienstlader-Komponente 412 des Cloud-Dienst-Managers 222 gesendet. Die Dienstlader-Komponente 412 ist für das Kanalisieren der API-Aufrufe 410 zu verschiedenen Schichten der Cloud-Dienst-Umgebung oder Komponenten des Cloud-Dienst-Anbieters 104, wo die API-Aufrufe ausgeführt werden können, verantwortlich. In einigen Implementierungen, bei denen die Bereitstellung in mehreren Stufen aufgrund der Abhängigkeiten zwischen verschiedenen Aspekten des Einsatzes durchgeführt werden soll, ist die Dienstlader-Komponente 412 auch für die Überprüfung der Reihenfolge verantwortlich, mit der die API-Aufrufe an die Schicht und/oder Komponenten zur Ausführung gesendet werden, und sie ist für die Überprüfung verantwortlich, ob die API-Aufrufe in der korrekten Reihenfolge abgeschlossen wurden.In some implementations, the API calls become 410 provided by the API translator 404 generated to a service loader component 412 the cloud service manager 222 Posted. The service loader component 412 is for channeling the API calls 410 to different layers of the cloud service environment or components of the cloud service provider 104 where the API calls can be executed, responsible. In some implementations where multi-stage deployment is to be performed due to dependencies between different aspects of the deployment, the loader component is 412 She is also responsible for verifying the order in which the API calls to the tier and / or components are sent for execution, and is responsible for verifying that the API calls were completed in the correct order.

Da Klassendefinitionen, die in einer objektorientierten Spezifizierungssprache geschrieben sind, wie in dieser Spezifikation offenbart, in mehreren Konfigurationsspezifikationen wiederverwendet werden können, kann ein Administratorbenutzer eines Cloud-Dienstes Klassendefinitionen verwenden, die von einem Dritten (z. B. ein anderer Benutzer, ein Dienstentwickler des Cloud-Dienstanbieters oder ein Entwickler von Drittanbietern) mit seinen eigenen Konfigurationsspezifikationen bereitgestellt werden, anstatt diese Klassendefinitionen selbst zu entwickeln. In einigen Implementierungen kann ein Marktplatz zum Teilen/Verkaufen und Auswählen von bestehenden Konfigurationsvorgaben und wiederverwendbaren Klassendefinitionen beispielsweise durch den Cloud-Dienstanbieter oder einen Drittanbieter bereitgestellt werden.Because 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 can use class definitions provided by a third party (e.g., another user, a service developer of the Cloud service provider or a third-party developer) with its own configuration specifications instead of developing these class definitions themselves. In some implementations, a marketplace may be provided for sharing / selling and selecting existing configuration defaults and reusable class definitions, for example, by the cloud service provider or a third party vendor.

In diesem Beispiel stellt der Cloud-Dienstanbieter 104 eine derartige Plattform für die gemeinsame Nutzung von wiederverwendbaren Konfigurations-Spezifikationen und Klassendefinitionen bereit. In einigen Implementierungen stellt das Frontend 120 des Cloud-Dienstanbieters eine Definitions-Einreichungs-Benutzerschnittstelle und eine Definitionsauswahlschnittstelle bereit, um das Teilen von wiederverwendbaren Konfigurations-Spezifikationen und Klassendefinitionen zu erleichtern. Die Parteien, die die Konfigurationsspezifikationen und Klassendefinitionen 416 zur Wiederverwendung durch andere bereitstellen, dienen als Definitionslieferanten 414 für den Cloud-Dienstanbieter 104. Die Benutzer der potentiellen Definition umfassen administrative Benutzer von Cloud-basierten Diensten. Die potenziellen Definitionsbenutzer umfassen optional auch Definitionslieferanten, die neue wiederverwendbare Klassendefinitionen oder Klassendefinitionen für die Bereitstellung basierend auf der vorhandenen Klassendefinitionen erstellen, die von anderen Definitionslieferanten bereitgestellt werden.In this example, the cloud service provider represents 104 provide such a platform for sharing reusable configuration specifications and class definitions. In some implementations, the frontend provides 120 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, the configuration specifications and class definitions 416 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 optionally also include definition providers that create new reusable class definitions or class definitions for deployment based on the existing class definitions provided by other definition providers.

Wie in 4 gezeigt, kann der Cloud-Dienst-Manager 222 des Cloud-Dienstanbieters 104 oder eine Komponente des Cloud-Dienst-Managers 222 dazu dienen, die Plattform zum Teilen wiederverwendbarer Klassendefinitionen zu verwalten. Die Definitionslieferanten 414 reichen die wiederverwendbaren Klassendefinitionen 416 bei dem Cloud-Dienst-Manager 222 über die Definitionseinreichungs-Benutzerschnittstelle ein, die durch das Frontend 120 bereitgestellt wird. Jede Klassendefinitionseinreichung kann mehrere wiederverwendbare Klassendefinitionen umfassen, wie zum Beispiel in einem Klassenmodul. Jede Klassendefinition in der Einreichung ist begleitet von Beschreibungen des anfänglichen Konfigurationszustandes, den die Klassendefinition erreichen kann, wenn sie nachfolgend in einer Konfigurationsspezifikation verwendet wird. In einigen Implementierungen umfasst die Beschreibung auch Anweisungen, wie die Klassenparameter in der Klassendefinition in den Konfigurationsspezifikationen nachträglich an die Bedürfnisse bestimmter Implementierungen angepasst werden können.As in 4 shown, the cloud service manager 222 of the cloud service provider 104 or a component of the Cloud Service Manager 222 to manage the platform for sharing reusable class definitions. The definition suppliers 414 range the reusable class definitions 416 at the cloud service manager 222 via the definition submission user interface passing through the frontend 120 provided. Each class definition submission may include multiple reusable class definitions, 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 achieve when subsequently used in a configuration specification. In some implementations, the description also includes instructions as to how the class parameters in the class definition in the configuration specifications can be subsequently adapted to the needs of particular implementations.

Wenn ein Definitionslieferant eine wiederverwendbare Klassendefinition oder ein Modul von wiederverwendbaren Klassendefinitionen einreicht, kann der Cloud-Dienst-Manager 222 die empfangenen Klassendefinitionen in einer Klassendefinitionsdatenbank (beispielsweise der Definitionsdatenbank 406) speichern. Bei einigen Implementierungen stellt das Frontend 120 Registrierungs- und Authentifizierungsdienste für die Definitionslieferanten 414 bereit. Jede Klassendefinition oder jedes Klassenmodul, die bzw. das von einem registrierten Definitionslieferanten 414 empfangen wird, wird in Verbindung mit dem Identifikator des Definitionslieferanten gespeichert, so dass der Definitionslieferant 414 korrekt gutgeschrieben werden kann, wenn die Klassendefinition anschließend von einem Definitionsbenutzer verwendet oder erworben wird.When a definition vendor submits a reusable class definition or module of reusable class definitions, the cloud service manager can 222 the received class definitions in a class definition database (for example, the definition database 406 ) to save. In some implementations, the frontend provides 120 Registration and authentication services for the definition suppliers 414 ready. Any class definition or class module, from a registered definition supplier 414 is received in association with the identifier of the definition supplier, so that the definition supplier 414 can be correctly credited if the class definition is subsequently used or acquired by a definition user.

In einigen Implementierungen können die Definitionslieferanten 414 wiederverwendbare Klassendefinitionen 416 kostenlos oder kostenpflichtig bereitstellen. Der Cloud-Dienst-Manager 222 kann den Verkauf oder die Lizenzierung der wiederverwendbaren Klassendefinitionen an die potentiellen Definitionsbenutzer (beispielsweise administrative Benutzer der Cloud-Dienst-Kunden) durch die Definitionsteilungsplattform erleichtern. In einigen Implementierungen liefert der Definitionslieferant 414 und speichert der Cloud-Dienst-Manager jeweilige Preise, die mit dem Verkauf oder den Lizenzierungen für unterschiedliche Benutzungsniveaus für die wiederverwendbaren Klassendefinitionen verbunden sind, die von den Definitionslieferanten 414 bereitgestellt werden.In some implementations, the definition suppliers may 414 reusable class definitions 416 free or paid. The cloud service manager 222 may facilitate the sale or licensing of the reusable class definitions to the potential definition users (for example, administrative users of the cloud service customers) through the definition sharing platform. In some implementations, the definition provider provides 414 and the cloud service manager stores respective prices associated with the sale or licensing for different usage levels for the reusable class definitions provided by the definition suppliers 414 to be provided.

In einigen Implementierungen stellt der Cloud-Dienst-Manager 222 eine Definitionsauswahl-Benutzerschnittstelle über das Frontend 120 bereit. Die Definitionsauswahl-Benutzeroberfläche stellt die Klassendefinitionen dar, die für die Wiederverwendung verfügbar sind, beispielsweise bei der Definition neuer Klassendefinitionen. Die neuen Klassendefinitionen umfassen diejenigen, die in der Konfigurationsspezifikation einer neuen Bereitstellung enthalten sind und wahlweise diejenigen, die an den Cloud-Dienstanbieter zur Wiederverwendung durch andere übermittelt werden. Die potenziellen Definitionsbenutzer (z. B. Administratoren der Cloud-Dienst-Kunden und Definitionslieferanten) können die Klassendefinitionen, die zur Auswahl über die Definitionsauswahlschnittstelle verfügbar sind, zusammen mit ihren Preisen und Beschreibungen sowie optionalen Bewertungen und Qualitätsbewertungen anzeigen und entscheiden, ob eine oder mehrere der Klassendefinitionen in einer Konfigurationsspezifikation oder zur Ableitung einer neuen Klassendefinition wiederverwendet werden sollen.In some implementations, the cloud service manager 222 a definition selection user interface via the frontend 120 ready. The definition selection user interface represents the Class definitions that are available for reuse, such as when 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., cloud service customer administrators and definition providers) can view the class definitions available for selection via the definition selection interface, along with their prices and descriptions, as well as optional ratings and quality ratings, and decide whether one or more class definitions in a configuration specification or to reuse a new class definition.

In einigen Implementierungen erlaubt die Definitionsauswahl-Benutzerschnittstelle dem Benutzer der Klassendefinitionen, eine wiederzuverwendende Klassendefinition, die zur Auswahl verfügbar ist, herunterzuladen oder zu kopieren. In einigen Implementierungen muss der Benutzer die Klassendefinition nicht kopieren oder herunterladen und kann die Klassendefinitionen verwenden, indem er einfach den Modul- und Klassennamen in einer Konfigurationsspezifikation identifiziert, die dem Cloud-Dienstanbieter zur Bereitstellung übergeben wird. Der Cloud-Dienst-Manager 222 identifiziert und lokalisiert die Klassendefinitionen, auf die in der Spezifikationsdatei verwiesen wird und verfolgt die Verwendung der Klassendefinition.In some implementations, the definition selection user interface allows the user of the class definitions to download or copy a class definition that is available for selection. In some implementations, the user does not need to copy or download the class definition and can use the class definitions simply by identifying the module and class name in a configuration specification that is passed to the cloud service provider for deployment. The cloud service manager 222 Identifies and locates the class definitions referenced in the specification file and tracks the use of the class definition.

In einigen Implementierungen umfasst die Wiederverwendung ein ganzes Modul (beispielsweise das in 3B gezeigte Modul „lamp”), wobei das Modul eine Sammlung von mehreren zusammenhängenden Klassendefinitionen umfasst, um eine Cloudkomponente zu konfigurieren, die mehrere Unterkomponenten umfasst. In einigen Implementierungen werden die Klassendefinitionen oder Klassenmodule basierend auf dem Typ der Komponenten, die sie modellieren, kategorisiert. In einigen Implementierungen ermöglicht die Definitionsauswahlschnittstelle den potentiellen Benutzern der Klassendefinitionen, verfügbare Klassendefinitionen nach Kategorien, Funktionen, Definitionslieferanten und anderen Attributen, die mit den Klassendefinitionen und Modulen verknüpft sind, zu durchsuchen oder zu überprüfen.In some implementations, reuse includes a whole module (for example, the one in FIG 3B shown module "module"), wherein the module comprises a collection of several contiguous class definitions to configure a cloud component comprising a plurality of 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 browse or validate available class definitions by categories, functions, definition providers, and other attributes associated with the class definitions and modules.

In einigen Implementierungen bietet der Cloud-Dienstanbieter 104 oder ein Drittanbieter auch eine Plattform für Softwarelieferanten 418, um Softwarelösungen bereitzustellen, die von mehreren alternativen Konfigurationsspezifikationen oder alternativen Sammlungen von Klassendefinitionen für die Konfiguration der Softwarelösungen begleitet werden. Zum Beispiel kann ein Personal-Management-Programm von Konfigurations-Spezifikationen begleitet werden, die für Cloud-Dienst-Kunden, die unterschiedliche Firmengrößen, Bedürfnisse und interne Infrastrukturen haben, maßgeschneidert sind. Wenn ein Cloud-Dienst-Kunde die Softwarelösung für die Bereitstellung in der Cloud-Umgebung des Cloud-Dienstanbieters 104 kauft oder lizenziert, kann der Cloud-Dienst-Kunde die Konfigurationsspezifikation auswählen, die seinen Anforderungen am besten entspricht.In some implementations, the cloud service provider offers 104 or a third-party vendor also provides a platform for software vendors 418 to provide software solutions that are accompanied by several alternative configuration specifications or alternative collections of class definitions for configuring the software solutions. For example, a personal management program may be accompanied by configuration specifications tailored for cloud service customers having different company sizes, needs, and internal infrastructures. If a cloud service customer is the cloud deployment software solution for the cloud service provider 104 purchases or licenses, the cloud service customer can choose the configuration specification that best suits their needs.

In einigen Implementierungen kann der Dienstverwalter 222 Einreichungen von Softwarelösungen mit zugehörigen Konfigurationsspezifikationen (beispielsweise entweder als Konfigurationsspezifikationen oder Module von wiederverwendbaren Klassendefinitionen) über eine Software-Einreichungsbenutzerschnittstelle empfangen, die durch das Frontend 120 bereitgestellt wird. In einigen Implementierungen umfasst die Software-Einreichungsbenutzeroberfläche Registrierungs- und Authentifizierungsfunktionen, so dass jede Einreichung einer konfigurationsumhüllten Softwarelösung 420 in Verbindung mit dem Software-Anbieter gespeichert wird, der die konfigurationsumhüllte Softwarelösung 420 eingereicht hat.In some implementations, the service manager may 222 Submissions of software solutions with associated configuration specifications (for example, either as configuration specifications or modules of reusable class definitions) via a software submission user interface received through the frontend 120 provided. In some implementations, the software submission user interface includes registration and authentication functions, such that each submission is a configuration-encapsulated software solution 420 is stored in conjunction with the software vendor who runs the configuration-wrapped software solution 420 submitted.

Der Cloud-Dienstanbieter 104 kann die konfigurationsumhüllten Softwarelösungen den Cloud-Dienst-Kunden (beispielsweise 102a, 102b, 102c) durch das Frontend 120 in einer Software-Auswahlschnittstelle liefern. Die Software-Auswahlschnittstelle kann auch die Beschreibungen der verschiedenen Konfigurationsspezifikationen, die jede Software-Lösung begleiten, bereitstellen. Wenn ein Benutzer (beispielsweise ein Verwaltungsbenutzer eines Cloud-basierten Anwendungsdienstes) eine Softwarelösung und eine der zugehörigen Konfigurationsspezifikationen aus der Softwareauswahlschnittstelle auswählt, kann der Cloud-Dienstanbieter 104 die Softwarelösung in der Cloud-basierten Umgebung entsprechend der gewählten Konfigurationsspezifikation mit oder ohne zusätzliche Anpassungen starten.The cloud service provider 104 For example, the configuration-wrapped software solutions may be available to cloud service customers (e.g. 102 . 102b . 102c ) through the frontend 120 in a software selection interface. The software selection interface may also provide the descriptions of the various configuration specifications accompanying each software solution. When a user (for example, a cloud application service management user) selects a software solution and one of the associated configuration specifications from the software selection interface, the cloud service provider may 104 start the software solution in the cloud-based environment according to the selected configuration specification, with or without additional customization.

In einigen Implementierungen erleichtert der Cloud-Dienstanbieter 104 die Abrechnung (zum Beispiel durch eine Abrechnungskomponente 426) für den Verkauf und den Kauf der wiederverwendbaren Konfigurationsspezifikationen, wiederverwendbaren Klassendefinitionen und konfigurationsgepackten Softwarelösungen, die durch die Plattformen erreicht werden, die von dem Cloud-Dienstanbieter 104 bereitgestellt werden. In einigen Implementierungen braucht der Cloud-Dienstanbieter diese Plattformen nicht direkt bereitzustellen, sondern kann (z. B. durch die Buchhaltungskomponente 426) dem Benutzer und dem Anbieter der wiederverwendbaren Konfigurationsspezifikationen, der wiederverwendbaren Klassendefinitionen und der konfigurationsgepackten Softwarelösungen basierend auf der tatsächlichen Verwendung, die in der Cloud-Umgebung des Cloud-Dienstanbieters 104 stattgefunden hat, Buchhaltungsdienste bereitstellen.In some implementations, the cloud service provider facilitates 104 Billing (for example, through a billing component 426 ) for the sale and purchase of the reusable configuration specifications, reusable class definitions, and configuration-packed software solutions that are achieved by the platforms that the cloud service provider provides 104 to be provided. In some implementations, the cloud service provider does not need to provide these platforms directly, but can (for example, through the accounting component 426 ) to the user and provider of reusable configuration specifications, the reusable class definitions and the configuration-packed software solutions based on the actual usage in the cloud service provider's cloud environment 104 has provided accounting services.

In einigen Implementierungen umfasst der Cloud-Dienst-Manager 222 einen Dienstmonitor 422. Der Dienstmonitor 422 überwacht die Zustände der Cloud-Dienste, die in der Cloud-Umgebung des Cloud-Dienstanbieters 104 bereitgestellt worden sind. Die Statusangaben, die von dem Dienstmonitor 422 überwacht werden, umfassen beispielsweise die virtuellen Ressourcen, die für jede Komponente einer Cloud-basierten Bereitstellung verwendet werden, die Nutzungsebene der virtuellen Ressourcen, die Cloud-Dienste die von jeder Komponente der Cloud-basierten Bereitstellung verwendet werden, die Nutzungsebene der Cloud-Dienste. Der Dienstmonitor 422 kann Leistungsmetriken berechnen, die mit jeder Cloud-basierten Bereitstellung auf Basis der Statusangaben der virtuellen Ressourcen und der cloudbasierten Dienste verknüpft sind, die mit der Bereitstellung verknüpft sind. Die Leistungsmetriken umfassen beispielsweise die Anzahl der empfangenen Benutzeranforderungen, die Latenz, die mit den Antworten verbunden ist, die Verfügbarkeit der virtuellen Ressourcen und Dienste, die Fehlerrate jeder virtuellen Ressource oder jedes Dienstes, die Fehlertoleranz der virtuellen Ressourcen und Dienstleistungen und so weiter. In einigen Implementierungen werden die Leistungsmetriken in einem Leistungsdatenspeicher 424 des Cloud-Dienst-Managers 222 gespeichert.In some implementations, the cloud service manager includes 222 a service monitor 422 , The service monitor 422 monitors the states of cloud services operating in the cloud service provider's cloud environment 104 have been provided. The status information provided by the service monitor 422 For example, the virtual resources used for each component of a cloud-based deployment, the utilization level of the virtual resources, the cloud services used by each component of the cloud-based deployment, the usage level of the cloud services. The service monitor 422 can calculate performance metrics associated with each cloud-based deployment based on the status of the virtual resources and the cloud-based services 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 error rate of each virtual resource or service, the fault tolerance of the virtual resources and services, and so forth. In some implementations, the performance metrics become in a performance data store 424 the cloud service manager 222 saved.

Wie in dieser Beschreibung offenbart, können cloudbasierte Implementierungen gemäß Konfigurationsspezifikationen ausgeführt werden, die in einer objektorientierten Spezifikationssprache geschrieben sind, wobei die Konfigurationsspezifikationen Klassendefinitionen enthalten, die unterschiedliche Aspekte der Cloud-basierten Bereitstellungen auf unterschiedlichen Abstraktionsebenen modellieren. Wenn der Cloud-Dienst-Manager 222 eine Konfigurationsspezifikation in einen Satz von Klassendefinitionen verarbeitet, ist der Cloud-Dienst-Manager 222 in der Lage, die Hierarchie von Klassendefinitionen zu verfolgen, die die Konfiguration von jedem dieser verschiedenen Aspekte der Implementierung beeinflusst haben. Ferner ist der Cloud-Dienstanbieter in der Lage, die virtuellen Ressourcen und Dienste, die den verschiedenen Aspekten der Cloud-basierten Bereitstellung zugeordnet sind, den verschiedenen Klassenhierarchien zuzuordnen, die die Konfiguration dieser Aspekte der cloudbasierten Bereitstellung beeinflusst haben.As disclosed in this specification, cloud-based implementations may be performed according to configuration specifications written in an object-oriented specification language, wherein the configuration specifications include class definitions that model different aspects of the cloud-based deployments at different levels of abstraction. If the cloud service manager 222 processing a configuration specification into a set of class definitions is the cloud service manager 222 able to track the hierarchy of class definitions that influenced the configuration of each of these different aspects of the implementation. Further, the cloud service provider is able to associate the virtual resources and services associated with various aspects of cloud-based provisioning to the various class hierarchies that have influenced the configuration of these aspects of cloud-based provisioning.

Daher ermöglicht die objektorientierte Spezifikationssprache, dass Leistungsmetriken für jeden dieser unterschiedlichen Aspekte basierend auf dem Status und der Leistung der virtuellen Ressourcen und Dienste abgeleitet werden, die zur Leistung des Aspekts der Cloud-basierten Bereitstellung beitragen. Insbesondere ist die Leistung, die mit jedem Aspekt der Cloud-basierten Bereitstellung verbunden ist, mit den Klassendefinitionen verknüpft, die bei der Konfiguration dieses Aspekts der Cloud-basierten Bereitstellung beteiligt sind. Daraufhin kann die Leistung, die mit einer Klassendefinition verbunden ist, als ein Faktor zur Bestimmung eines Qualitätsmaßes für die Klassendefinition verwendet werden. Wenn eine Klassendefinition für die Konfiguration mehrerer Cloud-basierter Bereitstellungen verwendet wird, kann die aggregierte Leistung, die mit der Klassendefinition verknüpft ist, verwendet werden, um die Qualität der Klassendefinition zu beurteilen.Therefore, the object-oriented specification language allows performance metrics for each of these different aspects to be derived based on the status and performance of the virtual resources and services that contribute to the performance of the cloud-based deployment aspect. In particular, the performance associated with every aspect of cloud-based deployment is associated with the class definitions involved in the configuration of this aspect of cloud-based deployment. Thereafter, the performance associated with a class definition may be used as a factor for determining a quality measure for the class definition. If a class definition is used to configure multiple cloud-based deployments, the aggregate performance associated with the class definition can be used to assess the quality of the class definition.

Unter Verwendung der wiederverwendbaren Klassendefinitionen und Konfigurationsspezifikationen, die in den 3B und 3C als Beispiel gezeigt sind, kann der Dienst-Manager 222, wenn der Dienst-Cloud-Manager 222 die Mantis- und MySQL-Softwareanwendungen und den Firewall-Dienst in der Mantis-Anwendungsbereitstellung gemäß der Klassendefinition „MantisDeployment” 354 und alle Basisklassen, von denen die Klassendefinition MantisDeployment 354 abhängig ist, implementiert, die jeweiligen Leistungen der Softwarerollen, des Firewall-Dienstes und der zugrunde liegenden virtuellen Maschinen, die die Softwarerollen unterstützen, überwachen. Der Cloud-Dienst-Manager 222 kann die jeweiligen Leistungen der Frontend-Rolle den Klassen, die die Konfiguration der Frontend-Komponente der Mantis-Implementierung beeinflusst haben, zuordnen, die jeweilige Leistung der Firewall-Komponente mit den Klassen verknüpfen, die die Konfiguration der Firewall-Komponente beeinflusst haben, die jeweilige Leistung der virtuellen Maschinen, die der Frontend-Rolle zugrunde liegen, mit den Klassen verknüpfen, die die Konfiguration der virtuellen Frontend-Maschinen beeinflusst haben, und so weiter.Using the reusable class definitions and configuration specifications provided in the 3B and 3C as an example, the service manager may 222 when the service cloud manager 222 the Mantis and MySQL software applications and the firewall service in Mantis application deployment according to the MantisDeployment class definition 354 and all base classes, of which the class definition is MantisDeployment 354 Depends on, monitors the respective performance of the software roles, the firewall service, and the underlying virtual machines that support the software roles. The cloud service manager 222 For example, the respective services of the front-end role can be assigned to the classes that influenced the configuration of the front-end component of the Mantis implementation, linking the respective performance of the firewall component to the classes that influenced the configuration of the firewall component match the actual performance of the virtual machines that underlie the front-end role with the classes that influenced the configuration of the front-end virtual machines, and so on.

In einigen Implementierungen kann der Cloud-Dienst-Manager 222 ein Systemblockdiagramm der Cloud-basierten Bereitstellung gemäß dem Konfigurationsspezifikationsschreiben in der objektorientierten Spezifikationssprache erzeugen. So lassen sich aus den Klassendefinitionen in der Konfigurationsspezifikation die Eigenschaften der infrastrukturellen Komponenten, Speicher, Dienste, Software-Rollen sowie deren Zusammenhänge (z. B. Abhängigkeiten und Konnektivität) sowie Rekonfigurations-Trigger identifizieren und als entsprechende Elemente im Systemblockdiagramm der Bereitstellung darstellen. Das Basissystem-Blockdiagramm kann erstellt werden, wenn die Konfigurationsspezifikation beispielsweise durch den API-Übersetzer 404 analysiert wird.In some implementations, the cloud service manager 222 Create a system block diagram of the cloud-based deployment according to the configuration specification letter in the object-oriented specification language. The class definitions in the configuration specification can be used to identify the properties of infrastructural components, storage, services, software roles and their relationships (such as dependencies and connectivity), reconfiguration triggers, and display them as corresponding elements in the system block diagram of the deployment. The basic system block diagram can be created if the configuration specification is provided by, for example, the API Translator 404 is analyzed.

5 zeigt das Blockschaltbild 500, das basierend auf der Bereitstellungsspezifikation 340, die in 3C gezeigt ist, erzeugt werden kann. Beim Analysieren der Konfigurationsspezifikation 340 der Mantis-Anwendungsbereitstellung erkennt der Cloud-Dienst-Manager 222 aus der MantisDeployment-Klassendefinition 354, dass es zwei Softwarerollen und eine an der Bereitstellung beteiligte Firewall gibt, zum Beispiel die Softwarerollen, die von den Klassendefinitionen „MantisFrontendRole” und „MantisDatabaseRole” modelliert werden, und eine Firewall, die durch die Klassendefinition „MatisFirewall” modelliert wird. Daher kann der Cloud-Dienst-Manager 222 einen Block 504 für die Frontend-Rolle, einen Block 506 für die Datenbankrolle sowie einen Block 508 für den Firewall-Dienst innerhalb eines Blocks 502, der die Mantis-Anwendungsbereitstellung darstellt, hinzufügen. 5 shows the block diagram 500 based on the deployment specification 340 , in the 3C is shown can be generated. When analyzing the configuration specification 340 Mantis application deployment is detected by the Cloud Service Manager 222 from the MantisDeployment class definition 354 in that there are two software roles and one firewall involved in the deployment, for example the software roles modeled by the class definitions "MantisFrontendRole" and "MantisDatabaseRole", and a firewall modeled by the class definition "MatisFirewall". Therefore, the cloud service manager 222 a block 504 for the front end roll, a block 506 for the database role and a block 508 for the firewall service within a block 502 adding the Mantis application deployment.

Als nächstes bestimmt der Cloud-Dienst-Manager 222 gemäß der Klassendefinition der Klasse „MantisFrontendRole”, dass die Software-Anwendung, die die Frontend-Rolle bedient, gemäß der Klassendefinition der Klasse „mantis_frontend” bereitgestellt werden soll. Der Cloud-Dienst-Manager 222 fügt daher einen Block 510 innerhalb des Blocks 504 hinzu, um die Frontend-Software darzustellen, die der Frontend-Rolle dient. Ähnlich bestimmt der Dienstverwalter 222 aus der Klassendefinition der Klasse „MantisDatabaseRole”, dass die Software-Anwendung, die die Datenbankrolle bedient, gemäß der Klassendefinition der Klasse „mantis_backend” bereitgestellt werden soll. Daher fügt der Dienstverwalter einen Block 512 innerhalb des Blocks 506 hinzu, um die Backend-Datenbank-Software darzustellen, die der Datenbankrolle dient.Next, the cloud service manager determines 222 according to the class definition of the class "MantisFrontendRole", that the software application serving the frontend role should be provided according to the class definition of the class "mantis_frontend". The cloud service manager 222 therefore adds a block 510 inside the block 504 to represent the front-end software that serves the front-end role. Similarly, the service administrator determines 222 from the class definition of the MantisDatabaseRole class, to provide the software application serving the database role according to the class definition of the mantis_backend class. Therefore, the service manager adds a block 512 inside the block 506 to represent the backend database software that serves the database role.

Ferner sind gemäß den Klassendefinitionen 348 und 350 von „MantisFrontendRole” und „MantisDatabaseRole” die Frontend-Rolle und die Datenbankrolle miteinander verbunden. Basierend auf der Klassendefinition 352 der „MantisFirewall” ist die Firewall mit der Frontend-Rolle verbunden. Daher kann der Cloud-Dienst-Manager 222 eine Verbindung 514 zwischen dem Block 504 und dem Block 506 einfügen, um die Konnektivitätsbeziehung zwischen der Frontend-Rolle und der Datenbankrolle darzustellen. Zusätzlich fügt der Cloud-Dienst-Manager 222 auch eine Verbindung 516 zwischen dem Block 504 und dem Block 508 ein, um die Konnektivitätsbeziehung zwischen der Frontend-Rolle und der Firewall darzustellen.Further, according to the class definitions 348 and 350 MantisFrontendRole and MantisDatabaseRole connect the front-end role and the database role. Based on the class definition 352 the "MantisFirewall" is the firewall connected to the frontend role. Therefore, the cloud service manager 222 a connection 514 between the block 504 and the block 506 Insert to represent the connectivity relationship between the frontend role and the database role. Additionally, the cloud service manager adds 222 also a connection 516 between the block 504 and the block 508 to represent the connectivity relationship between the front-end role and the firewall.

Darüber hinaus bestimmt der Cloud-Dienst-Manager 222 aus der Klassendefinition 330 der Klasse „FrontendRole”, da die „MantisFrontRole”-Klassendefinition 348 von der FrontendRole-Klassendefinition 330 ausgeht, dass die Frontend-Software (beispielsweise die Mantis Software) auf einer virtuellen Maschine installiert werden soll, die durch die Klassendefinition 324 „FrontendVM” modelliert wird. Ähnlich erweitert sich die Klassendefinition 350 „MantisDatabaseRole” von der Klassendefinition 332 für die Datenbankroutine und der Cloud-Dienst-Manager 222 bestimmt aus der Klassendefinition 332 der Klasse „DataBaseRole”, dass die Backend-Datenbanksoftware (z. B. die MySQL-Datenbanksoftware) auf derselben virtuellen Maschine wie die Frontend-Rollen-Software installiert werden soll. Basierend auf den obigen Informationen fügt der Dienstverwalter 222 einen Block 518 unter den Blöcken 504 und 506 hinzu, um die zugrunde liegende virtuelle Maschine für die Frontendrolle und die Datenbankrolle darzustellen. Ferner bestimmt der Cloud-Dienst-Manager 222 gemäß der Klassendefinition 332 „DatabaseRole”, dass eine persistente Platte mit der Datenbankrolle durch einen Bereitstellungspunkt auf der zugrunde liegenden virtuellen Maschine verbunden ist. Die persistente Platte wird entsprechend der Spezifikation bereitgestellt, die in der Klassendefinition 328 von MysqlPD spezifiziert ist. Daher fügt der Dienstmanager 222 einen Block 520 zu dem Block 502 hinzu, der die Mantis-Implementierung darstellt und fügt eine Verbindung 522 hinzu, um die Konnektivitätsbeziehung zwischen der Datenbank-Software, ihrer zugrundeliegenden virtuelle Maschine und der permanenten Festplatte darzustellen.In addition, the cloud service manager determines 222 from the class definition 330 the class "FrontendRole" because the "MantisFrontRole" class definition 348 from the FrontendRole class definition 330 assumes that the front-end software (for example, the Mantis software) is to be installed on a virtual machine that is defined by the class definition 324 "FrontendVM" is modeled. Similarly, the class definition expands 350 "MantisDatabaseRole" from the class definition 332 for the database routine and the cloud service manager 222 determined from the class definition 332 In the DataBaseRole class, the back-end database software (for example, the MySQL database software) should be installed on the same virtual machine as the front-end role software. Based on the above information, the service administrator adds 222 a block 518 under the blocks 504 and 506 to represent the underlying virtual machine for the front end role and the database role. Further, the cloud service manager determines 222 according to the class definition 332 "DatabaseRole" that a persistent disk is connected to the database role through a mount point on the underlying virtual machine. The persistent disk is provided according to the specification used in the class definition 328 specified by MysqlPD. Therefore, the service manager adds 222 a block 520 to the block 502 which represents the Mantis implementation and adds a connection 522 to illustrate the connectivity relationship between the database software, its underlying virtual machine, and the persistent disk.

Bei einigen Implementierungen kann der Dienstverwalter 222, wenn die Komponenten der Bereitstellung implementiert sind, auch Identifikatoren, die den zugrunde liegenden Infrastrukturkomponenten zugeordnet sind (beispielsweise Prozess-IDs oder Identifikatoren der virtuellen Maschinen und anderer virtueller Ressourcen) für jeden Block oder jede Verbindung, die in dem Blockdiagramm 500 dargestellt ist, aufzeichnen. Wenn der Cloud-Dienst-Manager 222 die Zustände der zugrunde liegenden virtuellen Ressourcen und Dienste für die Bereitstellung überwacht, bestimmt der Cloud-Dienst-Manager 222 optional die Leistungs- oder Nutzungsmetriken für jede Komponente (beispielsweise Blöcke und Verbindungen), die in dem Blockdiagramm 500 dargestellt werden. Der Cloud-Dienst-Manager 222 kann auch optional die Leistungen und die Verwendung der verschiedenen Komponenten im Systemblockdiagramm 500 darstellen.In some implementations, the service manager may 222 Also, if the components of the deployment are implemented, identifiers associated with the underlying infrastructure components (eg, process IDs or virtual machine identifiers and other virtual resources) for each block or connection shown in the block diagram 500 is shown, record. If the cloud service manager 222 Monitoring the states of the underlying virtual resources and services for deployment determines the cloud service manager 222 optionally, the performance or usage metrics for each component (eg, blocks and links) shown in the block diagram 500 being represented. The cloud service manager 222 Optionally, the services and usage of the various components in the system block diagram can also be optional 500 represent.

In einigen Implementierungen können die Visualisierung der Leistungen und die Verwendung dieser verschiedenen Komponenten der Implementierung und ihre Änderungen über die Zeit auf dem Blockdiagramm 500 gezeigt werden. In einigen Implementierungen kann der Cloud-Dienst-Manager 222 die Leistungs- und Nutzungsstatistiken in einer visuellen Form auf dem Blockdiagramm in einer Management-Schnittstelle der Cloud-Dienstes für jeden Cloud-Dienst-Benutzer darstellen. Beispielsweise können die Leistungs- und Nutzungsstatistiken als Histogramm- oder Kreisdiagramm dargestellt werden, das sich dynamisch entsprechend den tatsächlichen Bedingungen der Komponenten in der Cloud-Umgebung ändert. In einigen Implementierungen berechnet der Cloud-Dienstanbieter die Cloud-Dienst-Kunden entsprechend den Leistungs- und Nutzungsstatistiken. In einigen Implementierungen umfasst die Konfigurationsspezifikation optional programmgesteuerte Neukonfigurationsanforderungen. Beispielsweise kann die Konfigurationsspezifikation für eine Komponente so spezifiziert werden, dass wenn ein bestimmter überwachter Parameter einen bestimmten Schwellenwert erreicht, der Cloud-Dienst-Manager 222 die bereitgestellte virtuelle Maschine oder Dienste um einen bestimmten Betrag skaliert. Für ein spezielleres Beispiel kann die Klassendefinition der persistenten Festplattenklasse (z. B. die MysqlPD-Klassendefinition) eine Anweisung enthalten, die eine Erhöhung der Größe der persistenten Festplatte anfordert, wenn die Plattenkapazität zu 80% ausgenutzt ist. Die Klassendefinition der Klasse „frontendVM” kann beantragen, dass, wenn die Latenzzeit der Frontend-Rolle mehr als eine Sekunde beträgt, der „Replikzähler”-Parameter der FrontendVM um eins erhöht wird; und so weiter.In some implementations, the visualization of the services and the use of these various components of the implementation and their changes over time on the block diagram 500 to be shown. In some implementations, the cloud service manager 222 display the performance and usage statistics in a visual form on the block diagram in a cloud services management interface for each cloud service user. For example, the performance and usage statistics can be displayed as a histogram or pie chart which changes dynamically according to the actual conditions of the components in the cloud environment. In some implementations, the cloud service provider calculates the cloud service customers according to the performance and usage statistics. In some implementations, the configuration specification optionally includes program-controlled reconfiguration requests. For example, the configuration specification for a component may be specified such that when a particular monitored parameter reaches a certain threshold, the cloud service manager 222 scales the deployed virtual machine or services by a certain amount. For a more specific example, the class definition of the persistent disk class (for example, the MysqlPD class definition) may include an instruction that requests an increase in the size of the persistent disk when the disk capacity is 80% utilized. The class definition of class "frontendVM" may request that if the latency of the frontend role is more than one second, the "replica counter" parameter of the frontend VM is incremented by one; and so on.

Wie in dieser Spezifikation dargelegt, ermöglicht die objektorientierte Spezifikationssprache, dass die Konfiguration jeder Komponente in einer Cloud-basierten Implementierung durch einen entsprechenden Satz von Klassendefinitionen spezifiziert wird. Beim Analysieren einer Konfigurationsspezifikation ist der Dienstverwalter in der Lage, die Komponenten der Bereitstellung zu identifizieren und alle Basisklassen zu identifizieren, deren Klassenparameter zu dem Konfigurationszustand der Komponente beigetragen haben oder diesen beeinflusst haben. In einigen Implementierungen ist die Leistung jeder Komponente den Klassendefinitionen zugeordnet, die zu der Konfiguration dieser Komponente beigetragen haben. Wenn eine Klassendefinition zu der Konfiguration mehrerer Komponenten in mehreren Bereitstellungen beigetragen hat, kann die Leistung dieser mehreren Komponenten in den mehreren Bereitstellungen mit dieser Klassendefinition verknüpft werden. Die Qualität der Klassendefinition kann mindestens teilweise auf der aggregierten Leistung aller der mehreren Komponenten in den mehreren Bereitstellungen beurteilt werden.As stated in this specification, the object-oriented specification language allows the configuration of each component in a cloud-based implementation to be specified by a corresponding set of class definitions. In analyzing a configuration specification, the service manager is able to identify the components of the deployment and identify any base classes whose class parameters have contributed 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 has contributed to the configuration of multiple components in multiple deployments, the performance of these multiple components in the multiple deployments can be linked to this class definition. The quality of the class definition may be judged, at least in part, on the aggregate performance of all of the multiple components in the multiple deployments.

In einigen Implementierungen verfolgt der Cloud-Dienst-Manager die Verwendung jeder Klassendefinition in der Cloud-basierten Umgebung und erhebt Gebühren von Cloud-Dienstbenutzern, die die Klassendefinition in ihren Bereitstellungen verwendet haben. Wahlweise basiert der Betrag der Gebühren, die den Benutzern berechnet werden, auf der Nutzungsmenge, die der Benutzer für die Klassendefinition in allen von dem Benutzer angeforderten Bereitstellungen verursacht hat. In einigen Implementierungen, bei denen die Klassendefinitionen von Drittanbieter-Definitionsanbietern bereitgestellt werden, kann der Cloud-Dienst-Manager 222 für jede Verwendung der Klassendefinition, die durch den Drittanbieterdefinitionsanbieter bereitgestellt wird, einen Kredit für den Drittanbieterdefinitionsanbieter aufzeichnen.In some implementations, the cloud service manager tracks the use of each class definition in the cloud-based environment and charges cloud service users who have used the class definition in their deployments. Optionally, the amount of fees charged to the users is based on the amount of usage that the user has caused for the class definition in all of the user-requested deployments. In some implementations where the class definitions are provided by third-party definition providers, the cloud service manager may 222 for each use of the class definition provided by the third party definition provider, record a credit for the third party definition provider.

Wenn beispielsweise die Konfigurationsspezifikation für die in 3C gezeigte Mantis-Anwendungsbereitstellung analysiert wird, erfasst der Cloud-Dienst-Manager 222, dass die Mantis-Frontendkomponente 504 gemäß der Klassendefinition 348 „MantisFrontendRole” eingesetzt wird, die die Klassendefinition 330 „lamp.FrontendRole” erweitert, er verwendet die Klassendefinition „mantis frontend” für die Softwarekonfiguration und die Klassendefinition 346 „MantisPackage”, um den Standort des Softwarepakets zu identifizieren, und ist mit der Klasse 350 „MantisDatabaseRole” verbunden. Ferner bestimmt der Dienstverwalter 222, dass sich die Klassendefinition 330 der „lamp.FrontendRole” von der Klassendefinition „std.Role” erstreckt und die Klassendefinition 324 „FrontendVM” verwendet, und dass sich die Klassendefinition 324 „FrontendVM” von der Klassendefinition „utils.ConfiguratorLAMP” erstreckt.For example, if the configuration specification for the in 3C Mantis application deployment being analyzed is captured by the cloud service manager 222 that the Mantis frontend component 504 according to the class definition 348 "MantisFrontendRole" is used, which is the class definition 330 "Lamp.FrontendRole" extends, it uses the class definition "mantis frontend" for the software configuration and the class definition 346 "MantisPackage" to identify the location of the software package, and is with the class 350 "MantisDatabaseRole" connected. Further, the service manager determines 222 that is the class definition 330 the "lamp.FrontendRole" extends from the class definition "std.Role" and the class definition 324 "FrontendVM" is used, and that is the class definition 324 "FrontendVM" extends from the class definition "utils.ConfiguratorLAMP".

Der Cloud-Dienst-Manager 222 kann ferner die Klassendefinitionen identifizieren, die an der Konfiguration der Frontend-Rollenkomponente der Bereitstellung beteiligt sind, indem die Klassenhierarchien, die mit der MantisFrontendRole-Klassendefinition 348 verbunden sind, verfolgt werden, bis die grundlegendsten Sätze von Klassendefinitionen identifiziert sind. Alle Klassendefinitionen, die zur Konfiguration der Frontend-Rollenkomponente beigetragen haben, sind der Frontend-Rollenkomponente für die Bereitstellung zugeordnet. Ein ähnliches Verfahren kann für jede Komponente des Einsatzes durchgeführt werden.The cloud service manager 222 can also identify the class definitions that are involved in the configuration of the deployment front-end role component by specifying the class hierarchies associated with the MantisFrontendRole class definition 348 are tracked until the most basic sets of class definitions are identified. All class definitions that contributed to the configuration of the front-end role component are mapped to the deployment front-end role component. A similar procedure can be performed for each component of the insert.

Wenn die Implementierung durchgeführt wird, kann der Cloud-Dienst-Manager 222 die Verwendung jeder Klassendefinition in der Konfiguration der Bereitstellung entsprechend der Anzahl von Malen aufzeichnen, die die Klassendefinition in der Implementierung verwendet. In einigen Implementierungen wird die Mehrfachnutzung einer Klassendefinition für einmal in jeder Implementierung oder für jeden Benutzer gezählt, abhängig von der von dem Definitionslieferanten der Klassendefinition festgelegten Zahlungsstruktur (z. B. Gebühren pro Nutzungslizenz oder pro Verkauf).When the implementation is performed, the cloud service manager can 222 record the usage of each class definition in the configuration of the deployment according to the number of times the class definition used in the implementation. In some implementations, the multiple use of a class definition is counted once for each implementation or for each user, depending on the payment structure defined by the class definition definition provider (eg, fees per usage license or per sale).

In einigen Implementierungen kann in einem Marktplatz für wiederverwendbare Klassendefinitionen jede neu verwendete Klassendefinition gemäß der Aggregatleistung der Klassendefinition in allen Bereitstellungen, die die Klassendefinition verwendet haben, gegen andere wiederverwendete Klassendefinitionen klassifiziert werden. In einigen Implementierungen kann die Leistung einer Bereitstellung mit jeder Klassendefinition verknüpft werden, die zur Konfiguration der Implementierung beigetragen hat, und bei der Bewertung der Qualität der Klassendefinition verwendet werden. In einigen Implementierungen werden nur die Leistungen der Komponenten, deren Konfigurationen durch eine Klassendefinition beeinflusst werden, mit der Klassendefinition assoziiert und bei der Bewertung der Qualität der Klassendefinition verwendet.In some implementations, in a reusable class definition marketplace, each newly used class definition may be classified against other reused class definitions according to the aggregate performance of the class definition in all deployments that used the class definition. In some Implementations can associate the performance of a deployment with any class definition that has contributed to the configuration of the deployment, and can be used in evaluating the quality of the class definition. In some implementations, only the performance of the components whose configurations are affected by a class definition are associated with the class definition and used in evaluating the quality of the class definition.

Wenn der Cloud-Dienst-Manager beispielsweise mehrere Komponenten in mehreren Bereitstellungen identifiziert hat, die durch eine Definition einer virtuellen Maschine beeinflusst werden, wird die aggregierte Leistung der mehreren Komponenten zur Bewertung der Qualität der Definition der virtuellen Maschine verwendet. Wenn darüber hinaus der Cloud-Dienst-Manager alle Klassendefinitionen identifiziert, die der Konfiguration einer Frontend-Rollenkomponente einer Bereitstellung zugeordnet sind, wird die mit der Frontend-Rollenkomponente in der Bereitstellung assoziierte Leistung mit jeder dieser identifizierten Klassendefinitionen assoziiert.For example, if the cloud service manager identified multiple components in multiple deployments that are affected by a definition of a virtual machine, the aggregate performance of the multiple components is used to assess the quality of the virtual machine's definition. Additionally, if the cloud service manager identifies any class definitions associated with the configuration of a front-end role component of a deployment, the performance associated with the front-end role component in the deployment is associated with each of those identified class definitions.

In einigen Implementierungen wird ein Qualitätsfaktor für jede Klassendefinition basierend auf der aggregierten Leistung berechnet, die mit allen oder mehreren Komponenten oder Bereitstellungen verbunden ist, die mindestens teilweise basierend auf der Klassendefinition konfiguriert sind. Der Qualitätsfaktor kann mit der Klassendefinition in der von dem Cloud-Dienstanbieter zur Verfügung gestellten Definitionsauswahlschnittstelle dargestellt werden. In einigen Implementierungen können für jede Klassendefinition mehrere Qualitätsmetriken berechnet werden, die beispielsweise auf Folgendem basieren: den Skalierungen der Implementierungen, die die Klassendefinition verwendet haben, dem Gewicht oder dem Einfluss der Klassendefinition in jeder Implementierung, die die Klassendefinition verwendet hat, der Verfügbarkeit, der Fehlertoleranz, der Skalierbarkeit und der Ausfallrate der Komponenten, die gemäß der Klassendefinition konfiguriert sind, den Arten der aufgetretenen Probleme, den erforderlichen Modifikationen, um die angetroffenen Probleme zu lösen, explizitem Benutzer-Feedback und so weiter. Basierend auf den verschiedenen Qualitätsmetriken können für jede gemeinsame Klassendefinition eine oder mehrere Arten von Qualitätswerten bereitgestellt werden und ein potentieller Definitionsbenutzer kann die Liste verfügbarer freigegebener Klassendefinitionen basierend auf den Qualitätswerten durchsuchen.In some implementations, a quality factor is calculated for each class definition based on aggregate performance associated with all or multiple components or deployments configured at least in part based on the class definition. The Quality Score may be presented with the class definition in the definition selection interface provided by the cloud service provider. In some implementations, for each class definition, multiple quality metrics may be computed based, for example, on the scales of the implementations that used the class definition, the weight or impact of the class definition in each implementation that used the class definition, the availability, the 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 problems encountered, explicit user feedback and so on. Based on the various quality metrics, one or more types of quality values may be provided for each common class definition, and a potential definition user may search the list of available shared class definitions based on the quality values.

Obwohl das obige Beispiel die Qualitätsbewertung in Bezug auf wiederverwendbare Klassendefinitionen beschreibt, können ähnliche Qualitätswerte für wiederverwendbare Klassenmodule, wiederverwendbare Konfigurationsspezifikationen oder konfigurationsgepackte Softwarelösungen berechnet werden.Although the example above describes the quality rating for reusable class definitions, similar quality values can be calculated for reusable class modules, reusable configuration specifications, or configuration packaged software solutions.

6 ist ein Flussdiagramm eines beispielhaften Prozesses 600 zum Verarbeiten einer Konfigurationsspezifikation, die in einer objektorientierten Spezifikationssprache geschrieben ist. Ein Beispiel für eine derartige hochrangige objektorientierte Spezifizierungssprache ist in 3A3C gezeigt. Der Beispielprozess 600 kann von einem Cloud-Dienstanbieter (beispielsweise dem in 1 gezeigten Cloud-Dienstanbieter 104), wie beispielsweise von einem Cloud-Dienst-Manager (beispielsweise dem Cloud-Dienst-Manager 222) des Cloud-Dienstanbieters ausgeführt werden. In einigen Implementierungen führt der Cloud-Dienst-Manager den Prozess 600 durch eine API-Übersetzerkomponente (beispielsweise den API-Übersetzer 404 in 4) aus. 6 is a flowchart 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 in 3A - 3C shown. The example process 600 can be obtained from a cloud service provider (for example, the in 1 shown cloud service provider 104 ), such as from a cloud service manager (for example, the cloud service manager 222 ) of the cloud service provider. In some implementations, the cloud service manager leads the process 600 through an API translator component (for example, the API translator 404 in 4 ) out.

In dem Beispielprozess 600 wird eine Konfigurationsspezifikation zum Konfigurieren einer cloudbasierten Bereitstellung (beispielsweise durch den API-Übersetzer eines Cloud-Dienstanbieters) (602) empfangen. Die Konfigurationsspezifikation wird in einer objektorientierten Spezifikationssprache geschrieben und erfordert eine Instanziierung von Klassendefinitionen einer oder mehrerer Klassen. Jede Klasse modelliert eine entsprechende Daten- oder Funktionskomponente der Cloud-basierten Bereitstellung mithilfe einer Gruppe konfigurierbarer Klassenparameter. Die jeweilige Klassendefinition jeder Klasse repräsentiert einen angeforderten Zustand der von der Klasse modellierten Daten- oder Funktionskomponente. Eine Vielzahl von API-Aufrufen zum Konfigurieren der Cloud-basierten Bereitstellung wird basierend auf den Klassendefinitionen der einen oder mehreren Klassen (604) abgeleitet. Daraufhin bewirkt der API-Übersetzer des Cloud-Dienstanbieters, dass die Vielzahl von API-Aufrufen ausgeführt wird, um die Cloud-basierte Bereitstellung (606) zu konfigurieren.In the example process 600 is a configuration specification for configuring a cloud-based deployment (for example, by the API translator of a cloud service provider) ( 602 ) received. 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 corresponding cloud-based deployment data or function component using a set of configurable class parameters. The respective class definition of each class represents a requested state of the data or function component modeled by the class. A variety of API calls to configure cloud-based deployment are made based on the class definitions of one or more classes ( 604 ) derived. The cloud service provider's API translator then causes the plurality of API calls to be executed to complete the cloud-based deployment ( 606 ).

In einigen Implementierungen enthalten die eine oder die mehreren Klassen mindestens eine existierende Basisklasse und mindestens eine von der vorhandenen Basisklasse erweitere benutzerdefinierte Klasse. In einigen Implementierungen erbt die benutzerdefinierte Klasse entsprechende Klassenparameter der vorhandenen Basisklasse und modifiziert einen Wert von mindestens einem der Klassenparameter, die von der vorhandenen Basisklasse geerbt wurden. In einigen Implementierungen erbt die benutzerdefinierte Klasse entsprechende Klassenparameter der vorhandenen Basisklasse und modifiziert einen Wert von mindestens einem der Klassenparameter, die von der vorhandenen Basisklasse geerbt wurden.In some implementations, the one or more classes include at least one existing base class and at least one custom class extended from the existing base class. In some implementations, the custom class inherits corresponding 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 some implementations, the custom class inherits corresponding 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 einigen Implementierungen ist die von jeder Klasse modellierte Daten- oder Funktionskomponente eine virtuelle Einheit, die eine Cloud-basierte Umgebung unterstützt, ein Dienst, der in der Cloud-basierten Umgebung verwendet wird, eine Softwarerolle, die von einer installierten Anwendung in der Cloud-basierten Umgebung ausgeführt wird, ein Datenpaket, das Daten umfasst, die während der Bereitstellung oder des Betriebs der Cloud-basierten Umgebung verwendet werden sollen, oder eine Kombination von einem oder mehreren davon. In some implementations, the data or functional component modeled by each class is a virtual appliance that supports a cloud-based environment, a service that is used in the cloud-based environment is a software role that is dependent on an installed application in the cloud. a data packet comprising data to be used during the provisioning or operation of the cloud-based environment, or a combination of one or more thereof.

In einigen Implementierungen unterstützt die objektorientierte Spezifikationssprache die Abhängigkeit zwischen Klassendefinitionen und eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse repräsentiert eine Bereitstellungsabhängigkeit zwischen jeweiligen Komponenten, die durch die erste und die zweite Klasse modelliert sind. In einigen Implementierungen wird die Definitionsabhängigkeit zwischen der ersten Klasse und der zweiten Klasse durch einen Klassenparameter der ersten Klasse ausgedrückt, wobei sich der Klassenparameter der ersten Klasse auf eine Instanz der zweiten Klasse bezieht.In some implementations, the object-oriented specification language supports the 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 second classes. In some implementations, the definition dependency between the first class and the second class is expressed by a class parameter of the first class, wherein the class parameter of the first class refers to an instance of the second class.

In einigen Implementierungen unterstützt die objektorientierte Spezifikationssprache die Konnektivität zwischen Klassendefinitionen und eine Wertzuweisung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verknüpft, stellt eine Konnektivität zwischen jeweiligen Komponenten dar, die von der ersten Klasse und der zweiten Klasse modelliert werden.In some implementations, the object-oriented specification language supports the connectivity between class definitions, and a value assignment that associates an instance of a second class with a class parameter of a first class represents connectivity between respective components modeled by the first class and the second class.

7 ist ein Flussdiagramm eines beispielhaften Prozesses 700 zum Ableiten eines Blockdiagramms, das eine Topologie einer Cloud-basierten Bereitstellung basierend auf der Konfigurationsspezifikation der Cloud-basierten Bereitstellung zeigt. Der Beispielprozess 700 kann von einem Cloud-Dienst-Manager eines Cloud-Dienstanbieters ausgeführt werden (beispielsweise der in 1 und 4 dargestellte Cloud-Dienstanbieter 104). 7 is a flowchart of an example process 700 for deriving a block diagram showing a topology of a cloud-based deployment based on the cloud-based deployment configuration specification. The example process 700 can be executed by a cloud service manager of a cloud service provider (for example, the one in 1 and 4 illustrated cloud service providers 104 ).

In dem Beispielprozess 700 identifiziert der Cloud-Dienstanbieter basierend auf den jeweiligen Klassendefinitionen der einen oder mehreren Klassen in einer Konfigurationsspezifikation eine Vielzahl von Daten- und Funktionskomponenten, die von der einen oder den mehreren Klassen und aus einer oder mehreren Abhängigkeits- und Konnektivitätsverhältnissen, die unter der Vielzahl von Daten- oder Funktionskomponenten (702) bestehen, modelliert sind. Anschließend leitet der Cloud-Dienstanbieter ein Blockdiagramm einer Cloud-basierten Umgebung basierend auf der identifizierten Vielzahl von Daten- und Funktionskomponenten und den identifizierten Abhängigkeits- und Konnektivitätsbeziehungen (704) ab. In einigen Implementierungen stellt der Cloud-Dienstanbieter bei der Ableitung des Blockdiagramms auch Auslöserereignisse für die dynamische Rekonfiguration der Cloud-basierten Umgebung im Blockdiagramm dar.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, one of the one or more classes, and one or more dependency and connectivity ratios among the plurality of data or functional components ( 702 ) are modeled. The cloud service provider then directs 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 presents trigger events for dynamic reconfiguration of the cloud-based environment in the block diagram.

8 ist ein Flussdiagramm eines beispielhaften Prozesses 800 zum Überwachen der Leistung von Cloud-basierten Bereitstellungen und zum Assoziieren der Leistung mit Klassendefinitionen, die bei der Konfiguration der Cloud-basierten Bereitstellungen verwendet werden. 8th is a flowchart of an example process 800 to monitor the performance of cloud-based deployments and to associate performance with class definitions used in the configuration of cloud-based deployments.

In dem Beispielprozess 800 identifiziert der Cloud-Dienstanbieter für jede Klassendefinition einen Aspekt der Cloud-basierten Bereitstellungen, die durch die Klassendefinition in Bezug auf den jeweiligen anfänglichen Konfigurationszustand des Aspekts (802) beeinflusst werden. Der Cloud-Dienstanbieter überwacht ein oder mehrere Leistungsmerkmale, die dem identifizierten Aspekt (804) zugeordnet sind. Der Cloud-Dienstanbieter verbindet die eine oder die mehreren Leistungsmetriken mit der Klassendefinition (806). Daraufhin verwendet der Cloud-Dienstanbieter die eine oder die mehreren Leistungsmetriken bei der Berechnung einer Qualitätsmetrik der Klassendefinition (808).In the example process 800 For each class definition, the cloud service provider identifies an aspect of the cloud-based deployments identified by the class definition relative to the particular initial configuration state of the aspect (FIG. 802 ) to be influenced. The cloud service provider monitors one or more features that are consistent with the identified aspect ( 804 ) assigned. The cloud service provider associates the one or more performance metrics with the class definition ( 806 ). The cloud service provider then uses the one or more performance metrics in the computation of a quality metric of the class definition ( 808 ).

9 ist ein Flussdiagramm eines beispielhaften Prozesses 900 zum Auswerten der Qualität einer wiederverwendeten Klassendefinition basierend auf der aggregierten Leistung mehrerer Cloud-basierter Bereitstellungen, die mindestens teilweise basierend auf der wiederverwendeten Klassendefinition konfiguriert wurden. In dem Beispielprozess 900 identifiziert der Cloud-Dienstanbieter eine Vielzahl von Cloud-basierten Bereitstellungen, die jeweils gemäß einer jeweiligen Konfigurationsspezifikation ausgeführt worden sind, die in der objektorientierten Spezifikationssprache (902) geschrieben ist. Der Cloud-Dienstanbieter identifiziert daraufhin mindestens eine Basisklasse, deren Klassendefinition in einem Vielfachen der Vielzahl von Cloud-basierten Bereitstellungen (904) verwendet wird. Der Cloud-Dienstanbieter überwacht die jeweilige Leistung jeder der Vielzahl von mehreren Cloud-basierten Bereitstellungen (906). Der Cloud-Dienstanbieter berechnet daraufhin eine Qualitätsmetrik der mindestens einen Basisklasse basierend auf der aggregierten Leistung des Vielfachen der Vielzahl von Cloud-basierten Bereitstellungen (908). In einigen Implementierungen ist die jeweilige Leistung von jedem der Vielzahl der Vielzahl von Cloud-basierten Umgebungen eine Leistung, die mit einer Daten- oder Funktionskomponente verknüpft ist, die durch die mindestens eine Klasse modelliert wird. 9 is a flowchart of an example process 900 evaluate the quality of a reused class definition based on the aggregate performance of multiple cloud-based deployments configured based at least in part on the reused class definition. In the example process 900 The cloud service provider identifies a plurality of cloud-based deployments, each of which has been executed according to a respective configuration specification that is in the object-oriented specification language ( 902 ) is written. The cloud service provider then identifies at least one base class whose class definition is in a multiple of the plurality of cloud-based deployments ( 904 ) is used. The cloud service provider monitors the respective performance of each of the plurality of multiple cloud-based deployments ( 906 ). The cloud service provider then calculates a quality metric of the at least one base class based on the aggregate performance of the multiple of the plurality of cloud-based deployments ( 908 ). In some implementations, the respective performance of each of the plurality of plurality of cloud-based environments is a performance associated with a data or functional component modeled by the at least one class.

10 ist ein Flussdiagramm eines Beispielprozesses 1000 zum Ableiten von API-Aufrufen zum Konfigurieren einer Cloud-basierten Bereitstellung basierend auf Klassendefinitionen, die in einer Konfigurationsspezifikation verwendet werden. 10 is a flowchart of an example process 1000 to derive API calls to configure a cloud-based one Deployment based on class definitions used in a configuration specification.

Im Beispielprozess 1000 speichert der Cloud-Dienstanbieter entsprechende Klassendefinitionen mehrerer Kernklassen der objektorientierten Spezifikationssprache (1010). Jede Kernklasse entspricht einer modularen Komponente einer Cloud-basierten Umgebung und jede Kernklasse kann mit zusätzlichen Klassenparametern erweitert werden, um die jeweilige modulare Komponente zu konfigurieren. Der Cloud-Dienstanbieter speichert darüber hinaus eine Zuordnung zwischen jeder der Kernklassen und einer entsprechenden Gruppe von API-Aufrufen (1020). Die jeweilige Gruppe von API-Aufrufen dient dazu, die der Kernklasse zugeordnete modulare Komponente entsprechend den Klassenparametern der Kernklasse zu konfigurieren. Der Cloud-Dienstanbieter speichert darüber hinaus mehrere Protokolle zum Modifizieren der jeweiligen Gruppen von API-Aufrufen, die jeder Kernklasse zugeordnet sind, um eine neue Gruppe von API-Aufrufen für eine neue Klassendefinition zu erhalten, die von der Kernklasse (1030) abgeleitet ist.In the example process 1000 The cloud service provider stores corresponding class definitions of several object-oriented specification language core classes ( 1010 ). Each core class corresponds to a modular component of a cloud-based environment, and each core class can be extended with additional class parameters to configure each modular component. The cloud service provider also stores an association between each of the core classes and a corresponding set of API calls ( 1020 ). The particular set of API calls is used to configure the modular component associated with the core class according to the class parameters of the core class. The cloud service provider also stores several protocols for modifying the respective groups of API calls associated with each core class to obtain a new set of API calls for a new class definition that is distinct from the core class (). 1030 ) is derived.

Um die Vielzahl von API-Aufrufen zur Konfiguration der Cloud-basierten Bereitstellung abzuleiten, leitet der Cloud-Dienstanbieter in einigen Implementierungen die Vielzahl von API-Aufrufen basierend auf Folgendem ab: den jeweiligen Gruppen von API-Aufrufen, die mit einer oder mehreren der Vielzahl von Kernklassen verknüpft sind, von die eine oder die mehreren Klassen der Konfigurationsspezifikation abgeleitet werden, und basierend auf der Vielzahl von Protokollen zum Modifizieren der jeweiligen Gruppen von API-Aufrufen.To derive the plurality of API calls for configuring the cloud-based deployment, in some implementations, 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 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 einigen Implementierungen enthält die Vielzahl von Protokollen ferner Regeln zum Auferlegen einer Anordnung der Gruppen von API-Aufrufen gemäß Abhängigkeits- und Konnektivitätsbeziehungen, die in Klassendefinitionen spezifiziert sind, die entsprechend der objektorientierten Spezifizierungssprache geschrieben sind.In some implementations, the plurality of protocols further include rules for imposing an array of the groups of API calls according to dependency and connectivity relationships specified in class definitions written according to the object-oriented specification language.

11 ist ein Flussdiagramm eines Beispielverfahrens 1100 zum Bereitstellen einer Plattform zum Teilen von wiederzuverwendenden Klassendefinitionen. Das Beispielverfahren 1100 kann von einem Cloud-Dienstanbieter oder einem Plattformanbieter ausgeführt werden, der keine Cloud-basierten Dienste anbietet. 11 is a flowchart of an example method 1100 to provide a platform for sharing reusable class definitions. The example procedure 1100 can be performed by a cloud service provider or a platform provider that does not offer cloud-based services.

In dem Beispielverfahren 1100 empfängt der Cloud-Dienstanbieter oder Plattformanbieter von jedem einer Vielzahl von Definitionslieferanten (1110) eine entsprechende Definitionseinreichung. Die jeweilige Definitionseinreichung umfasst eine oder mehrere Klassendefinitionen, die in einer objektorientierten Spezifikationssprache geschrieben sind. Jede Klassendefinition modelliert eine Daten- oder Funktionskomponente einer Cloud-basierten Bereitstellung unter Verwendung einer Gruppe konfigurierbarer Klassenparameter und ist erweiterbar, um mindestens eine neue Klassendefinition durch Änderung einer oder mehrerer Gruppen konfigurierbarer Klassenparameter oder durch Hinzufügung eines oder mehrerer neuer Klassenparameter zu erzeugen. Der Cloud-Dienstanbieter oder Plattformanbieter stellt daraufhin eine Benutzerschnittstelle bereit, die die von den mehreren Definitionslieferanten empfangenen Klassendefinitionen zur Überprüfung und Auswahl durch eine Vielzahl von Definitionsbenutzern (1120) vorstellt.In the example method 1100 receives the cloud service provider or platform provider from each of a variety of definition providers ( 1110 ) a corresponding definition submission. The respective definition submission includes one or more class definitions written in an object-oriented specification language. Each class definition models a data or function component of a cloud-based deployment using a set of configurable class parameters and is extensible to create at least one new class definition by modifying one or more sets of configurable class parameters or by adding one or more new class parameters. The cloud service provider or platform provider then provides a user interface for reviewing and selecting the class definitions received from the plurality of definition providers by a plurality of definition users ( 1120 ) introduces.

12 ist ein Flussdiagramm eines Beispielverfahrenes 1200 zum Konfigurieren mehrerer getrennter Cloud-basierter Bereitstellungen basierend auf verschiedenen Konfigurationsspezifikationen, die alle mindestens eine gemeinsame wiederverwendbare Klassendefinition verwenden. Das Beispielverfahren 1200 kann von einem Cloud-Dienstanbieter, wie beispielsweise dem beispielhaften Cloud-Dienstanbieter 104, durchgeführt werden, der in 4 gezeigt ist. 12 is a flowchart of an example method 1200 to configure multiple separate cloud-based deployments based on different configuration specifications that all use at least one common reusable class definition. The example procedure 1200 may be from a cloud service provider, such as the example cloud service provider 104 to be performed in 4 is shown.

In dem Beispielverfahren 1200 empfängt der Cloud-Dienstanbieter eine Vielzahl von verschiedenen Konfigurationsspezifikationen, die in der objektorientierten Spezifikationssprache (1210) geschrieben sind. Die Vielzahl von unterschiedlichen Konfigurationsspezifikationen dient jeweils für die Konfiguration einer eindeutigen, Cloud-basierten Bereitstellung und umfasst eine eindeutige Klassendefinition, die sich von derselben der Klassendefinitionen erstreckt, die von den mehreren Definitionslieferanten erhalten werden. Daraufhin konfiguriert der Cloud-Dienstanbieter jede der unterschiedlichen Cloud-basierten Bereitstellungen, die mindestens auf derselben der empfangenen Klassendefinitionen und der eindeutigen Klassendefinition basieren, die sich in der unterschiedlichen Konfigurationsspezifikation der eindeutigen Cloud-basierten Bereitstellung (1220) davon erstrecken.In the example method 1200 The cloud service provider receives a variety of different configuration specifications that are in the object-oriented specification language ( 1210 ) are written. Each of the plurality of different configuration specifications serves to configure a unique, cloud-based deployment and includes a unique class definition that extends from the same one of the class definitions obtained from the plurality of definition providers. The cloud service provider then configures each of the different cloud-based deployments that are based at least on the same of the received class definitions and the unique class definition as reflected in the distinct configuration specification of the unique cloud-based deployment (FIG. 1220 ) of which extend.

13 ist ein Flussdiagramm eines beispielhaften Prozesses 1300 zum Laden von Definitionsbenutzern und Kreditierungsdefinitionslieferanten basierend auf der Verwendung der wiederverwendbaren Klassendefinitionen, die von den Definitionslieferanten bereitgestellt werden. 13 is a flowchart of an example process 1300 for loading definition users and credit definition suppliers based on the use of the reusable class definitions provided by the definition suppliers.

In dem Beispielverfahren 1300 überwacht der Cloud-Dienstanbieter für jede der empfangenen Klassendefinitionen die Verwendung der Klassendefinition in einer Vielzahl von Konfigurationsspezifikationen, die verwendet wurden, um eine Vielzahl von Cloud-basierten Bereitstellungen (1310) zu konfigurieren. Der Cloud-Dienstanbieter zeichnet für jede Verwendung der Klassendefinition in der Vielzahl von Konfigurationsspezifikationen einen Kredit an einen Definitionslieferanten der Klassendefinition und eine Gebühr an einen Definitionsbenutzer, der mit der Verwendung (1320) verknüpft ist, auf.In the example method 1300 For each of the received class definitions, the cloud service provider monitors the use of the class definition in a variety of configuration specifications that have been used to run a variety of cloud-based deployments ( 1310 ). The cloud service provider records for each use of the class definition in the multitude of Configuration specifications a loan to a definition provider of the class definition and a charge to a definition user associated with the use ( 1320 ).

In einigen Implementierungen umfasst die Verwendung der Klassendefinition eine Instanziierung der Klassendefinition in einer jeweiligen Konfigurationsspezifikation, die verwendet wurde, um eine jeweilige Cloud-basierte Implementierung auszuführen. In einigen Implementierungen umfasst die Verwendung der Klassendefinition eine Instanziierung der Klassendefinition in einer jeweiligen Konfigurationsspezifikation, die verwendet wurde, um eine jeweilige Cloud-basierte Implementierung auszuführen.In some implementations, the use of the class definition includes instantiating the class definition in a respective configuration specification that has been used to execute a respective cloud-based implementation. In some implementations, the use of the class definition includes instantiating the class definition in a respective configuration specification that has been used to execute a respective cloud-based implementation.

14 ist ein Flussdiagramm eines Beispielverfahrenes 1400 zum Bereitstellen einer Plattform zum Verkaufen von und „konfigurationsumhüllten” Softwarelösungen. Der Prozess 1400 kann von einem Cloud-Dienstanbieter oder einem Plattformanbieter bereitgestellt werden, der keine Cloud-basierten Dienste bereitstellt. In dem Beispielverfahren 1400 empfängt der Cloud-Dienstanbieter oder Plattformanbieter eine Softwareeinreichung von einem Softwarelieferanten (1410). Die Software-Einreichung umfasst eine Software-Anwendung, die in einer Cloud-basierten Umgebung bereitgestellt wird und eine Vielzahl von verschiedenen Konfigurationsspezifikationen zum Bereitstellen der Softwareanwendung in der Cloud-basierten Umgebung auf unterschiedliche Weise. Daraufhin stellt der Cloud-Dienstanbieter oder Plattformanbieter die Vielzahl von spezifischen Konfigurationsspezifikationen für die Überprüfung und Auswahl durch einen Software-Benutzer (1420) bereit. 14 is a flowchart of an example method 1400 to provide a platform for selling and "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 method 1400 the cloud service provider or platform provider receives software submission from a software vendor ( 1410 ). The software submission includes a software application provided in a cloud-based environment and a variety of different configuration specifications for providing the software application in the cloud-based environment in different ways. Thereafter, the cloud service provider or platform provider provides the plurality of specific configuration specifications for review and selection by a software user ( 1420 ) ready.

15 ist ein Flussdiagramm eines Beispielverfahrenes 1500 zum Laden von Softwarebenutzern und Anerkennen von Softwareanbietern basierend auf der Auswahl von konfigurationsumhüllten Softwarelösungen durch Softwarebenutzer. Der Beispielverfahren 1500 kann von einem Cloud-Dienstanbieter (beispielsweise dem in 4 gezeigten Cloud-Dienstanbieter 104) ausgeführt werden. 15 is a flowchart of an example method 1500 for loading software users and recognizing software vendors based on software user selection of configuration-wrapped software solutions. The example procedure 1500 can be obtained from a cloud service provider (for example, the in 4 shown cloud service provider 104 ).

Im Beispielverfahren 1500 empfängt der Cloud-Dienstanbieter die Auswahl einer der Vielzahl von unterschiedlichen Konfigurationsspezifikationen von dem Benutzer (1510). Der Cloud-Dienstanbieter implementiert die Softwareanwendung in der Cloud-basierten Umgebung gemäß der gewählten Konfigurationsspezifikation (1520). Danach zeichnet der Cloud-Dienstanbieter eine Gebühr für den Softwarebenutzer und eine Gutschrift für den Softwareanbieter basierend auf einem jeweiligen Preis auf, der der ausgewählten unterschiedlichen Konfigurationsspezifikation (1530) zugeordnet ist. In einigen Implementierungen liefert der Cloud-Dienstanbieter, um die Vielzahl von Klassendefinitionen zur Auswahl bereitzustellen, die jeweiligen Leistungsmetriken mit jeder der Vielzahl von Klassendefinitionen für Benutzerreviews in einer Auswahlbenutzerschnittstelle.In the example procedure 1500 the cloud service provider receives the selection of one of the plurality of different configuration specifications from the user ( 1510 ). The cloud service provider implements the software application in the cloud-based environment according to the selected configuration specification ( 1520 ). Thereafter, the cloud service provider records a fee for the software user and a credit to the software provider based on a price corresponding to the selected different configuration specification (s). 1530 ) assigned. 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 reviews in a selection user interface.

16 ist ein Flussdiagramm eines Beispielverfahrens 1600 zum Verwenden von aggregierten Leistungsmetriken mehrerer Cloud-basierter Bereitstellungen in klassifizierenden wiederzuverwendenden Klassendefinitionen, die bei der Konfiguration der mehrfachen Cloud-basierten Bereitstellungen verwendet wurden. Das Beispielverfahren 1600 kann von einem Cloud-Dienstanbieter (z. B. einem Cloud-Dienstanbieter 104, der in 4 gezeigt ist) ausgeführt werden. 16 is a flowchart of an example method 1600 to use aggregated performance metrics of multiple cloud-based deployments in classifying reusable class definitions that were used in configuring the multiple cloud-based deployments. The example procedure 1600 may be from a cloud service provider (eg, a cloud service provider 104 who in 4 shown).

In dem Beispielverfahren 1600 stellt der Cloud-Dienstanbieter eine Vielzahl von Klassendefinitionen für die Auswahl (1610) bereit. Jede Klassendefinition modelliert eine jeweilige Daten- oder Funktionskomponente einer Cloud-basierten Umgebung mithilfe einer Gruppe konfigurierbarer Klassenparameter. Jede Klassendefinition unterstützt Instanziierung und Vererbung der Klassendefinition in einer Konfigurationsspezifikation für eine Cloud-basierte Bereitstellung. Die Cloud-Dienst-Anbieter leitet auch jeweilige Leistungsmetriken ab, die jeder der Vielzahl von Klassendefinitionen zugeordnet sind, basierend auf der aggregierten Leistung mehrerer Cloud-basierter Bereitstellungen, wo die mehrfachen Cloud-basierten Implementierungen gemäß den jeweiligen Konfigurationsspezifikationen ausgeführt wurden, die eine Instanziierung der Klassendefinition oder eine neue Klassendefinition erfordern, die aus der Klassendefinition (1620) abgeleitet ist. Daraufhin nutzt der Cloud-Dienstanbieter beim Klassifizieren der Vielzahl von Klassendefinitionen (1630) die jeweiligen Leistungsmetriken, die jeder der Vielzahl von Klassendefinitionen zugeordnet sind.In the example method 1600 the cloud service provider provides a variety of class definitions for selection ( 1610 ) ready. Each class definition models a particular data or functional component of a cloud-based environment using a set 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 the aggregate performance of multiple cloud-based deployments where the multiple cloud-based implementations were performed according to the particular configuration specifications that facilitate instantiation of the cloud Require a class definition or a new class definition from the class definition ( 1620 ) is derived. The cloud service provider then uses it to classify the plurality of class definitions ( 1630 ) the respective performance metrics associated with each of the plurality of class definitions.

17 ist ein Flußdiagramm eines Beispielverfahrenes 1700 zum Kategorisieren von wiederverwendbaren Klassendefinitionen und zur Klassifizierung der wiederverwendbaren Klassendefinitionen in ihren jeweiligen Kategorien. 17 is a flowchart of an example method 1700 for categorizing reusable class definitions and classifying the reusable class definitions in their respective categories.

In dem Beispielprozess 1700 kategorisiert der Cloud-Dienstanbieter die Vielzahl von Klassendefinitionen auf der Basis der jeweiligen Daten- oder Funktionskomponenten der Cloud-basierten Umgebung, die durch die Vielzahl von Klassendefinitionen (1710) modelliert ist. Dann ordnet der Cloud-Dienstanbieter die Vielzahl von Klassendefinitionen in die Kategorien der Klassendefinitionen (1720) ein.In the example process 1700 The cloud service provider categorizes the plurality of class definitions based on the respective data or functional components of the cloud-based environment, which are defined by the plurality of class definitions (FIG. 1710 ) is modeled. Then, the cloud service provider maps the multitude of class definitions into the categories of class definitions ( 1720 ) one.

18 ist ein Flussdiagramm eines beispielhaften Verfahrens 1800 zum Zuordnen von Leistungen mehrerer Cloud-basierter Bereitstellungen mit einer Klassendefinition, die verwendet wurde, um die mehrfachen Cloud-basierten Bereitstellungen zu konfigurieren. 18 FIG. 10 is a flowchart of an example method. FIG 1800 to associate services from multiple cloud-based deployments with a class definition that has been used to configure the multiple cloud-based deployments.

In dem Beispielprozess 1800 identifiziert der Cloud-Dienstanbieter für jede einer Vielzahl von Klassendefinitionen eine Vielzahl von Cloud-basierten Bereitstellungen, die gemäß den jeweiligen Konfigurationsspezifikationen ausgeführt wurden, die eine Instanziierung der Klassendefinition oder mindestens eine neue Klassendefinition aus der Klassendefinition (1810) erforderlich machten. Der Cloud-Diensteanbieter überwacht die jeweiligen Leistungen der Vielzahl von Cloud-basierten Bereitstellungen (1820). Der Cloud-Diensteanbieter assoziiert dann die jeweiligen Leistungen der Vielzahl von Bereitstellungen mit der Klassendefinition (1830).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 have been executed according to the respective configuration specifications that include an instantiation of the class definition or at least one new class definition from the class definition ( 1810 ) required. The cloud service provider monitors the respective performance of the large number of cloud-based deployments ( 1820 ). The cloud service provider then associates the respective services of the plurality of class definition deployments ( 1830 ).

19 ist ein Flussdiagramm eines Beispielverfahrens 1900 zum Ableiten von Leistungsmetriken, die mit einer wiederverwendeten Klassendefinition auf der Grundlage einer aggregierten Leistung von mehreren Bereitstellungen assoziiert sind. Der Cloud-Dienstanbieter führt beim Ableiten der jeweiligen Leistungsmetriken, die mit jeder einer Vielzahl von Klassendefinitionen assoziiert sind, basierend auf einer aggregierten Leistung mehrerer Cloud-basierter Bereitstellungen, das Beispielverfahren 1900 aus. In dem Beispielverfahren 1900 identifiziert der Cloud-Dienstanbieter für jede der Vielzahl von Klassendefinitionen eine oder mehrere Daten- oder Funktionskomponenten aus der Vielzahl von Cloud-basierten Bereitstellungen, die gemäß der Klassendefinition oder einer neuen Klassendefinition, die aus der Klassendefinition (1910) abgeleitet wurde, konfiguriert wurden. Der Cloud-Dienstanbieter identifiziert eine oder mehrere Leistungsmetriken, die der einen oder den mehreren identifizierten Daten- oder Funktionskomponenten zugeordnet sind (1920). Daraufhin ermittelt der Cloud-Dienstanbieter die jeweiligen Leistungsmetriken, die mit der Klassendefinition assoziiert sind, durch Aggregation der einen oder der mehreren identifizierten Leistungsmetriken (1930). In einigen Implementierungen umfassen die Leistungsmetriken eine oder mehrere Maße von Latenz, Zuverlässigkeit, Skalierbarkeit, Verfügbarkeit oder Sicherheit. 19 is a flowchart of an example method 1900 for deriving performance metrics associated with a reused class definition based on aggregate performance of multiple deployments. The cloud service provider, in deriving the respective performance metrics associated with each of a plurality of class definitions based on aggregated performance of multiple cloud-based deployments, performs the example method 1900 out. In the example method 1900 For each of the plurality of class definitions, the cloud service provider identifies one or more data or functional components of the plurality of cloud-based deployments that are selected according to the class definition or a new class definition derived from the class definition. 1910 ) were configured. The cloud service provider identifies one or more performance metrics associated with the one or more identified data or functional components ( 1920 ). The cloud service provider then determines the respective performance metrics associated with the class definition by aggregating the one or more identified performance metrics ( 1930 ). In some implementations, the performance metrics include one or more measures of latency, reliability, scalability, availability, or security.

20 ist ein Flussdiagramm eines Beispielverfahrens 2000 zum Verwenden mehrerer Faktoren bei der Klassifizierung von wiederverwendbaren Klassendefinitionen. 20 is a flowchart of an example method 2000 to use multiple factors in classifying reusable class definitions.

In dem Beispielverfahren 2000 verfolgt der Cloud-Dienstanbieter für jede Klassendefinition eine jeweilige Anzahl von Cloud-basierten Bereitstellungen, die mindestens teilweise gemäß der Klassendefinition (2010) konfiguriert wurden. Optional verfolgt der Cloud-Dienstanbieter eine Anzahl von Problemen, die bei Cloud-basierten Bereitstellungen auftreten, die mindestens teilweise gemäß der Klassendefinition konfiguriert wurden. Optional verfolgt der Cloud-Dienstanbieter auch eine Anzahl erforderlicher Änderungen, um die Probleme zu lösen, die in den Cloud-basierten Bereitstellungen auftreten, die mindestens teilweise gemäß der Klassendefinition konfiguriert wurden. Daraufhin verwendet der Cloud-Dienstanbieter die jeweiligen Zählungen, die mit der Vielzahl von Klassendefinitionen in der Rangfolge der Vielzahl von Klassendefinitionen (2020) assoziiert sind. Optional nutzt der Cloud-Dienstanbieter auch die jeweiligen Zählungen der Probleme und die jeweilige Anzahl der erforderlichen Änderungen, die mit der Vielzahl von Klassendefinitionen in der Rangfolge der Vielzahl von Klassendefinitionen verbunden sind.In the example method 2000 For each class definition, the cloud service provider keeps track of a number of cloud-based deployments, at least in part, according to the class definition ( 2010 ) were configured. Optionally, the cloud service provider tracks a number of problems that occur with cloud-based deployments that are at least partially configured according to the class definition. Optionally, the cloud service provider also tracks a number of required changes to solve the problems that occur in the cloud-based deployments that were at least partially configured according to the class definition. The cloud service provider then uses the respective counts associated with the plurality of class definitions in the ranking of the plurality of class definitions ( 2020 ) are associated. Optionally, the cloud service provider also uses the respective counts of the problems and the respective number of required changes associated with the plurality of class definitions in the ranking of the plurality of class definitions.

In einigen Implementierungen wird die jeweilige Anzahl von erforderlichen Änderungen, die mit der Vielzahl von Klassendefinitionen assoziiert ist, verwendet, um jeweilige Gewichte zu berechnen, die den jeweiligen Leistungsmetriken zugeordnet sind, die mit der Vielzahl von Klassendefinitionen assoziiert sind, um die Vielzahl von Klassendefinitionen zu bewerten.In some implementations, the respective number of required changes associated with the plurality of class definitions is used to calculate respective weights associated with the respective performance metrics associated with the plurality of class definitions to accommodate the plurality of class definitions rate.

Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Durchführung durch oder die Kontrolle des Betriebs des datenverarbeitenden Apparats kodiert werden. Alternativ oder zusätzlich können die Programmanweisungen auf einem erzeugten propagierten Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal künstlich kodiert werden, das erzeugt wird, um Informationen für die Übertragung auf einen geeigneten Empfängerapparat für die Durchführung durch einen datenverarbeitenden Apparat zu kodieren. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln.Embodiments of the subject matter and the activities described in this specification may be implemented in digital electronic circuits 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 may be embodied as one or more computer programs, i. H. are implemented as one or more modules of computer program instructions encoded on a computer storage medium for performing or controlling the operation of the data processing apparatus. Alternatively or additionally, the program instructions may be based on a generated propagated signal, e.g. A machine-generated electrical, optical or electromagnetic signal which is generated to encode information for transmission to a suitable receiver apparatus for execution by a data processing apparatus. A computer storage medium may be a machine-readable storage device, a machine-readable storage medium, a random or serial storage array or storage device, or a combination of one or more of these devices.

Der Begriff „Datenverarbeitungsvorrichtung” umfasst alle Arten von Vorrichtungen, Geräten und Maschinen zum Verarbeiten von Daten, einschließlich beispielsweise eines programmierbaren Prozessors, eines Rechners oder mehrerer Prozessoren oder Rechner. Die Vorrichtung kann spezielle Logikschaltungen umfassen, z. B. ein FPGA (Field Programmable Gate Array-programmierbare Hardware-Logik) oder ein ASIC (anwendungsspezifische integrierte Schaltung). Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Durchführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbankverwaltungssystem, ein Betriebssystem, oder eine Kombination einer oder mehrerer der genannten.The term "data processing device" encompasses all types of devices, devices and machines for processing data including, for example, a programmable processor, a computer or multiple processors or calculator. The device may include special logic circuits, e.g. As an FPGA (Field Programmable Gate Array programmable hardware logic) or an ASIC (application-specific integrated circuit). The apparatus may include, in addition to the hardware, a code that provides an execution environment for the particular computer program in question, e.g. A code, the processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of the cited.

Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computer eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.A computer program (also referred to as program, software, software application, script or code) may be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and the program may be in any form, including as independent program or as a module, component, subroutine or other entity suitable for use in a computing environment. A computer program may or may not be equivalent to a file in a file system. A program may be stored in a portion of a file containing other programs or data (eg, one or more scripts stored in a document in markup language), in a single file specific to that program, or in multiple coordinated files (for example, files that store one or more modules, subprograms, or pieces of code). A computer program may be set up or executed on one or more computers located at a site or distributed over multiple sites and connected via a communications network.

Die in dieser Beschreibung dargestellten Prozesse und Logik-Abläufe können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen durch das Arbeiten mit Eingabedaten und das Erzeugen von Ausgaben auszuführen. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).The processes and logic operations depicted in this specification may be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating outputs. The processes and logical operations may also be performed by special purpose logic circuits, and the apparatus may be implemented as special purpose circuits, e.g. As an FPGA (Field Programmable Gate Array) or an ASIC (application-specific integrated circuit).

Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, beinhalten beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art Computer ein. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind eine CPU für das Ausführen von Anweisungen und ein oder mehrere Speichergeräte für das Speichern von Anweisungen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehrere Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Außerdem kann ein Computer in einem anderen Gerät eingebettet sein, z. B. in einem Mobiltelefon, einem Organizer (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem Funknavigationsempfänger oder einem tragbaren Speichergerät (z. B. in einem USB-Stick), um nur einige zu nennen.Processors suitable for executing a computer program include, for example, both general and special purpose microprocessors, as well as all types of one or more processors of any type. In general, a processor accepts instructions and data from read-only memory or memory, or both. The essential elements of a computer are a CPU for executing instructions and one or more storage devices for storing instructions and data. Generally, a computer also includes one or more mass storage devices for storing data, e.g. As magnetic, magneto-optical or optical disks to receive and / or transmit data, or a computer is operatively coupled to such a storage device. However, a computer does not have to have such devices. In addition, a computer may be embedded in another device, e.g. In a mobile phone, an organizer (PDA), a mobile audio or video player, a game console, a radio navigation receiver, or a portable storage device (eg, a USB stick), to name but a few.

Computerlesbare Medien, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Permanentspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und USB-Flash-Speicher; Magnetdisketten, z. B. interne Festplatten oder herausnehmbare Disketten; magnetooptische Disketten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.Computer readable media suitable for storing computer program instructions and data includes all forms of non-volatile memory, media and storage devices including, for example, semiconductor memory devices, e.g. EPROM, EEPROM and USB flash memory; Magnetic disks, z. Internal hard drives or removable floppy disks; magneto-optical diskettes; and CD-ROMs and DVD-ROMs. The processor and memory may be supplemented or incorporated by special purpose logic circuits.

Um die Interaktion mit einem Benutzer zu ermöglichen, können in dieser Spezifikation beschriebene Ausführungsformen des Gegenstands auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT-(Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Zusätzlich kann ein Computer mit einem Benutzer durch das Senden und das Erhalten von Dokumenten von einem Gerät, das von einem Benutzer benutzt wird, Wechselwirken; beispielsweise durch das Senden von Webseiten an einen Webbrowser durch ein Benutzergerät des Benutzers als Antwort auf Anforderungen des Webbrowsers.To facilitate interaction with a user, embodiments of the subject matter described in this specification may be implemented on a computer with a display device, e.g. As a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, with which the user information is displayed, and a keyboard and a display device, eg. As a mouse or a trackball, with which the user can make inputs to the computer. Other types of devices may be used to provide for interaction with a user; For example, a user-supplied feedback of any form of sensory feedback may be present, e.g. A visual feedback, auditory feedback or tactile feedback; and the input from the user may be received in any form, including acoustic, voice or tactile input. In addition, a computer may interact with a user by sending and receiving documents from a device used by a user; for example, by sending web pages to a web browser by a user device of the user in response to requests from the web browser.

Ausführungsformen der in dieser Spezifikation betrachteten Gegenstands können in ein Computersystem implementiert werden, das eine Backend-Komponente (z. B. einen Datenserver), oder eine Middleware-Komponente (z. B. einen Anwendungsserver), oder eine Frontend-Komponente (z. B. einen Client-Computer mit graphischem Benutzerinterface oder Webbrowser) umfasst, worüber der Benutzer mit einer Implementierung der in dieser Spezifikation betrachteten Gegenstands interagieren kann, oder eine beliebige Kombination aus solchen Backend, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetz. So beinhalten beispielsweise Kommunikationsnetzwerke ein lokales Netzwerk („LAN”), ein Fernnetz („WAN”), z. B. das Internet. Embodiments of the subject matter contemplated in this specification may be implemented in a computer system that includes a back-end component (eg, a data server), or a middleware component (eg, an application server), or a front-end component (e.g. A client computer with graphical user interface or web browser), which allows the user to interact with an implementation of the subject matter considered in this specification, or any combination of such backend, middleware or frontend components. The components of the system may be interconnected by any form or medium of digital data communication, e.g. B. a communication network. For example, communication networks include a local area network ("LAN"), a long distance network ("WAN"), e.g. For example, the Internet.

Das Rechensystem kann Client und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.The computing system may include client and server. A client and server are generally remote from each other and typically interact over a communications network. The relationship between client and server arises because of computer programs that run on the respective computers and that have a client-server relationship with each other.

Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.While this specification contains many specific implementation details, these should not be construed as limitations on the scope or on the claims, but rather as descriptions of specific features of particular embodiments of particular inventions. Certain features described in this specification in the context of the various embodiments may also be implemented in combination in a single embodiment. On the other hand, various features described in the context of a single embodiment may be implemented in multiple embodiments or in any suitable subcombination. In addition, one or more features of a claimed combination may in some instances be released from the combination, even if the features are described above as functioning in some combinations or even claimed as a combination, and the claimed combination may be attached to a subcombination or variation of a subcombination to get expelled.

Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Anforderns verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.Also, while activities in the drawings are presented in a particular order, this should not be construed as requesting that such activities be performed in the particular order shown or in a sequential order, or that all activities depicted must be performed to achieve desired results to achieve. Under certain circumstances, multitasking and parallel processing can be beneficial. Moreover, the separation of various system components in the embodiments described above should not be construed as required in all embodiments, and it should be understood that the described program components and systems generally can be integrated together into a single software product or encapsulated into multiple software products.

Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. Die in den Ansprüchen ausgeführten Vorgänge können beispielsweise in einer anderen Reihenfolge ausgeführt werden und erzielen dennoch gewünschte Ergebnisse. Die in den beigefügten Abbildungen dargestellten Verfahren erfordern beispielsweise nicht notwendigerweise die gezeigte Reihenfolge oder sequentielle Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.Thus, certain embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the operations set forth in the claims may be performed in a different order and still achieve desired results. For example, the methods illustrated in the accompanying drawings do not necessarily require the order shown or sequential order to achieve desired results. In certain implementations, multitasking and parallel processing may be beneficial.

Weitere Implementierungen sind in den folgenden Beispielen zusammengefasst:
Beispiel 1: Computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen einer Konfigurationsspezifikation zum Konfigurieren einer Cloud-basierten Bereitstellung, wobei die Konfigurationsspezifikation in einer Spezifikationssprache geschrieben ist und eine Instanziierung der jeweiligen Klassendefinitionen einer oder mehrerer Klassen erfordert, wobei jede Klasse eine jeweilige Daten- oder Funktionskomponente der Cloud-basierten Bereitstellung unter Verwendung einer Gruppe konfigurierbarer Klassenparameter modelliert und die jeweilige Klassendefinition jeder Klasse einen angeforderten Zustand der Daten- oder Funktionskomponenten darstellt, die von der Klasse modelliert werden; Ableiten einer Vielzahl von API-Aufrufen (Application Programming Interface) zur Konfiguration der Cloud-basierten Bereitstellung basierend auf den Klassendefinitionen der einen oder mehreren Klassen; Veranlassen, dass die Vielzahl von API-Aufrufen ausgeführt wird, um die Cloud-basierte Bereitstellung zu konfigurieren; Identifizieren, basierend auf den jeweiligen Klassendefinitionen der einen oder mehreren Klassen einer Vielzahl von Daten- und Funktionskomponenten, die durch die eine oder mehrere Klassen modelliert sind, und eine oder mehrere Abhängigkeits- und Konnektivitätsbeziehungen, die unter der Vielzahl von Daten- oder Funktionskomponenten bestehen; Ableiten eines Blockdiagramms einer Cloud-basierten Umgebung basierend auf der identifizierten Vielzahl von Daten- und Funktionskomponenten und der identifizierten Abhängigkeits- und Konnektivitätsbeziehungen; und Darstellen der Auslöserereignisse für die dynamische Rekonfiguration der Cloud-basierten Umgebung in dem Blockdiagramm.
Other implementations are summarized in the following examples:
Example 1: A computer-implemented method, comprising: receiving a configuration specification to configure a cloud-based deployment, wherein the configuration specification is written in a specification language and requires instantiation of the respective class definitions of one or more classes, each class having a respective data or functional component model the cloud-based deployment using a set of configurable class parameters and the respective class definition of each class represents a requested state of the data or functional components modeled by the class; Deriving a plurality of Application Programming Interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; Causing the plurality of API calls to be executed to configure the cloud-based deployment; Identifying, based on the respective class definitions, the one or more classes of 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; Deriving 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; and presenting the trigger events for the dynamic reconfiguration of the cloud-based environment in the block diagram.

Beispiel 2: Das computerimplementierte Verfahren von Beispiel 1, wobei die eine oder die mehreren Klassen mindestens eine vorhandene Basisklasse und mindestens eine von der vorhandenen Basisklasse erweitere benutzerdefinierte Klasse umfassen, wobei die benutzerdefinierte Klasse entsprechende Klassenparameter der vorhandenen Basisklasse erbt und die benutzerdefinierte Klasse einen Wert von mindestens einem der Klassenparameter, die von der vorhandenen Basisklasse geerbt wurden, modifiziert oder mindestens einen neuen Klassenparameter umfasst, der in der vorhandenen Basisklasse nicht vorhanden ist.Example 2: The computer-implemented method of Example 1, wherein the one or more classes include at least one existing base class and at least one custom class extended from the existing base class, wherein the custom class inherits corresponding class parameters of the existing base class and the custom class has a value of modified at least one of the class parameters inherited from the existing base class, or at least one new class parameter that does not exist in the existing base class.

Beispiel 3: Das computerimplementierte Verfahren von Beispiel 1, wobei die von jeder Klasse modellierte Daten- oder Funktionskomponente Folgendes ist: eine virtuelle Vorrichtung, die eine Cloud-basierte Umgebung unterstützt, ein Dienst, der in der Cloud-basierten Umgebung verwendet wird, eine Softwarerolle, die durch eine installierte Anwendung in der Cloud-basierten Umgebung durchgeführt wird, ein Datenpaket, das Daten enthält, die während der Bereitstellung oder dem Betrieb der Cloud-basierten Umgebung verwendet werden sollen, oder eine Kombination von einem oder mehreren davon.Example 3: The computer-implemented method of Example 1, wherein the data or functional component modeled by each class is: a virtual device that supports a cloud-based environment, a service that is used in the cloud-based environment, a software role performed by an installed application in the cloud-based environment, a data packet containing data to be used during the provisioning or operation of the cloud-based environment, or a combination of one or more thereof.

Beispiel 4: Das computerimplementierte Verfahren von Beispiel 1, wobei die Spezifikationssprache mindestens eine Abhängigkeit zwischen Klassendefinitionen oder eine Konnektivität zwischen Klassendefinitionen unterstützt und wobei eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse eine Bereitstellungsabhängigkeit zwischen jeweiligen Komponenten darstellt, die durch die erste und die zweite Klasse modelliert werden, und wobei eine Wertzuweisung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verknüpft, eine Konnektivität zwischen jeweiligen Komponenten darstellt, die von der ersten Klasse und der zweiten Klasse modelliert werden.Example 4: The computer-implemented method of Example 1, wherein the specification language supports at least one of dependency between class definitions or connectivity between class definitions, and wherein dependency dependency between a first class and a second class represents dependency dependency between respective components passing through the first and second Class, and wherein a value assignment associating an instance of a second class with a class parameter of a first class represents connectivity between respective components modeled by the first class and the second class.

Beispiel 5: Ein computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen einer Konfigurationsspezifikation zum Konfigurieren einer Cloud-basierten Bereitstellung, wobei die Konfigurationsspezifikation in einer Spezifikationssprache geschrieben ist und eine Instanziierung der jeweiligen Klassendefinitionen einer oder mehrerer Klassen erfordert, wobei jede Klasse eine jeweilige Daten- oder Funktionskomponente der Cloud-basierten Bereitstellung unter Verwendung einer Gruppe von konfigurierbaren Klassenparametern modelliert und die jeweilige Klassendefinition jeder Klasse einen angeforderten Zustand der Daten- oder Funktionskomponente darstellt, die von der Klasse modelliert wird; Ableiten einer Vielzahl von API-Aufrufen (Application Programming Interface) zur Konfiguration der Cloud-basierten Bereitstellung basierend auf den Klassendefinitionen der einen oder mehreren Klassen; Veranlassen, dass die Vielzahl von API-Aufrufen ausgeführt wird, um die Cloud-basierte Bereitstellung zu konfigurieren; Identifizieren einer Vielzahl von Cloud-basierten Bereitstellungen, die jeweils gemäß einer jeweiligen Konfigurationsspezifikation ausgeführt wurden, die in der Spezifikationssprache geschrieben ist; Identifizieren mindestens einer Basisklasse, deren Klassendefinition in einer großen Vielzahl von Cloud-basierten Bereitstellungen verwendet wird; Überwachen der jeweiligen Leistung jeder der großen Vielzahl von Cloud-basierten Bereitstellungen; und Berechnen einer Qualitätsmetrik der mindestens einen Basisklasse basierend auf der aggregierten Leistung der großen Vielzahl von Cloud-basierten Bereitstellungen.Example 5: A computer-implemented method, comprising: receiving a configuration specification to configure a cloud-based deployment, wherein the configuration specification is written in a specification language and requires instantiation of the respective class definitions of one or more classes, each class having a respective data or data class Modeling the cloud-based deployment functional component using a set of configurable class parameters and the respective class definition of each class representing a requested state of the data or functional component modeled by the class; Deriving a plurality of Application Programming Interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; Causing the plurality of API calls to be executed to configure the cloud-based deployment; Identifying a plurality of cloud-based deployments, each executed according to a respective configuration specification written in the specification language; Identify at least one base class whose class definition is used in a wide variety of cloud-based deployments; Monitoring the respective performance of each of the large variety of cloud-based deployments; and calculating a quality metric of the at least one base class based on the aggregate performance of the large variety of cloud-based deployments.

Beispiel 6: Das computerimplementierte Verfahren von Beispiel 5, wobei die eine oder die mehreren Klassen mindestens eine vorhandene Basisklasse und mindestens eine von der vorhandenen Basisklasse erweitere benutzerdefinierte Klasse umfassen, wobei die benutzerdefinierte Klasse entsprechende Klassenparameter der vorhandenen Basisklasse erbt und die benutzerdefinierte Klasse einen Wert von mindestens einem der Klassenparameter modifiziert, die von der vorhandenen Basisklasse geerbt wurden, oder mindestens einen neuen Klassenparameter umfasst, der in der vorhandenen Basisklasse nicht vorhanden ist.Example 6: The computer-implemented method of Example 5, wherein the one or more classes include at least one existing base class and at least one custom class extended from the existing base class, wherein the custom class inherits corresponding class parameters of the existing base class and the custom class has a value of modified at least one of the class parameters inherited from the existing base class or at least one new class parameter that does not exist in the existing base class.

Beispiel 7: Das computerimplementierte Verfahren von Beispiel 5, wobei die von jeder Klasse modellierte Daten- oder Funktionskomponente Folgendes ist: eine virtuelle Vorrichtung, die eine Cloud-basierte Umgebung unterstützt, ein Dienst, der in der Cloud-basierten Umgebung verwendet wird, eine Softwarerolle, die von einer installierten Anwendung in der Cloud-basierten Umgebung ausgeführt wird, Paket-Holding-Daten, die während der Bereitstellung oder dem Betrieb der Cloud-basierten Umgebung verwendet werden sollen, oder eine Kombination aus einem oder mehreren davon.Example 7: The computer-implemented method of Example 5, wherein the data or functional component modeled by each class is: a virtual device that supports a cloud-based environment, a service that is used in the cloud-based environment, a software role executed by an installed application in the cloud-based environment, packet-holding data to be used during the provisioning or operation of the cloud-based environment, or a combination of one or more thereof.

Beispiel 8: Das computerimplementierte Verfahren von Beispiel 5, wobei die Spezifikationssprache mindestens eine Abhängigkeit zwischen Klassendefinitionen oder eine Konnektivität zwischen Klassendefinitionen unterstützt und wobei eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse eine Bereitstellungsabhängigkeit zwischen jeweiligen Komponenten darstellt, die durch die erste und die zweite Klasse modelliert sind und wobei eine Wertzuweisung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verbindet, eine Konnektivität zwischen den von der ersten Klasse modellierten Komponenten und der zweiten Klasse darstellt.Example 8: The computer-implemented method of Example 5, wherein the specification language supports at least one of dependency between class definitions or connectivity between class definitions, and wherein dependency dependency between a first class and a second class represents dependency dependency between respective components passing through the first and second Class and wherein a value assignment connecting an instance of a second class to a class parameter of a first class is connectivity between the components modeled from the first class and the second class.

Beispiel 9. Computer-implementiertes Verfahren, das Folgendes umfasst: Empfangen einer Konfigurationsspezifikation zum Konfigurieren einer Cloud-basierten Bereitstellung, wobei die Konfigurationsspezifikation in einer Spezifikationssprache geschrieben ist und eine Instanziierung der jeweiligen Klassendefinitionen einer oder mehrerer Klassen erfordert, wobei jede Klasse eine jeweilige Daten- oder Funktionskomponente der Cloud-basierten Bereitstellung unter Verwendung einer Gruppe von konfigurierbaren Klassenparametern modelliert und die jeweilige Klassendefinition jeder Klasse einen angeforderten Zustand der von der Klasse modellierten Daten oder Funktionskomponenten darstellt; Ableiten einer Vielzahl von API-Aufrufen (Application Programming Interface) zur Konfiguration der Cloud-basierten Bereitstellung basierend auf den Klassendefinitionen der einen oder mehreren Klassen; Veranlassen, dass die Vielzahl von API-Aufrufen ausgeführt wird, um die Cloud-basierte Bereitstellung zu konfigurieren; Speichern jeweiliger Klassendefinitionen mehrerer Kernklassen der Spezifikationssprache, wobei jede Kernklasse einer modularen Komponente einer Cloud-basierten Umgebung entspricht, wobei jede Kernklasse mit zusätzlichen Klassenparametern erweitert werden kann, um die jeweilige modulare Komponente zu konfigurieren; Speichern einer Zuordnung zwischen jeder der Kernklassen und einer entsprechenden Gruppe von API-Aufrufen, wobei die jeweilige Gruppe von API-Aufrufen zum Konfigurieren der modularen Komponente der Kernklasse gemäß den Klassenparametern der Kernklasse zugeordnet ist; und Speichern einer Vielzahl von Protokollen zum Modifizieren der jeweiligen Gruppen von API-Aufrufen, die jeder Kernklasse zugeordnet sind, um eine neue Gruppe von API-Aufrufen für eine neue Klassendefinition zu erhalten, die von der Kernklasse abgeleitet ist.Example 9. A computer-implemented method, comprising: receiving a configuration specification to configure a cloud-based deployment, wherein the configuration specification is written in a specification language and requires instantiation of the respective class definitions of one or more classes, each class having a respective data or function component of the cloud-based deployment using a set of configurable class parameters, and the respective class definition of each class represents a requested state of the class-modeled data or functional components; Deriving a plurality of Application Programming Interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; Causing the plurality of API calls to be executed to configure the cloud-based deployment; Storing respective class definitions of multiple core classes of the specification language, wherein each core class corresponds to a modular component of a cloud-based environment, wherein each core class can be extended with additional class parameters to configure the respective modular component; Storing an association between each of the core classes and a corresponding set of API calls, the respective set of API calls for configuring the modular component being assigned to the core class according to the class parameters of the core class; and storing a plurality of protocols for modifying the respective groups of API calls associated with each core class to obtain a new set of API calls for a new class definition derived from the core class.

Beispiel 10. Das Verfahren von Beispiel 9, wobei das Ableiten der Vielzahl von API-Aufrufen zum Konfigurieren der Cloud-basierten Bereitstellung ferner Folgendes umfasst: Ableiten der Vielzahl von API-Aufrufen basierend auf den jeweiligen Gruppen von API-Aufrufen, die einer oder mehreren der Vielzahl von Kernklassen zugeordnet sind, von denen die eine oder die mehreren Klassen der Konfigurationsspezifikation abgeleitet sind und basierend auf der Vielzahl von Protokollen zum Modifizieren der jeweiligen Gruppen von API-Aufrufen.Example 10. The method of Example 9, wherein deriving the plurality of API calls to configure the cloud-based deployment further comprises: deriving the plurality of API calls based on the respective groups of API calls that one or more are associated with 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.

Beispiel 11: Das Verfahren von Beispiel 9, wobei die Vielzahl von Protokollen ferner Regeln zum Auferlegen einer Anordnung der Gruppen von API-Aufrufen gemäß Abhängigkeits- und Konnektivitätsbeziehungen umfasst, die in Klassendefinitionen spezifiziert sind, die gemäß der Spezifikationssprache geschrieben sind.Example 11: The method of Example 9, wherein the plurality of protocols further comprises rules for imposing an array of the groups of API calls according to dependency and connectivity relationships specified in class definitions written according to the specification language.

Beispiel 12: Das Verfahren von Beispiel 9, wobei die eine oder mehreren Klassen mindestens eine vorhandene Basisklasse und mindestens eine von der vorhandenen Basisklasse erweitere benutzerdefinierte Klasse umfassen, wobei die benutzerdefinierte Klasse entsprechende Klassenparameter der vorhandenen Basisklasse erbt und die benutzerdefinierte Klasse einen Wert von mindestens dem Klassenparameter modifiziert, der von der vorhandenen Basisklasse geerbt wurde, oder mindestens einen neuen Klassenparameter umfasst, der in der vorhandenen Basisklasse nicht vorhanden ist.Example 12: The method of Example 9, wherein the one or more classes include at least one existing base class and at least one custom class extended from the existing base class, wherein the custom class inherits corresponding class parameters of the existing base class and the custom class has a value of at least that Modifies class parameters inherited from the existing base class, or at least includes a new class parameter that does not exist in the existing base class.

Beispiel 13: Das Verfahren von Beispiel 9, wobei die von jeder Klasse modellierte Daten- oder Funktionskomponente eines von Folgendem ist: eine virtuelle Vorrichtung ist, die eine Cloud-basierte Umgebung unterstützt, ein Dienst, der in der Cloud-basierten Umgebung verwendet wird, eine Softwarerolle, die von einer installierten Anwendung in der Cloud-basierten Umgebung ausgeführt wird, Paket-Holding-Daten, die während des Einsatzes oder Betriebes der Cloud-basierten Umgebung verwendet werden sollen, oder eine Kombination aus einem oder mehreren davon.Example 13: The method of Example 9, wherein the data or functional component modeled by each class is one of: a virtual device that supports a cloud-based environment, a service that is used in the cloud-based environment, a software role executed by an installed application in the cloud-based environment, package holding data to be used during the deployment or operation of the cloud-based environment, or a combination of one or more thereof.

Beispiel 14. Das Verfahren von Beispiel 9, wobei die Spezifikationssprache die Abhängigkeit zwischen Klassendefinitionen unterstützt und eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse eine Bereitstellungsabhängigkeit zwischen jeweiligen Komponenten darstellt, die durch die erste und die zweite Klasse modelliert sind.Example 14. The method of Example 9, wherein the specification language supports the dependency between class definitions and a dependency dependency between a first class and a second class represents a dependency dependency between respective components modeled by the first and second classes.

Beispiel 15: Das Verfahren von Beispiel 9, wobei die Spezifikationssprache die Konnektivität zwischen Klassendefinitionen unterstützt und eine Wertzuweisung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verknüpft, eine Konnektivität zwischen jeweiligen Komponenten darstellt, die von der ersten Klasse und der zweiten Klasse modelliert sind.Example 15: The method of Example 9, wherein the specification language supports connectivity between class definitions and a value assignment associating an instance of a second class with a class parameter of a first class represents connectivity between respective components of the first class and the second Class are modeled.

Beispiel 16: System, das Folgendes umfasst: einen oder mehrere Prozessoren; und einen Speicher mit darauf gespeicherten Befehlen, wobei die Befehle, wenn sie durch den einen oder die mehreren verfahrenoren ausgeführt werden, die verfahrenoren veranlassen, Operationen durchzuführen, das Folgendes umfasst: Empfangen einer Konfigurationsspezifikationzum Konfigurieren einer Cloud-basierten Bereitstellung, wobei die Konfigurationsspezifikation in eine Spezifikationssprache geschrieben wird und eine Instanziierung der jeweiligen Klassendefinitionen einer oder mehrerer Klassen erfordert, wobei jede Klasse eine jeweilige Daten- oder Funktionskomponente der Cloud-basierten Implementierung unter Verwendung von modelliert Eine Gruppe von konfigurierbaren Klassenparametern und die jeweilige Klassendefinition jeder Klasse, die einen angeforderten Zustand der von der Klasse modellierten Daten oder Funktionskomponenten darstellt; Ableiten einer Vielzahl von API-Aufrufe (Application Programming Interface) zur Konfiguration der Cloud-basierten Bereitstellung basierend auf den Klassendefinitionen der einen oder mehreren Klassen; Ausführen der Vielzahl von API-Aufrufen, um die Cloud-basierte Bereitstellung zu konfigurieren; Identifizieren, basierend auf den jeweiligen Klassendefinitionen der einen oder mehreren Klassen, einer Vielzahl von Daten und Funktionskomponenten, die durch die eine oder mehrere Klassen modelliert sind und eine oder mehrere Abhängigkeits- und Konnektivitätsbeziehungen, die aus der Vielzahl von Daten oder Funktionskomponenten bestehen; Ableiten eines Blockdiagramms einer Cloud-basierten Umgebung basierend auf der identifizierten Vielzahl von Daten- und Funktionskomponenten und der identifizierten Abhängigkeits- und Konnektivitätsbeziehungen; Und Triggerereignisse für die dynamische Rekonfiguration der Cloud-basierten Umgebung im Blockdiagramm darstellen.Example 16: A system comprising: one or more processors; and a memory having instructions stored thereon, the instructions, when executed by the one or more agents, causing the operators to perform operations comprising: receiving a configuration specification for configuring a cloud-based deployment, the configuration specification being included in a Specification language is written and requires an instantiation of the respective class definitions of one or more classes, each class a respective data or Cloud Based Implementation Function Component Using Modeled A set of configurable class parameters and the respective class definition of each class representing a requested state of the data or functional components modeled by the class; Deriving a plurality of Application Programming Interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; Executing the plurality of API calls to configure the cloud-based deployment; Identifying, based on the respective class definitions of the one or more classes, a plurality of data and functional components modeled by the one or more classes and one or more dependency and connectivity relationships consisting of the plurality of data or functional components; Deriving 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; And show trigger events for the dynamic reconfiguration of the cloud-based environment in the block diagram.

Beispiel 17: Das System von Beispiel 16, wobei die eine oder die mehreren Klassen mindestens eine vorhandene Basisklasse und mindestens eine von der vorhandenen Basisklasse erweitere benutzerdefinierte Klasse umfassen, wobei die benutzerdefinierte Klasse die jeweiligen Klassenparameter der vorhandenen Basisklasse erbt und die benutzerdefinierte Klasse einen Wert von mindestens einem der der Klassenparameter modifiziert, die aus vorhandenen Basisklasse geerbt werden, oder mindestens einen neuen Klassenparameter umfasst, der in der vorhandenen Basisklasse nicht vorhanden ist.Example 17: The system of Example 16, wherein the one or more classes comprise at least one existing base class and at least one custom class extended from the existing base class, wherein the custom class inherits the respective class parameters of the existing base class and the custom class has a value of at least one of the class parameters inherited from an existing base class, or at least one new class parameter that does not exist in the existing base class.

Beispiel 18. Das System von Beispiel 16, wobei die von jeder Klasse modellierte Daten- oder Funktionskomponente eines von Folgendem ist: eine virtuelle Vorrichtung, die eine Cloud-basierte Umgebung unterstützt, ein Dienst, der in der Cloud-basierten Umgebung verwendet wird, eine Softwarerolle, die von einer installierten Anwendung in der Cloud-basierten Umgebung ausgeführt wird, ein Datenpaket, das Daten speichert, die während der Bereitstellung oder des Betriebs der Cloud-basierten Umgebung verwendet werden sollen, oder eine Kombination aus einem oder mehreren davon.Example 18. The system of Example 16, wherein the data or functional component modeled by each class is one of: a virtual device that supports a cloud-based environment, a service that is used in the cloud-based environment A software role that is executed by an installed application in the cloud-based environment, a data packet that stores data to be used during the provisioning or operation of the cloud-based environment, or a combination of one or more thereof.

Beispiel 19. Das System von Beispiel 16, wobei die Spezifikationssprache mindestens eine Abhängigkeit zwischen Klassendefinitionen und eine Konnektivität zwischen Klassendefinitionen unterstützt und wobei eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse eine Bereitstellungsabhängigkeit zwischen jeweiligen Komponenten darstellt, die durch die erste und die zweite Klasse modelliert werden, und wobei eine Wertzuweisung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verknüpft, eine Konnektivität zwischen jeweiligen Komponenten darstellt, die von der ersten Klasse und der zweiten Klasse modelliert werden.Example 19. The system of Example 16, wherein the specification language supports at least one of a dependency between class definitions and a connectivity between class definitions, and wherein a dependency dependency between a first class and a second class represents a dependency dependency between respective components represented by the first and second classes and wherein a value assignment associating an instance of a second class with a class parameter of a first class represents connectivity between respective components modeled by the first class and the second class.

Beispiel 20. System, das Folgendes umfasst: einen oder mehrere Prozessoren; und einen Speicher mit darauf gespeicherten Befehlen, wobei die Befehle, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, die Prozessoren veranlassen, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Konfigurationsspezifikation zum Konfigurieren einer Cloud-basierten Bereitstellung, wobei die Konfigurationsspezifikation in einer Spezifikationssprache geschrieben ist und eine Instanziierung der jeweiligen Klassendefinitionen einer oder mehrerer Klassen erfordert, wobei jede Klasse eine jeweilige Daten- oder Funktionskomponente der Cloud-basierten Implementierung unter Verwendung einer Gruppe von konfigurierbaren Klassenparametern modelliert und die jeweilige Klassendefinition jeder Klasse einen angeforderten Zustand der Daten- oder Funktionskomponenten darstellt, die von der Klasse modelliert werden; Ableiten einer Vielzahl von API-Aufrufen (Application Programming Interface) zur Konfiguration der Cloud-basierten Bereitstellung basierend auf den Klassendefinitionen der einen oder mehreren Klassen; Veranlassen, dass die Vielzahl von API-Aufrufen ausgeführt wird, um die Cloud-basierte Bereitstellung zu konfigurieren; Identifizieren einer Vielzahl von Cloud-basierten Bereitstellungen, die jeweils gemäß einer jeweiligen Konfigurationsspezifikation ausgeführt wurden, die in der Spezifikationssprache geschrieben ist; Identifizieren mindestens einer Basisklasse, deren Klassendefinition in der großen Vielzahl von Cloud-basierten Bereitstellungen verwendet wird; Überwachen der jeweiligen Leistung jeder der großen Vielzahl von Cloud-basierten Bereitstellungen; und Berechnen einer Qualitätsmetrik der mindestens einen Basisklasse basierend auf der aggregierten Leistung der großen Vielzahl von Cloud-basierten Bereitstellungen.Example 20. A system comprising: one or more processors; and a memory having instructions stored thereon, the instructions, when executed by the one or more processors, causing the processors to perform operations comprising: receiving a configuration specification to configure a cloud-based deployment, wherein the configuration specification in a specification language and requires instantiation of the respective class definitions of one or more classes, each class modeling a respective data or function component of the cloud-based implementation using a set of configurable class parameters and the respective class definition of each class representing a requested state of the data or functional components modeled by the class; Deriving a plurality of Application Programming Interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; Causing the plurality of API calls to be executed to configure the cloud-based deployment; Identifying a plurality of cloud-based deployments, each executed according to a respective configuration specification written in the specification language; Identify at least one base class whose class definition is used in the wide variety of cloud-based deployments; Monitoring the respective performance of each of the large variety of cloud-based deployments; and calculating a quality metric of the at least one base class based on the aggregate performance of the large variety of cloud-based deployments.

Beispiel 21. Das System von Beispiel 20, wobei die eine oder mehreren Klassen mindestens eine vorhandene Basisklasse und mindestens eine von der vorhandenen Basisklasse erweitere benutzerdefinierte Klasse umfassen, wobei die benutzerdefinierte Klasse entsprechende Klassenparameter der vorhandenen Basisklasse erbt und die benutzerdefinierte Klasse einen Wert von mindestens einem der Klassenparameter modifiziert, die von der vorhandenen Basisklasse geerbt wurden, oder mindestens einen neuen Klassenparameter umfasst, der in der vorhandenen Basisklasse nicht vorhanden ist.Example 21. The system of Example 20, wherein the one or more classes include at least one existing base class and at least one custom class extended from the existing base class, wherein the custom class inherits corresponding class parameters of the existing base class and the custom class has a value of at least one modifies the class parameter inherited from the existing base class, or at least includes a new class parameter that does not exist in the existing base class.

Beispiel 22: Das System von Beispiel 20, wobei die von jeder Klasse modellierte Daten- oder Funktionskomponente eines von Folgendem ist: eine virtuelle Vorrichtung, die eine Cloud-basierte Umgebung unterstützt, ein Dienst, der in der Cloud-basierten Umgebung verwendet wird, eine Softwarerolle, die von einer installierten Anwendung in der Cloud-basierten Umgebung ausgeführt wird, ein Datenpaket, das Daten speichert, die während der Bereitstellung oder des Betriebs der Cloud-basierten Umgebung verwendet werden sollen, oder eine Kombination aus einem oder mehreren davon. Example 22: The system of Example 20, wherein the data or functional component modeled by each class is one of: a virtual device that supports a cloud-based environment, a service that is used in the cloud-based environment A software role that is executed by an installed application in the cloud-based environment, a data packet that stores data to be used during the provisioning or operation of the cloud-based environment, or a combination of one or more thereof.

Beispiel 23: Das System von Beispiel 20, wobei die Spezifikationssprache mindestens eine Abhängigkeit zwischen Klassendefinitionen und eine Konnektivität zwischen Klassendefinitionen unterstützt und wobei eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse eine Bereitstellungsabhängigkeit zwischen jeweiligen Komponenten darstellt, die durch die erste und die zweite Klasse modelliert werden, und wobei eine Wertzuweisung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verknüpft, eine Konnektivität zwischen jeweiligen Komponenten darstellt, die von der ersten Klasse und der zweiten Klasse modelliert werden.Example 23: The system of Example 20, wherein the specification language supports at least one of a dependency between class definitions and a connectivity between class definitions, and wherein a dependency dependency between a first class and a second class represents a dependency dependency between respective components represented by the first and second classes and wherein a value assignment associating an instance of a second class with a class parameter of a first class represents connectivity between respective components modeled by the first class and the second class.

Beispiel 24. Ein nicht-transitorisches computerlesbares Medium mit darauf gespeicherten Befehlen, wobei die Befehle, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, die Prozessoren veranlassen, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Konfigurationsspezifikation zum Konfigurieren einer Cloud-basierten Bereitstellung, wobei die Konfigurationsspezifikation in einer Spezifikationssprache geschrieben ist und eine Instanziierung der jeweiligen Klassendefinitionen einer oder mehrerer Klassen erfordert, wobei jede Klasse eine jeweilige Daten- oder Funktionskomponente der Cloud-basierten Implementierung unter Verwendung einer Gruppe von konfigurierbaren Klassenparametern modelliert und die jeweilige Klassendefinition jeder Klasse einen angeforderten Zustand der von der Klasse modellierten Daten- oder Funktionskomponenten darstellt; Ableiten einer Vielzahl von API-Aufrufen (Application Programming Interface) zur Konfiguration der Cloud-basierten Bereitstellung basierend auf den Klassendefinitionen der einen oder mehreren Klassen; Veranlassen, dass die Vielzahl von API-Aufrufen ausgeführt wird, um die Cloud-basierte Bereitstellung zu konfigurieren; Speichern jeweiliger Klassendefinitionen einer Vielzahl von Kernklassen der Spezifikationssprache, wobei jede Kernklasse einer modularen Komponente einer Cloud-basierten Umgebung entspricht, wobei jede Kernklasse mit zusätzlichen Klassenparametern erweitert werden kann, um die jeweilige modulare Komponente zu konfigurieren; Speichern einer Zuordnung zwischen jeder der Kernklassen und einer entsprechenden Gruppe von API-Aufrufen, wobei die jeweilige Gruppe von API-Aufrufen zum Konfigurieren der modularen Komponente dient, die der Kernklasse zugeordnet ist, gemäß den Klassenparametern der Kernklasse; und Speichern einer Vielzahl von Protokollen zum Modifizieren der jeweiligen Gruppen von API-Aufrufen, die jeder Kernklasse zugeordnet sind, um eine neue Gruppe von API-Aufrufen für eine neue Klassendefinition zu erhalten, die von der Kernklasse abgeleitet ist.Example 24. A non-transitory computer-readable medium having instructions stored thereon, the instructions, when executed by one or more processors, causing the processors to perform operations comprising: receiving a configuration specification to configure a cloud-based deployment, wherein the configuration specification is written in a specification language and requires instantiation of the respective class definitions of one or more classes, each class modeling a respective data or function component of the cloud-based implementation using a set of configurable class parameters, and requesting the respective class definition of each class State the data or function components modeled by the class; Deriving a plurality of Application Programming Interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; Causing the plurality of API calls to be executed to configure the cloud-based deployment; Storing respective class definitions of a plurality of specification-language core classes, each core class corresponding to a modular component of a cloud-based environment, wherein each core class may be augmented with additional class parameters to configure the respective modular component; Storing an association between each of the core classes and a corresponding set of API calls, the respective set of API calls serving to configure the modular component associated with the core class according to the class parameters of the core class; and storing a plurality of protocols for modifying the respective groups of API calls associated with each core class to obtain a new set of API calls for a new class definition derived from the core class.

Beispiel 25: Das computerlesbare Medium von Beispiel 24, wobei das Ableiten der Vielzahl von API-Aufrufen zum Konfigurieren der Cloud-basierten Bereitstellung ferner Folgendes umfasst: Ableiten der Vielzahl von API-Aufrufen basierend auf den jeweiligen Gruppen von API-Aufrufen, die einer oder mehreren der Vielzahl von Kernklassen zugeordnet sind, von denen die eine oder die mehreren Klassen der Konfigurationsspezifikation abgeleitet sind, und basierend auf der Vielzahl von Protokollen zum Modifizieren der jeweiligen Gruppen von API-Aufrufen.Example 25: The computer-readable medium of Example 24, wherein deriving the plurality of API calls to configure the cloud-based deployment further comprises: deriving the plurality of API calls based on the respective groups of API calls that are one or; associated with a plurality 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.

Beispiel 26: Das computerlesbare Medium von Beispiel 24, wobei die Vielzahl von Protokollen des Weiteren Regeln zum Auferlegen einer Anordnung der Gruppen von API-Aufrufen gemäß Abhängigkeits- und Konnektivitätsbeziehungen umfasst, die in Klassendefinitionen spezifiziert sind, die gemäß der Spezifikationssprache geschrieben sind.Example 26: The computer-readable medium of Example 24, wherein the plurality of protocols further comprises rules for imposing an array of the groups of API calls according to dependency and connectivity relationships specified in class definitions written according to the specification language.

Beispiel 27: Das computerlesbare Medium von Beispiel 24, wobei die eine oder mehreren Klassen mindestens eine vorhandene Basisklasse und mindestens eine von der vorhandenen Basisklasse erweitere benutzerdefinierte Klasse umfassen, wobei die benutzerdefinierte Klasse entsprechende Klassenparameter der vorhandenen Basisklasse erbt und die benutzerdefinierte Klasse einen Wert von mindestens einem des Klassenparameter modifiziert, die von der vorhandenen Basisklasse geerbt wurden, oder mindestens einen neuen Klassenparameter umfasst, der in der vorhandenen Basisklasse nicht vorhanden ist.Example 27: The computer-readable medium of Example 24, wherein the one or more classes include at least one existing base class and at least one custom class extended from the existing base class, wherein the custom class inherits corresponding class parameters of the existing base class and the custom class has a value of at least one of the class parameters inherited from the existing base class, or at least one new class parameter that does not exist in the existing base class.

Beispiel 28: Das computerlesbare Medium von Beispiel 24, wobei die von jeder Klasse modellierte Daten- oder Funktionskomponente eines von Folgendem ist: eine virtuelle Vorrichtung, die eine Cloud-basierte Umgebung unterstützt, ein Dienst, der in der Cloud-basierten Umgebung verwendet wird, eine Softwarerolle, die von einer installierten Anwendung in der Cloud-basierten Umgebung ausgeführt wird, ein Datenpaket, das Daten speichert, die während der Bereitstellung oder des Betriebs der Cloud-basierten Umgebung verwendet werden sollen, oder eine Kombination aus einem oder mehreren davon.Example 28: The computer-readable medium of Example 24, wherein the data or functional component modeled by each class is one of: a virtual device that supports a cloud-based environment, a service that is used in the cloud-based environment, a software role executed by an installed application in the cloud-based environment, a data packet storing data to be used during deployment or operation of the cloud-based environment, or a combination of one or more thereof.

Beispiel 29: Das computerlesbare Medium von Beispiel 24, wobei die Spezifikationssprache die Abhängigkeit zwischen Klassendefinitionen unterstützt und eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse eine Bereitstellungsabhängigkeit zwischen jeweiligen Komponenten, die durch die erste und die zweite Klasse modelliert werden, darstellt.Example 29: The computer-readable medium of Example 24, wherein the specification language supports dependency between class definitions and a dependency dependency between a first class and a second class depicts deployment dependency between respective components modeled by the first and second classes.

Beispiel 30: Das computerlesbare Medium von Beispiel 24, wobei die Spezifikationssprache die Konnektivität zwischen Klassendefinitionen unterstützt und eine Wertzuweisung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verknüpft, eine Konnektivität zwischen jeweiligen Komponenten darstellt, die von der ersten Klasse und der zweiten Klasse modelliert werden.Example 30: The computer-readable medium of Example 24, wherein the specification language supports connectivity between class definitions and a value assignment associating an instance of a second class with a class parameter of a first class represents connectivity between respective components selected by the first class and the first class class second class are modeled.

Claims (7)

Nicht-transitorisches computerlesbares Medium mit darauf gespeicherten Befehlen, wobei die Anweisungen, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, die Prozessoren dazu veranlasst, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Konfigurationsspezifikation zum Konfigurieren einer Cloud-basierten Bereitstellung, wobei die Konfigurationsspezifikation in einer Spezifikationssprache geschrieben ist und eine Instanziierung der jeweiligen Klassendefinitionen einer oder mehrerer Klassen erfordert, wobei jede Klasse eine entsprechende Daten- oder Funktionskomponente der Cloud-basierten Implementierung unter Verwendung einer Gruppe konfigurierbarer Klassenparameter modelliert und die jeweilige Klassendefinition jeder Klasse einen angeforderten Zustand der Daten- oder Funktionskomponenten, die von der Klasse modelliert werden, darstellt; Ableiten einer Vielzahl von Anwendungsprogrammierungsschnittstellen-(API)Aufrufen zum Konfigurieren der Cloud-basierten Bereitstellung basierend auf den Klassendefinitionen der einen oder mehreren Klassen; Veranlassen, dass die Vielzahl von API-Aufrufen ausgeführt wird, um die Cloud-basierte Bereitstellung zu konfigurieren; Speichern jeweiliger Klassendefinitionen einer Vielzahl von Kernklassen der Spezifikationssprache, wobei jede Kernklasse einer modularen Komponente einer Cloud-basierten Umgebung entspricht, wobei jede Kernklasse mit zusätzlichen Klassenparametern erweitert werden kann, um die jeweilige modulare Komponente zu konfigurieren; Speichern einer Abbildung zwischen jeder der Kernklassen und einer jeweiligen Gruppe von API-Aufrufen, wobei die jeweilige Gruppe von API-Aufrufen zum Konfigurieren der modularen Komponente dient, die der Kernklasse zugeordnet ist, gemäß den Klassenparametern der Kernklasse; und Speichern einer Vielzahl von Protokollen zum Modifizieren der jeweiligen Gruppen von API-Aufrufen, die jeder Kernklasse zugeordnet sind, um eine neue Gruppe von API-Aufrufen für eine neue Klassendefinition zu erhalten, die von der Kernklasse abgeleitet ist.A non-transitory computer-readable medium having instructions stored thereon, the instructions, when executed by one or more processors, causing the processors to perform operations comprising: Receiving a configuration specification to configure a cloud-based deployment, wherein the configuration specification is written in a specification language and requires instantiation of the respective class definitions of one or more classes, each class configuring a corresponding data or function component of the cloud-based implementation using a group Class parameters and the respective class definition of each class represents a requested state of the data or function components modeled by the class; Deriving a plurality of application programming interface (API) calls to configure the cloud-based deployment based on the class definitions of the one or more classes; Causing the plurality of API calls to be executed to configure the cloud-based deployment; Storing respective class definitions of a plurality of specification-language core classes, each core class corresponding to a modular component of a cloud-based environment, wherein each core class may be augmented with additional class parameters to configure the respective modular component; Storing a mapping between each of the core classes and a respective set of API calls, the respective set of API calls for configuring the modular component associated with the core class according to the class parameters of the core class; and Storing a plurality of protocols for modifying the respective groups of API calls associated with each core class to obtain a new set of API calls for a new class definition derived from the core class. Computerlesbares Medium nach Anspruch 1, wobei das Ableiten der Vielzahl von API-Aufrufen zur Konfiguration der Cloud-basierten Bereitstellung Folgendes umfasst: Ableiten der Vielzahl von API-Aufrufen basierend auf den jeweiligen Gruppen von API-Aufrufen, die einer oder mehreren der Vielzahl von Kernklassen zugeordnet sind, von denen die eine oder mehreren Klassen der Konfigurationsspezifikation abgeleitet sind, und basierend auf der Vielzahl von Protokollen zum Modifizieren der jeweiligen Gruppen von API-Aufrufen.The computer-readable medium of claim 1, wherein deriving the plurality of API calls for configuring the cloud-based deployment comprises: Deriving 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. Computerlesbares Medium nach Anspruch 1, wobei: die Vielzahl von Protokollen ferner Regeln zum Auferlegen einer Anordnung der Gruppen von API-Aufrufen gemäß Abhängigkeits- und Konnektivitätsbeziehungen umfasst, die in Klassendefinitionen spezifiziert sind, die gemäß der Spezifikationssprache geschrieben sind.The computer-readable medium of claim 1, wherein: the plurality of protocols further comprise rules for imposing an array of the groups of API calls according to dependency and connectivity relationships specified in class definitions written according to the specification language. Computerlesbares Medium nach Anspruch 1, wobei: die eine oder die mehreren Klassen mindestens eine bestehende Basisklasse und mindestens eine von der vorhandenen Basisklasse erweiterte benutzerdefinierte Klasse umfassen, die benutzerdefinierte Klasse entsprechende Klassenparameter der vorhandenen Basisklasse erbt und die benutzerdefinierte Klasse einen Wert mindestens eines Klassenparameters modifiziert, der aus der vorhandenen Basisklasse geerbt wurde, oder mindestens einen neuen Klassenparameter umfasst, der in der vorhandenen Basisklasse nicht vorhanden ist.The computer-readable medium of claim 1, wherein: the one or more classes comprise at least one existing base class and at least one custom class extended by the existing base class, the custom class inherits corresponding class parameters from the existing base class and the custom class modifies a value of at least one class parameter inherited from the existing base class or at least one new class parameter that does not exist in the existing base class. Computerlesbares Medium nach Anspruch 1, wobei: die Daten- oder Funktionskomponente, die von jeder Klasse modelliert wird, eines von Folgendem ist: eine virtuelle Einheit, die eine Cloud-basierte Umgebung unterstützt, ein Dienst, der in der Cloud-basierten Umgebung verwendet wird, eine Softwarerolle, die von einer installierten Anwendung in der Cloud-basierten Umgebung ausgeführt wird, ein Datenpaket, das Daten speichert, die während der Bereitstellung oder des Betriebes der Cloud-basierten Umgebung verwendet werden sollen, oder eine Kombination von einem oder mehreren davon.The computer-readable medium of claim 1, wherein: the data or function component modeled by each class is one of the following: a virtual appliance that supports a cloud-based environment, a service that is used in the cloud-based environment, a software role that is executed by an installed application in the cloud-based environment, a data package that stores data that during the provisioning or operation of the cloud-based environment, or a combination of one or more of them. Computerlesbares Medium nach Anspruch 1, wobei: die Spezifikationssprache die Abhängigkeit zwischen Klassendefinitionen unterstützt und eine Definitionsabhängigkeit zwischen einer ersten Klasse und einer zweiten Klasse eine Bereitstellungsabhängigkeit zwischen jeweiligen Komponenten darstellt, die von der ersten und der zweiten Klasse modelliert werden.The computer-readable medium of claim 1, wherein: the specification language supports dependency between class definitions and a dependency dependency between a first class and a second class represents staging dependency between respective components modeled by the first and second classes. Computerlesbares Medium nach Anspruch 1, wobei: die Spezifikationssprache die Konnektivität zwischen Klassendefinitionen unterstützt und eine Wertzuweisung, die eine Instanz einer zweiten Klasse mit einem Klassenparameter einer ersten Klasse verknüpft, eine Konnektivität zwischen jeweiligen Komponenten darstellt, die von der ersten Klasse und der zweiten Klasse modelliert werden.The computer-readable medium of claim 1, wherein: the specification language supports connectivity between class definitions, and a value assignment associating an instance of a second class with a class parameter of a first class represents connectivity between respective components modeled by the first class and the second class.
DE202016008047.5U 2016-10-26 2016-10-26 High-level language for specifying configurations of cloud-based deployments Active DE202016008047U1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE202016008047.5U DE202016008047U1 (en) 2016-10-26 2016-10-26 High-level language for specifying configurations of cloud-based deployments

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE202016008047.5U DE202016008047U1 (en) 2016-10-26 2016-10-26 High-level language for specifying configurations of cloud-based deployments

Publications (1)

Publication Number Publication Date
DE202016008047U1 true DE202016008047U1 (en) 2017-01-26

Family

ID=58054671

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202016008047.5U Active DE202016008047U1 (en) 2016-10-26 2016-10-26 High-level language for specifying configurations of cloud-based deployments

Country Status (1)

Country Link
DE (1) DE202016008047U1 (en)

Similar Documents

Publication Publication Date Title
US10241770B2 (en) Cloud-based deployment using object-oriented classes
US10620944B2 (en) Cloud-based decision management platform
DE112015004562B4 (en) Context-based cloud system for the assurance of security
US8918454B2 (en) Managing rule sets as web services
DE102013207608B4 (en) Instrument software applications for their configuration
DE112012000444B4 (en) Method, system and computer program product for determining an optimal data processing environment for executing an image and method for implementing a corresponding system
US9122841B2 (en) Providing remote application logs for cloud applications
DE112012003316T5 (en) Dynamically acquiring computing resources in a networked computing environment
DE102016103713A1 (en) Detection of virtual machine units based on a catalog
DE102020104871A1 (en) HIGH PERFORMANCE COMPUTE INFRASTRUCTURE AS A SERVICE
DE102021130957A1 (en) RECOMMENDATIONS FOR THE STABILITY OF SOFTWARE UPDATES
CN110546615B (en) Super dynamic JAVA management extension
Rahman et al. A testbed for collecting QoS data of cloud-based analytic services
Dillenseger Clif, a framework based on fractal for flexible, distributed load testing
DE202016008047U1 (en) High-level language for specifying configurations of cloud-based deployments
DE112021005848T5 (en) COORDINATING REQUESTS TRANSFORMED INTO A SCALABLE APPLICATION
Ragusa et al. Running business applications in the Cloud: a use case perspective
DE112021006167T5 (en) AUTOMATIC ADJUSTMENT OF DATA ACCESS POLICIES IN DATA ANALYTICS
Makki et al. Scalable and manageable customization of workflows in multi-tenant saas offerings
Borges et al. Automatic services instantiation based on a process specification
US20230315789A1 (en) Configuration-driven query composition for graph data structures for an extensibility platform
Ribeiro A Dashboard for Decision Support in Self-Adaptive Cloud Applications
Stefanidis et al. MELODIC: Selection and Integration of Open Source to Build an Autonomic Cross-Cloud Deployment Platform
Nikolaidou et al. Facilitating enterprise information system engineering through a UML 2.0 profile: A case study