-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft die elektrische, elektronische und Computertechnik und genauer Cloud-Computing und Ähnliches.
-
Hintergrund der Erfindung
-
Clouds mit Infrastruktur als Dienst (Infrastructure-as-a-Service (IaaS)) und Plattformen als Dienst (Platform-as-a-Service (PaaS)) bieten grundlegende Fähigkeiten für eine schnelle Bereitstellung (Provisionierung) von Images, wobei Images verborgen (stashed) werden, so lange sie nicht verwendet werden, sowie möglicherweise direkte (live) oder quasi-direkte Veränderungen an den Ressourcen, die Images zugewiesen sind. Dies betrifft jedoch nicht unmittelbar die Anwendungsschicht (hierin austauschbar als die Arbeitslastenschicht bezeichnet), d. h. auf der Anwendungsschicht sind nach wie vor Menschen erforderlich, um die Auslastung zu beobachten und zu entscheiden, wann und wie es möglich ist, die Infrastruktur für eine Anwendung zu erweitern oder zu verringern. Ausnahmen stellen Anwendungen dar, die nur für eine relativ kurze Zeit bereitgestellt und dann vollständig entfernt werden, wie Entwicklungs- und Testanwendungen. Tatsächlich handelt es sich dabei um die verbreitetsten Anwendungen, die derzeit für das Ausführen auf IaaS- und PaaS-Clouds in Betracht kommen.
-
Software-as-a-Service(SaaS)-Clouds arbeiten auf der Anwendungsschicht, sind jedoch sehr spezifisch für bestimmte Anwendungstypen konzipiert, wie beispielsweise die Lösung IBM LotusLive (Marke der International Business Machines Corporation, Armonk, New York, USA) oder die von Salesforce_Punkt_com, Inc., aus San Francisco, Kalifornien, USA, erhältlichen („.” wurde durch „_Punkt_” ersetzt, um das Einfügen von durch Browser ausführbarem Code zu vermeiden).
-
Es gibt zudem übergeordnete Clouds, die erfordern, dass Anwendungen in speziellen neuen Programmiermodellen und -sprachen codiert sind, wie beispielsweise Amazon Web Services (Marke von Amazon Web Services LLC, Seattle, Washington, USA), Microsoft Azure (Marke der Microsoft Corporation, Redmond, Washington, USA) und Hadoop (erhältlich von der Apache Software Foundation).
-
Kurzdarstellung der Erfindung
-
Grundgedanken der Erfindung stellen Techniken für einen Anwendungsressourcenverwalter über eine Cloud bereit. In einem Aspekt beinhaltet ein Verfahren den Schritt eines Erhaltens einer Projektion kommenden Bedarfs für eine Anwendung, die in einer Cloud ausgeführt wird, durch einen Anwendungsressourcenverwalter. Die Cloud enthält mindestens eines von einer Infrastructure-as-a-Service-Cloud und einer Platform-as-a-Service-Cloud. Zusätzliche Schritte beinhalten ein Feststellen durch den Anwendungsressourcenverwalter auf der Grundlage der Projektion, dass Ressourcen der Cloud, die der Anwendung zugesprochen sind, entweder erweitert oder verringert werden müssen; und als Reaktion auf den Feststellungsschritt Ausführen entweder eines Erweiterns oder Verringerns der Ressourcen der Cloud, die der Anwendung zugesprochen sind.
-
In einem weiteren Aspekt enthält ein beispielhaftes System eine Cloud; die Cloud enthält mindestens eines von einer Infrastructure-as-a-Service-Cloud und einer Platform-as-a-Service-Cloud. Ebenfalls im System enthalten sind mindestens eine Anwendung, die in der Cloud ausgeführt wird, und ein Anwendungsressourcenverwalter. Der Anwendungsressourcenverwalter erhält eine Projektion kommenden Bedarfs für die Anwendung; stellt auf der Grundlage der Projektion fest, dass Ressourcen der Cloud, die der Anwendung zugesprochen sind, entweder erweitert oder verringert werden müssen; und führt als Reaktion auf das Feststellen entweder ein Erweitern oder ein Verringern der Ressourcen der Cloud durch, die der Anwendung zugesprochen sind.
-
Das hierin verwendete „Erleichtern” einer Aktion schließt ein, die Aktion durchzuführen, die Aktion einfacher zu gestalten, dazu beizutragen, die Aktion auszuführen, oder zu veranlassen, dass die Aktion durchgeführt wird. Somit können in beispielhafter Weise und ohne Einschränkung auf einem Prozessor ausgeführte Anweisungen eine Aktion erleichtern, die durch Anweisungen ausgeführt wird, die auf einem entfernt angeordneten Prozessor ausgeführt werden, indem geeignete Daten oder Befehle gesendet werden, um zu veranlassen oder dazu beizutragen, die Aktion durchzuführen. Um Zweifel zu vermeiden: Wenn ein Aktor eine Aktion durch etwas anderes als Durchführen der Aktion erleichtert, wird die Aktion nichtsdestoweniger durch eine Entität oder Kombination von Entitäten durchgeführt.
-
Eine oder mehrere Ausführungsformen der Erfindung oder Elemente davon können in der Form eines Computerprodukts realisiert werden, wozu ein computerlesbares Speichermedium mit durch Computer verwendbarem Programmcode zum Durchführen der angegebenen Verfahrensschritte zählt. Des Weiteren können eine oder mehrere Ausführungsformen der Erfindung oder Elemente davon in der Form eines Systems (oder einer Vorrichtung) realisiert werden, die einen Speicher und mindestens einen Prozessor enthält, der mit dem Speicher verbunden und in der Lage ist, beispielhafte Verfahrensschritte durchzuführen. Darüber hinaus können in einem weiteren Aspekt eine oder mehrere Ausführungsformen der Erfindung oder Elemente davon in der Form eines Mittels zum Ausführen eines oder mehrerer hierin beschriebener Verfahrensschritte realisiert werden; das Mittel kann einschließen (i) Hardware-Modul(e) (ii) Software-Modul(e) oder (iii) eine Kombination aus Hardware- und Software-Modulen; jedes von (i) bis (iii) realisiert die hierin dargelegten spezifischen Techniken, und die Software-Module sind in einem computerlesbaren Speichermedium (oder mehreren solchen Medien) gespeichert.
-
Techniken der vorliegenden Erfindung können wesentliche vorteilhafte technische Wirkungen bereitstellen. Zum Beispiel können eine oder mehrere Ausführungsformen einen oder mehrere der folgenden Vorteile bereitstellen:
- • kürzere Einrichtzeiten, wenn sich Anforderungen an eine Anwendung und ihre zugrundeliegende IT-Infrastruktur ändern
- • höhere Zuverlässigkeit
- • Vermeiden von Energieverschwendung bei nicht ausgelasteten Prozessoren, da die Menge an Ressourcen einfach erhöht und/oder verringert werden kann
-
Diese und weitere Merkmale und Vorteile der vorliegenden Erfindung werden anhand der folgenden detaillierten Beschreibung veranschaulichender Ausführungsformen davon ersichtlich, die in Verbindung mit den begleitenden Zeichnungen zu lesen ist.
-
Kurzbeschreibung der Zeichnungen
-
1 stellt einen Cloud-Computing-Knoten gemäß einer Ausführungsform der vorliegenden Erfindung dar;
-
2 stellt eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung dar;
-
3 stellt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung dar;
-
4 zeigt ein Übersichts-Systemblockschaubild gemäß einem Aspekt der Erfindung;
-
5 zeigt ein detailliertes Systemblockschaubild gemäß einem Aspekt der Erfindung;
-
6 stellt beispielhafte Komponenten eines Anwendungsressourcenverwalters gemäß einem Aspekt der Erfindung dar.
-
Detaillierte Beschreibung bevorzugter Ausführungsformen
-
Cloud-Computing ist ein Modell der Dienstbereitstellung zum Ermöglichen von einfachem bedarfsgesteuertem (on demand) Netzwerkzugriff auf einen gemeinsamen Bestand konfigurierbarer Datenverarbeitungsressourcen (z. B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Datenspeicher, Anwendungen, virtuelle Maschinen und Dienste), die rasch und mit minimalem Verwaltungsaufwand oder Interaktion mit einem Anbieter des Dienstes provisioniert und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Charakteristika, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle einschließen.
-
Die Charakteristika sind die folgenden:
Bedarfsgesteuerte Selbstbedienung: Ein Cloud-Abnehmer kann einseitig Computerkapazität wie Serverzeit oder Netzwerkspeicher nach Bedarf automatisch provisionieren, ohne dass menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
-
Breiter Netzwerkzugang: Kapazitäten sind über ein Netzwerk verfügbar und durch Standardmechanismen zugänglich, welche die Verwendung durch heterogene schlanke (thin) oder umfangreiche (thick) Client-Plattformen (z. B. Mobiltelefone, Laptops und PDAs) fördern.
-
Ressourcengruppierung: Die Computerressourcen des Anbieters werden gruppiert, um mehrere Abnehmer unter Verwendung eines mandantenfähigen Modells (multitenant model) mit unterschiedlichen, bedarfsabhängig dynamisch zugewiesenen und neu zugewiesenen physischen und virtuellen Ressourcen bedienen zu können. Es ist insofern in gewissem Sinne eine Ortsunabhängigkeit vorhanden, als der Abnehmer allgemein keine Kontrolle und kein Wissen über den exakten Standort der bereitgestellten Ressourcen besitzt, jedoch in der Lage sein kann, Standorte auf einer höheren Abstraktionsebene zu spezifizieren (z. B. Bezirk, Staat oder Rechenzentrum).
-
Schnelle Elastizität: Kapazitäten können in manchen Fällen automatisch zur schnellen Aufwärtsskalierung (scale out) rasch und elastisch provisioniert und zur schnellen Abwärtsskalierung (scale in) rasch freigegeben werden. Für den Abnehmer erscheinen die zur Provisionierung verfügbaren Ressourcen oft unbegrenzt und können zu jeder Zeit in jeder Menge erworben werden.
-
Gemessene Dienstleistung: Cloud-Systeme steuern und optimieren die Ressourcennutzung automatisch, indem auf einer gewissen Abstraktionsebene Messfähigkeiten eingesetzt werden, die der Art des Dienstes entsprechen (z. B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und berichtet werden und so Transparenz für sowohl den Anbieter als auch den Abnehmer der genutzten Dienste bieten.
-
Die Dienstmodelle sind die folgenden:
Software as a Service (SaaS): Die dem Abnehmer bereitgestellten Kapazitäten dienen der Nutzung der Anwendungen des Anbieters, die in einer Cloud-Infrastruktur ausgeführt werden. Die Anwendungen sind von vielfältigen Client-Einheiten aus über eine schlanke Client-Schnittstelle wie beispielsweise einem Web-Browser zugänglich (z. B. internetgestützte E-Mails). Der Abnehmer verwaltet oder steuert nicht die zugrundeliegende Cloud-Infrastruktur einschließlich Netzwerk, Server, Betriebssysteme, Speicher oder auch einzelne Anwendungskapazitäten mit der möglichen Ausnahme begrenzter benutzerspezifischer Einstellungen der Anwendungskonfiguration.
-
Platform as a Service (PaaS): Die dem Abnehmer bereitgestellten Kapazitäten dienen dem Bereitstellen benutzererstellter oder erworbener Anwendungen in der Cloud, die mittels vom Anbieter unterstützter Programmiersprachen oder Werkzeuge erstellt wurden. Der Abnehmer verwaltet oder steuert nicht die zugrundeliegende Cloud-Infrastruktur einschließlich Netzwerke, Server, Betriebssysteme oder Speicher, hat jedoch die Kontrolle über die bereitgestellten Anwendungen und möglicherweise Konfigurationen der die Anwendung beherbergenden Umgebung.
-
Infrastructure as a Service (IaaS): Die dem Abnehmer bereitgestellten Kapazitäten dienen dem Provisionieren von Verarbeitung, Speicher, Netzwerken und anderen grundlegenden Computerressourcen, wobei der Abnehmer in der Lage ist, beliebige Software einzusetzen und auszuführen, was Betriebssysteme und Anwendungen einschließen kann. Der Abnehmer verwaltet oder steuert nicht die zugrundeliegende Cloud-Infrastruktur, hat jedoch die Kontrolle über Betriebssysteme, Speicher, bereitgestellte Anwendungen und möglicherweise begrenzte Kontrolle über ausgewählte Netzwerkkomponenten (z. B. Host-Firewalls).
-
Die Bereitstellungsmodelle sind die folgenden:
Private Cloud: Die Cloud-Infrastruktur wird allein für eine Organisation betrieben. Sie kann durch die Organisation oder Dritte verwaltet werden und vor Ort oder außerhalb angeordnet sein.
-
Gemeinschafts-Cloud (community cloud): Die Cloud-Infrastruktur wird durch mehrere Organisationen gemeinsam genutzt und unterstützt eine bestimmte Gemeinschaft, die gemeinsame Interessen hat (z. B. Überlegungen zu Mission, Sicherheitsanforderungen, Richtlinien und Einhaltung von Bestimmungen (compliance). Sie kann durch die Organisationen oder Dritte verwaltet werden und vor Ort oder außerhalb angeordnet sein.
-
Öffentliche Cloud (public cloud): Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Branchengruppe zugänglich gemacht und befindet sich im Besitz einer Organisation, die Cloud-Dienste verkauft.
-
Hybrid-Cloud: Die Cloud-Infrastruktur setzt sich aus zwei oder mehr Clouds (privat, Gemeinschaft, oder öffentlich) zusammen, die separate Entitäten bleiben, jedoch durch standardisierte oder proprietäre Technologie verbunden sind, welche die Übertragbarkeit von Daten und Anwendungen ermöglicht (z. B. Cloud-Erweiterung (cloud bursting) für den Lastausgleich zwischen Clouds).
-
Eine Cloud-Computing-Umgebung ist dienstorientiert mit einem Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantische Kompatibilität. Das Herz des Cloud-Computing bildet eine Infrastruktur, die ein Netzwerk miteinander verbundener Knoten aufweist.
-
Unter Bezugnahme auf 1 wird eine schematische Darstellung eines Beispiels eines Cloud-Computing-Knotens gezeigt. Der Cloud-Computing-Knoten 10 stellt nur ein Beispiel eines geeigneten Cloud-Computing-Knotens dar und soll nicht auf irgendeine Einschränkung im Hinblick auf den Umfang der Verwendung oder Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung hindeuten. Unabhängig davon ist der Cloud-Computing-Knoten 10 in der Lage, jede der hierin dargelegten Funktionalitäten auszubilden und/oder durchzuführen.
-
Im Cloud-Computing-Knoten 10 befindet sich ein Computersystem/Server 12, das/der mit zahlreichen anderen universellen oder zweckbestimmten Computersystemumgebungen oder Konfigurationen betrieben werden kann. Zu Beispielen allgemein bekannter Computersysteme, Umgebungen und/oder Konfigurationen, die für die Verwendung mit dem Computersystem/Server 12 geeignet sein können, zählen, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, schlanke Clients, umfangreiche Clients, handgeführte (handheld) oder Laptop-Einheiten, Mehrfachprozessorsysteme, mikroprozessorgestützte Systeme, Decoder (set top boxes), programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die jedes beliebige der oben genannten Systeme oder jede beliebige der oben genannten Einheiten oder Ähnliches beinhalten.
-
Das Computersystem/der Server 12 kann im allgemeinen Kontext von durch Computersysteme ausführbaren Anweisungen beschrieben werden, wie beispielsweise Programmmodule, die durch ein Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen ausbilden. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen ausgebildet sein, bei denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch entfernt angeordneten Computersystem-Speichermedien einschließlich Arbeitsspeichereinheiten befinden.
-
Wie in 1 gezeigt, ist das Computersystem/der Server 12 im Cloud-Computing-Knoten 10 in Form einer universellen Computereinheit gezeigt. Zu den Komponenten des Computersystems/des Servers 12 können, ohne auf diese beschränkt zu sein, ein oder mehrere Prozessoren oder eine oder mehrere Verarbeitungseinheiten 16, ein Systemspeicher 28 und ein Bus 18 gehören, der vielfältige Systemkomponenten einschließlich des Systemspeichers 28 mit dem Prozessor 16 verbindet.
-
Der Bus 18 steht für eine oder mehrere beliebige Arten von Busstrukturen, wozu ein Speicherbus oder eine Speichersteuereinheit, ein Peripherieeinheiten-Bus, ein beschleunigter Grafikanschluss und ein Prozessor- oder lokaler Bus unter Verwendung jeder beliebigen einer Vielfalt von Busarchitekturen zählen kann. Als Beispiel und ohne Einschränkung können zu solchen Architekturen der ISA-Bus (Industry Standard Architecture (ISA) bus), der MCA-Bus (Micro Channel Architecture (MCA) bus), der erweiterte ISA-Bus (Enhanced ISA (EISA) bus), der lokale VESA-Bus (Video Electronics Standards Association (VESA) local bus) und der PCI-Bus (Peripheral Component Interconnects (PCI) bus) gehören.
-
Das Computersystem/der Server 12 enthält üblicherweise eine Vielfalt von durch Computersysteme lesbaren Medien. Bei solchen Medien kann es sich um jedes beliebige verfügbare Medium, auf welches durch das Computersystem/den Server 12 zugegriffen werden kann, sowie um sowohl flüchtige als auch nichtflüchtige, Wechsel- oder Nicht-Wechsel-Medien handeln.
-
Zum Systemspeicher 28 können durch Computersysteme lesbare Medien in Form von flüchtigem Speicher wie Speicher mit wahlfreiem Zugriff (random access memory (RAM)) 30 und/oder Cachespeicher 32 zählen. Zum Computersystem/Server 12 können weiterhin weitere Wechsel-/Nicht-Wechsel-, flüchtige/nichtflüchtige Computersystem-Speichermedien gehören. Lediglich als Beispiel kann das Datenspeichersystem 34 für das Lesen von und Schreiben auf ein nichtflüchtiges magnetisches Nicht-Wechsel-Medium bereitgestellt werden (nicht gezeigt und üblicherweise als „Festplattenlaufwerk” bezeichnet). Obwohl nicht abgebildet, kann auch ein magnetisches Festplattenlaufwerk zum Lesen von und Schreiben auf eine nichtflüchtige magnetische Wechselspeicherplatte (z. B. eine „Floppy Disk”) oder ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine nichtflüchtige optische Wechselplatte wie beispielsweise eine CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. In solchen Beispielen kann jedes Element durch eine oder mehrere Medienschnittstellen mit dem Bus 18 verbunden sein. Wie nachfolgend weiterhin gezeigt und beschrieben wird, kann der Speicher 28 mindestens ein Programmprodukt enthalten, das einen Satz (z. B. mindestens eines) von Programmmodulen enthält, die eingerichtet sind, die Funktionen von Ausführungsformen der Erfindung auszuführen.
-
Ein Programm/Dienstprogramm 40 mit einem Satz (mindestens einem) von Programmmodulen 42 kann im Speicher 28 in beispielhafter Weise und ohne Einschränkung auch als Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten gespeichert sein. Jedes von Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination aus ihnen kann eine Realisierung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen allgemein die Funktionen und/oder Verfahrensweisen von Ausführungen der hierin beschriebenen Erfindung aus.
-
Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14 Daten austauschen, wie beispielsweise eine Tastatur, eine Zeigeeinheit, eine Anzeige 24 usw.; eine oder mehrere Einheiten, mit denen ein Benutzer mit dem Computersystem/dem Server 12 interagieren kann; und/oder jede beliebige Einheit (z. B. Netzwerkkarte, Modem usw.), durch die das Computersystem/der Server 12 mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten austauschen kann. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe(E/A)-Schnittstellen 22 erfolgen. Des Weiteren kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken wie beispielsweise einem Nahbereichsnetzwerk (local area network (LAN)), einem allgemeinen Weitverkehrsnetzwerk (wide area network (WAN)) und/oder einem öffentlichen Netzwerk (z. B. dem Internet) über den Netzwerkadapter 20 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18 Daten aus. Es ist festzuhalten, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden können, auch wenn sie nicht gezeigt sind. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Festplattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Datenarchivierungs-Speichersysteme usw.
-
Unter Bezugnahme auf 2 wird nun eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen lokale, durch Cloud-Abnehmer verwendete Datenverarbeitungseinheiten wie zum Beispiel ein persönlicher digitaler Assistent (personal digital assistant (PDA)) oder ein Mobiltelefon 54A, ein Desktop-Computer 54B, ein Laptop-Computer 54C und/oder ein Automobil-Computersystem 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können (nicht gezeigt) physisch oder virtuell in einem oder mehreren Netzwerken, wie beispielsweise privaten, Gemeinschafts-, öffentlichen oder Hybrid-Clouds, wie hierin vorstehend beschrieben, oder einer Kombination daraus gruppiert sein. Dadurch kann die Cloud-Computing-Umgebung 50 Infrastruktur, Plattformen und/oder Software als Dienste anbieten, für die ein Cloud-Abnehmer keine Ressourcen auf einer lokalen Computereinheit bereithalten muss. Es versteht sich, dass die Typen der in 2 gezeigten Computereinheiten 54A bis N nur veranschaulichend gedacht sind, und dass die Computerumgebung 10 und die Cloud-Computing-Umgebung 50 mit jeder beliebigen Art von computergesteuerter Einheit über jede beliebige Art von Netzwerk und/oder netzwerk-adressierbarer Verbindung (z. B. unter Verwendung eines Web-Browsers) Daten austauschen kann.
-
Unter Bezugnahme auf 3 wird ein Satz funktionaler Abstraktionsschichten dargestellt, die durch die Cloud-Computing-Umgebung 50 (2) bereitgestellt werden. Es ist im Vorfeld zu beachten, dass die in 3 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend gedacht sind und Ausführungsformen der vorliegenden Erfindung nicht darauf beschränkt sind. Wie abgebildet, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
Eine Hardware- und Software-Schicht 60 beinhaltet Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen Großrechner, in einem Beispiel IBM® zSeries®-Systeme; auf RISC-Architektur (Reduced Instruction Set Computer – Computer mit verringertem Anweisungssatz) beruhende Server, in einem Beispiel IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten; Netzwerke und Netzwerkkomponenten. Zu Beispielen für Software-Komponenten zählen Software für Netzwerkanwendungsserver-Software, in einem Beispiel die Anwendungsserversoftware IBM WebSphere®; und Datenbanksoftware, in einem Beispiel die Datenbanksoftware IBM DB2®. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind in vielen Rechtsprechungsgebieten weltweit registrierte Marken der International Business Machines Corporation.)
-
Die Virtualisierungsschicht 62 stellt eine Abstraktionsschicht bereit, von der die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server; virtuelle Speicher; virtuelle Netzwerke einschließlich virtueller privater Netzwerke; virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients.
-
In einem Beispiel kann eine Verwaltungsschicht 64 die nachstehend beschriebenen Funktionen bereitstellen. Die Ressourcenprovisionierung stellt eine dynamische Beschaffung von Datenverarbeitungsressourcen und anderen Ressourcen bereit, die verwendet werden, um Aufgaben innerhalb der Cloud-Computing-Umgebung durchzuführen. Die Messung und Preisbildung stellt eine Kostenverfolgung bereit, wenn Ressourcen innerhalb der Cloud-Computing-Umgebung verwendet werden, sowie die Abrechnung oder Rechnungserstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware aufweisen. Die Sicherheit stellt eine Identitätsüberprüfung für Cloud-Abnehmer und Tasks sowie Schutz für Daten und andere Ressourcen bereit. Das Benutzerportal stellt Zugang zur Cloud-Computing-Umgebung für Abnehmer und Systemadministratoren bereit. Die Dienstgüteverwaltung (service level management) stellt die Zuweisung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass erforderliche Dienstgüten erreicht werden. Die Dienstgütevereinbarungs-Planung und -Erfüllung (Service Level Agreement (SLA) planning and fulfillment) stellt gemäß einer Dienstgütevereinbarung (SLA) eine Voranordnung für und eine Beschaffung von Cloud-Computing-Ressourcen bereit, für die eine zukünftiger Bedarf zu erwarten ist.
-
Eine Arbeitslastenschicht 66 stellt Beispiele für Funktionalität bereit, für die die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, zählen: Zuordnung und Navigation; Softwareentwicklung und Lebensdauer-Verwaltung; Bereitstellung von Ausbildung in virtuellen Klassenzimmern; Datenanalyseverarbeitung; Transaktionsverarbeitung und mobiler Arbeitsplatz.
-
Eine oder mehrere Ausführungsformen realisieren vorteilhaft einen Anwendungsressourcenverwalter über eine Cloud, wie beispielsweise eine IaaS- oder PaaS-Cloud.
-
Wie vorstehend festgehalten, bieten Information-as-a-Service(IaaS)- und Platform-as-a-Service(PaaS)-Clouds grundlegende Fähigkeiten für eine schnelle Bereitstellung (Provisionierung) von Images, wobei Images verborgen werden, so lange sie nicht verwendet werden, sowie potenziell direkt oder quasi-direkt erfolgende Veränderungen an den Ressourcen, die den Images zugewiesenen sind. Dies betrifft jedoch nicht unmittelbar die Anwendungsschicht (hierin austauschbar als die Arbeitslastenschicht 66 bezeichnet), d. h. in der Anwendungsschicht 66 sind nach wie vor Menschen erforderlich, um die Auslastung zu beobachten und zu entscheiden, wann und wie es möglich ist, die Infrastruktur für eine Anwendung zu erweitern oder zu verringern. Ausnahmen stellen Anwendungen dar, die nur für eine relativ kurze Zeit bereitgestellt und dann vollständig entfernt werden, wie Entwicklungs- und Testanwendungen. Tatsächlich handelt es sich dabei um die verbreitetsten Anwendungen, die derzeit für das Ausführen auf IaaS- und PaaS-Clouds in Betracht kommen.
-
Es ist zu beachten, dass die Virtualisierungs- und Verwaltungsschichten 62 und 64 in Iaas- und PaaS-Clouds nur die Hardware und möglicherweise grundlegende Software, jedoch nicht die Arbeitslasten, verwalten. Dementsprechend geschah dies bislang separat und üblicherweise mit menschlichem Eingreifen.
-
Wie ebenfalls vorstehend festgehalten, arbeiten Software-as-a-Service(SaaS)-Clouds in der Anwendungsschicht, sind jedoch sehr spezifisch für bestimmte Anwendungstypen konzipiert, wie beispielsweise die Lösung IBM LotusLive (Marke der International Business Machines Corporation, Armonk, New York, USA) oder die von Salesforce_Punkt_com, Inc., aus San Francisco, Kalifornien, USA, erhältlichen („.” wurde durch „_Punkt_” ersetzt, um das Einfügen von durch Browser ausführbarem Code zu vermeiden).
-
Wie wiederum vorstehend festgehalten gibt es zudem übergeordnete Clouds, die erfordern, dass Anwendungen in speziellen neuen Programmiermodellen und -sprachen codiert sind, wie beispielsweise Amazon Web Services (Marke von Amazon Web Services LLC, Seattle, Washington, USA), Microsoft Azure (Marke der Microsoft Corporation, Redmond, Washington, USA) und Hadoop (erhältlich von der Apache Software Foundation).
-
Eine oder mehrere Ausführungsformen ermöglichen in vorteilhafter Weise, dass normale, weitgehend unveränderte Anwendungen mit schwankendem oder nur wachsendem Ressourcenbedarf die Möglichkeiten von IaaS- oder PaaS-Plattformen einfach nutzen können.
-
Es sollte festgehalten werden, dass auch frühere Arbeiten im Hinblick auf dynamische Infrastruktur im Kontext von Netzen vorliegen, Netze jedoch nicht dieselbe Art von Schnittstellen zum Provisionieren und Verwalten von Bildern wie IaaS- und PaaS-Clouds besitzen und sich somit das Anwendungsverwaltungsproblem für Gitter von Clouds unterscheidet. Gleichermaßen funktionierten ältere große Projekte mit verteilter Infrastruktur, wie beispielsweise das Projekt „Oceano computing utility powerplant” von IBM, nicht mit zugrundeliegenden getrennten Schichten 60, 62, 64 wie in einer Cloud.
-
Unter Bezugnahme auf die einfache Systemübersicht von 4 verwenden eine oder mehrere Ausführungsformen eine Anwendungsressourcenverwalter-Komponente 401, die dem normalen System der IaaS- oder PaaS-Cloud 10 hinzugefügt wurde, und Anwendungskomponenten 403. Dieser Anwendungsressourcenverwalter erweitert und verringert Cloud-Ressourcen entsprechend dem Anwendungsbedarf.
-
Um diese Aufgaben auszuführen, interagiert der Anwendungsressourcenverwalter mit der Verwaltungsschnittstelle der zugrundeliegenden IaaS- oder PaaS-Cloud, d. h. der oberen Schnittstelle der Verwaltungsschicht 64, während die Anwendung Images und andere durch die Cloud bereitgestellte Ressourcen nutzt. Hier wird das Wort „Images” sowohl für reine Betriebssystem-Images, die eine IaaS-Cloud bietet, als auch für die Images mit Middleware, die eine PaaS-Cloud bietet, verwendet. Hinsichtlich 3 handelt es sich bei IaaS-Images um virtuelle Server, und es gibt üblicherweise einen Katalog verfügbarer, einfach zu provisionierender Images, diesem Katalog entsprechende Image-Dateien und tatsächliche Instanzen-Images, die provisioniert wurden und ausgeführt werden. Die Ressourcenprovisionierungskomponente der Verwaltungsschicht 64 bietet den Katalog den potenziellen Arbeitslasten der Schicht 66 an, enthält die Image-Dateien und veranlasst das Einrichten von Instanzen-Images (virtuellen Servern) in der Virtualisierungsschicht 62. Gelegentlich wird nur von „Images” gesprochen, wenn dieser Prozess klar ist. Über den für eine Anwendung provisionierten Images gibt es den Code, die Daten, die Konfigurationen und Ähnliches der normalen Anwendungskomponenten. In anderen Worten: Der oder die Teile der Arbeitslast, die nicht über die Cloud-Verwaltungsschicht provisioniert wurden, bilden die Anwendungskomponenten.
-
Die Verwaltungsschnittstellen, die der Anwendungsressourcenverwalter nutzt, können OSS-Aspekte (Operations Support System (Operationsunterstützungssystem), z. B. eine direkte Schnittstelle zu einer Ressourcen provisionierenden Komponente) und BSS-Aspekte enthalten (Business Support Services (Betriebsunterstützungsdienste), z. B. eine Schnittstelle zur Preisbildungskomponente, falls zum Zeitpunkt zusätzlicher Provisionierung eine weitere Bezahlungsvereinbarung erforderlich ist). All dies kann durch das Benutzerportal gefiltert werden, es wird hier jedoch davon ausgegangen, dass dieses entweder eine API (Application Programming Interface (Anwendungsprogrammierschnittstelle)), eine Webdienstschnittstelle usw. zur Verwendung durch automatisierte Programme aus der Arbeitslastenschicht 66 enthält oder Schnittstellen zu den einzelnen Komponenten, wie beispielsweise der Ressourcenprovisionierung für die Programme der Arbeitslastenschicht 66 direkt zugänglich sind.
-
Der Anwendungsressourcenverwalter 401 kann von kommendem Bedarf von einem Anwendungsbesitzer 513 erfahren (der Name wird hierin für einen Menschen verwendet, der ermächtigt ist, Anwendungsbedarf vorauszusagen, um diese Funktion von normalen Benutzern 515 zu unterscheiden – siehe 5) oder kann momentane Nutzung und Trends aus Berichten, die von der Cloud-Verwaltung erhalten werden, sowie durch Beobachten der Anwendung ableiten. Der Anwendungsressourcenverwalter 401 kann zudem von Fehlern bei der Infrastruktur erfahren und auf sie reagieren, um bestimmte Verfügbarkeitsziele zu erreichen.
-
Bei einer gegebenen Bedarfsänderung provisioniert der Anwendungsressourcenverwalter zumindest in manchen Ausführungsformen Images oder verbirgt sie oder ändert ihre Ressourcenzuschreibung, wie beispielsweise virtuelle Speicher oder Zuweisung von virtueller Netzwerkbandbreite. Optional provisioniert er im Falle von Provisionierung auf den neuen Images auch Software auf Anwendungsebene und/oder Daten.
-
Somit stellen eine oder mehrere Ausführungsformen ein System bereit, das eine Cloud 10, mindestens eine Anwendungskomponente 403 und einen Anwendungsressourcenverwalter 401 enthält, wobei der Anwendungsressourcenverwalter Cloud-Ressourcen für die Anwendungskomponente erweitert und/oder verringert, um den Anwendungsressourcenbedarf zu decken.
-
In einer oder mehreren Ausführungsformen nutzt der Anwendungsressourcenverwalter die Dienste einer IaaS- oder PaaS-Cloud. Weitere Einzelheiten über diese Komponenten und ihre Interaktionen sind in 5 gezeigt, die eine detailliertere Systemübersicht bereitstellt.
-
Es sollte festgehalten werden, dass der Anwendungsressourcenverwalter 401 unter Umständen selbst in der Cloud 10 ausgeführt werden kann, dies aber nicht muss.
-
Der Anwendungskasten 511 ist virtuell; er zeigt an, dass der Anwendungsressourcenverwalter zu einer bestimmten Anwendung gehört und Kenntnis über die Anwendungsstruktur haben sollte.
-
Unter fortgesetzter Bezugnahme auf 5 interagiert der Anwendungsbesitzer 513 mit dem Anwendungsressourcenverwalter 401 über die Anwendungsverwaltungsschnittstelle (in 3 ist dies die obere Schnittstelle der Arbeitslastenschicht 66, d. h. wo die Anwendungen/Arbeitslasten mit ihren Benutzern interagieren). Der Anwendungsressourcenverwalter 401 ist der Anwendung 511 zugeordnet und führt die durch normale Benutzer verwendete Einrichtung der Anwendungssoftware 517 sowie ein Überwachen der Anwendungssoftware 517 und entsprechender Images 519 durch. Die Images werden Teil der Cloud-Laufzeitumgebung 521. Block 521 ist im Wesentlichen analog zur Virtualisierungsschicht 62 von 3 (oder den Schichten 60 und 62 zusammen), wohingegen eine Cloud-Verwaltungsplattform 523 analog zur Schicht 64 ist. Die Cloud-Verwaltungsplattform 523 verwaltet die Cloud-Laufzeitumgebung 521, die über eine geeignete Provisionierungsschnittstelle (d. h. eine Schnittstelle zur Ressourcenprovisionierungskomponente entweder direkt oder mittelbar über eine BSS-Schnittstelle und/oder das Benutzerportal) mit dem Anwendungsressourcenverwalter 401 interagiert, und die Cloud-Verwaltungsplattform 523 stellt zudem dem Anwendungsressourcenverwalter 401 Nutzungs- und Fehlerberichte bereit (diese könnten z. B. von der Messkomponente oder der Dienstgüte-Verwaltungskomponente von 3 stammen).
-
In einer oder mehreren Ausführungsformen kann ein Anwendungsressourcenverwalter wie 401 wie in 6 gezeigt aufgebaut sein, wobei die Komponenten die folgenden beispielhaften Funktionen bereitstellen:
Richtlinien 631 legen Langzeitziele fest, z. B. Leistungs- und Verfügbarkeitsziele, die als Dienstgüteziele der Anwendung (im Gegensatz zu denjenigen der Cloud) vorgegeben sein können; in anderen Worten sind dies Ziele für die Schicht 66 und nicht für die Schicht 64, wie sie die Dienstgüte-Verwaltungskomponente erfüllt. Kurzfristigere Ziele von einem Anwendungsbesitzer, wie beispielsweise die zu einer kurzfristigen Vorhersage für erhöhten Leistungsbedarf gehörenden, können ebenfalls als Richtlinien bezeichnet werden.
-
Eine Verwaltungskomponente 633 nimmt die Richtlinien sowie, was sie von der Anwendung und der Cloud erfährt, und legt Aktionen fest. Zu diesen Aktionen zählt insbesondere das Provisionieren, Verbergen oder Deprovisionieren von Anfragen an die Cloud, und welche weiteren Aktionen auch immer die Cloud-Verwaltungsplattform zulässt, z. B. Erhöhen und Verringern von Image-Ressourcen, Live-Migration zu unterschiedlichen Servern oder Auswählen einer höheren Dienstgüte von der Cloud (wozu z. B. bessere Leistungsgarantien ebenso zählen wie höhere Verfügbarkeits- oder Zuverlässigkeitsgarantien zählen können).
-
Eine Steuerkomponente 635 übersetzt abstrakte Anfragen von der Verwaltungskomponente in konkrete Interaktionen mit der Cloud-Verwaltungsplattform, z. B. über eine Anwendungsprogrammierschnittstelle (API) oder eine Webdienstschnittstelle. Bei solch einer Interaktion kann es sich um eine Sequenz mit mehreren Schritten handeln, die auch Schritte auf OSS- und BSS-Ebene enthalten kann, wie beispielsweise Wählen einer Image-Größe und Auswählen eines Bezahlverfahrens oder vorhandenen Kontonummer.
-
Im Gegensatz zur Steuerkomponente interpretiert eine Interpretationskomponente (interpretation component) 637 Berichte von der Cloud, wie beispielsweise Nutzungsinformationen sowohl über die eigenen Images der Anwendung als auch andere virtuelle Ressourcen und die gesamte Cloud, oder Fehlerberichte.
-
Ein Vorteil der Abspaltung einer Steuerkomponente und einer Interpretationskomponente aus der Verwaltungskomponente liegt darin, dass sich der Anwendungsressourcenverwalter leichter an unterschiedliche Clouds anpassen lässt. Im Beispiel in 6 darf der Anwendungsressourcenverwalter dennoch direkt mit den Anwendungskomponenten interagieren, da er für diese Anwendung spezifisch ist.
-
Zusätzliche nicht einschränkende beispielhafte Details werden nun in Hinblick auf mögliche Funktionen des Anwendungsverwalters bereitgestellt.
-
Im Hinblick auf das Überwachen kann der Anwendungsverwalter in manchen Fällen die Anwendungskomponenten 403 und deren Nutzung entweder an den Benutzerschnittstellen der Anwendung (wo z. B. eine Anwendungs-Dienstgütevereinbarung (SLA) gelten kann) oder für einzelne Komponenten (wie beispielsweise 517, 519) oder beides überwachen; insbesondere die auf unterschiedlichen Images bereitgestellten. Der Anwendungsmanager kann zudem Informationen über die aktuelle Nutzung seiner Cloud-Images über die Cloud-Schnittstelle (z. B. von 523) und/oder Informationen über die aktuelle Gesamtnutzung der Cloud über die Cloud-Schnittstelle erhalten – dies kann interessant sein, um die Wirkung des Erhaltens weiterer Ressourcen vorherzusagen, wenn die Ressourcen gemeinsam genutzt werden.
-
Des Weiteren kann der Anwendungsverwalter ebenfalls im Hinblick auf das Überwachen in manchen Fällen Informationen über Fehler bei seinen eigenen Images (von 523) und die allgemeine Zuverlässigkeit der Cloud erhalten; kann ein Vorhersagen auf der Grundlage von Nutzungsentwicklungen verwenden, um den zukünftigen Bedarf abzuschätzen (z. B. Vorhersagen monatlicher Spitzen oder Vorhersagen eines langsamen Gesamtanstiegs des Bedarfs); und/oder kann von Zeit zu Zeit die Anwendungsstruktur durch Erkennungswerkzeuge neu bewerten (andernorts hierin weiter erläutert und austauschbar als „Neuerkennung” bezeichnet). Diese werden auf die Images 519 der Anwendung und die Anwendungssoftware 517 angewandt, da die Benutzer 515 der Anwendung auch gewisse Rechte besitzen können, um Änderungen vorzunehmen. Erkennungswerkzeuge können zudem dazu beitragen, Leistungsparameter auf Anwendungsebene zu finden, wie beispielsweise aktuelle Datenbankgrößen.
-
Im Hinblick auf Ziele kann der Anwendungsverwalter in manchen Fällen entweder absolute oder auf die aktuelle Leistung bezogene kurzfristige Ziele vom Anwendungsbesitzer erhalten. Diese Ziele beziehen sich üblicherweise auf die Anwendung als Ganzes (z. B. Transaktionsdurchsatz oder Reaktionszeit für die Endbenutzer) anstatt auf die Leistung einzelner Anwendungssoftwarekomponenten auf den einzelnen Images. Des Weiteren kann der Anwendungsverwalter übergeordnete Ziele (Langzeitrichtlinien) vom Anwendungsbesitzer erhalten, z. B. immer bestimmte SLAs bereitzustellen oder immer über eine gewisse Menge an Spielraum für plötzliche Änderungen zu verfügen; und/oder Kostenziele oder -grenzen erhalten, um immer den billigsten Gesamtsatz an Ressourcen zu wählen, um eine gewünschte SLA bereitzustellen oder um immer die bestmögliche Leistung jedoch nur bis zu einer gewissen Kostengrenze zu bieten.
-
Im Hinblick auf mögliche Entscheidungen kann der Anwendungsverwalter in manchen Fällen entscheiden, die Ressourcen, die den einzelnen der Anwendung zugewiesenen Cloud-Images zugewiesen sind, zu erweitern oder zu verringern. Abhängig von der Cloud kann dies vor Ort oder durch Migrieren der entsprechenden Anwendungskomponente 517 zu einem größeren Image 519 erfolgen. Darüber hinaus kann der Anwendungsverwalter entscheiden, zur Verwendung der Anwendung ganze Cloud-Images zu provisionieren, zu löschen oder zu verbergen. In diesem Fall sollte er zudem geeignete Software auf ihnen bereitstellen. In dieser Hinsicht kann der Anwendungsverwalter zu diesem Zweck ein oder mehrere Gold-Images, d. h. ruhende Images, die bereits alle wiederholbaren Teile der Anwendung enthalten, aufbewahren; und/oder auch Migrationswerkzeuge verwenden, um Softwarekonfigurationen entsprechend dem aktuellen Anwendungsgesamtstatus bereitzustellen.
-
Des Weiteren kann der Anwendungsverwalter ebenfalls im Hinblick auf mögliche Entscheidungen in manchen Fällen entscheiden, zusätzliche Speicher- und/oder Netzwerkressourcen anzufordern, wenn die Cloud solche Wahlmöglichkeiten separat anbietet; er kann entscheiden, den Benutzer zu warnen, wenn er seine aktuellen Richtlinien oder Anfragen nicht erfüllen kann; und/oder er kann den Benutzer auf regelmäßiger Grundlage oder auf Anfrage über die Situation auf Anwendungsebene informieren.
-
Im Hinblick auf das Treffen von Entscheidungen kann der Anwendungsverwalter in manchen Fällen Entscheidungen treffen, indem ein optimierendes Löserwerkzeug verwendet wird, oder er kann den die Entscheidungen treffenden Code direkt enthalten. Er kann Entscheidungen auf der Grundlage dynamischer Cloud-Kosten treffen, wenn die Cloud ein dynamisches Preisbildungsschema besitzt (z. B. niedrigere Kosten an Wochenende). Das Verwenden dynamischer Cloud-Kosten ist besonders nützlich, wenn die Anwendung Aspekte enthält, die nicht zeitkritisch sind und zu Zeiten preisgünstigerer Ressourcen durchgeführt werden können.
-
Es sollte festgehalten werden, dass Richtlinien zumindest in manchen Fällen durch Parameter in einer Datendatei oder Ähnlichem realisiert werden können, wobei zulässige Werte und andere Variablen festgelegt werden können, ohne die zugrundeliegende Codierung ändern zu müssen; das bedeutet eine Datenstruktur, die zulässige Werte oder Wertbereiche festlegt.
-
Im Hinblick auf den Richtlinienblock 631 ermittelt dieser in einem oder mehreren Beispielen Ziele oder Anforderungen oder gelegentlich, was in einer bestimmten Situation geschehen sollte. Insbesondere kann er Richtlinien (d. h. formalisierte Ziele oder Anforderungen) auf der Anwendungsebene enthalten, zum Beispiel, welche Latenzzeiten für Transaktionen auf Anwendungsebene akzeptabel sind, wie nahe man sich Fristen mit wie vielen lange laufenden noch nicht erfüllten Jobs nähern darf oder wie viel Belastung z. B. am Monatsende zu erwarten ist. Er kann gelegentlich auch Richtlinien auf Infrastrukturebene enthalten, z. B. welche Menge an freiem Speicherplatz immer verfügbar sein sollte, welches Auslastungsniveau einer virtuellen Maschine (VM) für eine anhaltende Zeitdauer erlaubt sein sollte.
-
Der Verwaltungsblock 633 enthält Logik, welche die Werte aus den Richtlinien 631 liest und eine Dateneingabe darüber erhält, was im System vorgeht (sagen wir von einer Sonde oder Ähnlichem auf Anwendungsebene sowie dem Interpretationsblock 637, aus Cloud-Berichten oder durch Überwachung auf Image-Ebene) und setzt die Richtlinien 631 in Kraft. Zu Beispielen zählt ein Feststellen, dass VMs zugewiesen, verborgen oder Dienste auf anderen VMs gestartet werden sollten; Ermitteln, ob ein Speicher einer VM und oder eine CPU-Zuweisung erhöht werden sollten; Ermitteln, ob Datenspeicher erhöht und/oder verringert werden sollte; und Ähnliches.
-
Der Steuerblock 635 stellt eine Schnittstelle zu unterschiedlichen Architekturen bereit; wenn es sich bei der Cloud zum Beispiel einfach um vmware handeln würde, würde er mit einer vmrun-Schnittstelle interagieren, um die VMs zu steuern. Das bedeutet, das Steuermodul 635 übersetzt Anweisungen vom Verwaltungsmodul 633, damit sie von einem Ressourcenprovisionierungsmodul (siehe Schicht 64 in 3) oder Ähnliches, das die Cloud-Ressourcen verwaltet, verstanden werden können.
-
Im Hinblick auf den Interpretationsblock 637 stellt dieser eine Schnittstelle zu unterschiedlichen Cloud-Architekturen bereit; wenn es sich bei der Cloud zum Beispiel einfach um vmware handeln würde, könnte er Leistungsberichte von vmware-Schnittstellen interpretieren; und/oder eine Abstraktion an Sonden, die innerhalb von VMs laufen können. In manchen Fällen kann die Cloud eine CPU-Nutzung von Images bereitstellen (siehe z. B. Messen und Preisbildung in Schicht 64 in 3). Der Verwaltungsblock 633 rät dem Interpretationsblock 637, dass er die CPU-Nutzung aller Images benötigt, der Block 637 übersetzt dies und gibt dem Mess- und Preisbildungsblock den erforderlichen Befehl und überführt die cloudspezifischen Ergebnisse in ein allgemeines Format. In manchen Fällen stellt der ARV (Anwendungsressourcenverwalter) 401 zusätzlich oder statt der Cloud-Schnittstelle eine Verbindung mit den Images her, die er auf seiner eigenen Schicht verwaltet, um z. B. die Latenzzeiten auf Anwendungsebene zu überwachen (d. h. wie lange normale Anwendungsbenutzer 515 auf Ergebnisse warten müssen) oder um den Status lang laufender Anwendungen zu erfahren. In solchen Fällen kann durch die Anwendungssoftware 517 ein IP-Mithördienst oder eine Webschnittstelle für die Verwaltung bereitgestellt werden, und der Anwendungsverwalter baut entsprechende Verbindungen auf und sendet entsprechende Verwaltungsabfragen.
-
In manchen Fällen besitzt der ARV 401 ein Konto auf dem normalen Image und kann dieses verwenden, um sich beim normalen Image anzumelden und einen geeigneten Befehl auszuführen, um die CPU-Nutzung direkt aus dem Image auszulesen. In manchen Fällen kann die Anwendung programmiert sein, auf geeignete Anfragen zu reagieren, beispielsweise wie viele Transaktionen in den letzten 10 Minuten ausgeführt wurden.
-
Um Zweifel zu vermeiden, bezieht sich die „Anwendung” in diesem Kontext auf Code, der die letztlich gewünschte Funktion ausführt (und nicht durch die Cloud bereitgestellt wurde), sagen wir JAVA-Code innerhalb von WEBSPHERE-Software oder ein bestimmtes Datenbankschema innerhalb von DB2-Software oder üblicherweise eine Kombination solcher Codetypen, z. B. alle Codestücke, die zum Bereitstellen einer Warenkorbanwendung oder einer Reiseberichtsanwendung nötig sind. Bei den Sonden handelt es sich im Gegensatz zu physikalischen Sonden wie Thermoelementen um Softwareteile, die mit anderer Software Daten austauschen, um gewünschte Werte zu erhalten.
-
Mithilfe eines detaillierten aber nicht einschränkenden Beispiels wird eine Architektur mit drei Ebenen mit einem Webserver, einem Anwendungsserver und einer Datenbank betrachtet (üblicherweise jeweils mehr als eines). Es ist wünschenswert, die durchschnittliche Latenzzeit für die Endbenutzer-Anfragen unter einem bestimmten Grenzwert zu halten. Latenzzeiten können durch Überlasten irgendeines der Elemente verursacht werden. Es ist wünschenswert, die Latenzzeiten beim Reagieren auf Anfragen zu messen (anwendungsspezifisch – Beispiel – wie lange ein Http-Server braucht, um auf eine Anfrage zu reagieren).
-
In diesem Beispiel legt Block 631 fest, welche Latenzzeiten zum Antworten auf eingehende Anfragen zur Verfügung stehen sollten und möglicherweise, welches der reguläre Zustand des Systems sein sollte. Der Interpretationsblock 637 stellt eine Verbindung mit Sonden her, die Informationen über einzelne Komponenten bereitstellen. Der Verwaltungsblock 633 trifft mithilfe des Richtlinienblocks 631 und von Daten aus dem Interpretationsblock 637 sowie direktem Datenaustausch mit der Anwendungssoftware Entscheidungen, wie beispielsweise die Anzahl von eingehende Anfragen abwickelnder VMs zu erhöhen, um die Latenzzeiten zu senken, falls sie zu hoch sind, wobei möglicherweise entschieden wird, welche der 3 Ebenen einen Engpass darstellt und vergrößert werden muss. Der Verwaltungsblock 633 stellt eine Verbindung mit dem Steuerblock 635 her, um die Cloud anzuweisen, eine vorhandene Haupt-Vorlagen-VM zu klonen und sie online zu stellen, und ist dann dafür zuständig, geeignete Daten darauf zu platzieren und sie in die Anwendung einzubinden, so dass sie ihren Anteil der Last übernehmen kann.
-
Wenn im Gegensatz hierzu die Latenzzeiten weit unterhalb der Grenzen liegen und (laut der Richtlinie 631) mehr als die normale Anzahl von VMs in stabilem Zustand vorhanden ist, kann die Verwaltung 633 die Steuerung 635 anweisen, VMs langsam abzuschalten, und sie ist für das Zurücksetzen der Anwendung zuständig, so dass alle Arbeitslasten durch die verbleibenden VMs abgewickelt werden, z. B. durch Modifizieren einer Lastausgleichsrichtlinie auf Anwendungsebene.
-
Als weiteres Detail zu diesem nicht einschränkenden Beispiel legt Block
631 fest, welche Latenzzeiten zum Antworten auf eingehende Anfragen zur Verfügung stehen sollten und welches der reguläre Zustand des Systems sein sollte:
-
Dadurch wird eine Richtlinie festgelegt, dass die durchschnittliche Latenzzeit über eine Periode von einer Minute nicht über 500 ms liegen sollte. Üblicherweise sollten mehr Maschinen zugewiesen werden, wenn dies beginnen sollte. Wie vorstehend erläutert, erhält die Logik im Verwaltungsmodul 633 Daten von der Sonde, untersucht die Richtlinien 631 und führt geeignete Maßnahmen durch, falls Richtlinien verletzt werden; Anweisungen, um dies zu bewirken, werden an den Steuerblock 635 gesendet, wo sie übersetzt werden, wie ebenfalls vorstehend erläutert wurde.
-
Der Verwaltungsblock 633 kann zudem Mikrotests an jeder einzelnen Anwendungssoftware-Komponente 517 durchführen.
-
Der Verwaltungsblock 633 setzt optional Logik in Kraft, um zu versuchen, zu ermitteln, welche Schicht die Latenzzeiten verursacht. Er besitzt die Fähigkeit, Mikro-Benchmarktests an jeder Schicht durchzuführen, was keine Auswirkungen auf jede andere Schicht hat. Zum Beispiel kann er eine statische Webseite vom Webserver abrufen, um nur die Latenzzeit des Webservers zu messen. Er kann eine einfache Abfrage am Anwendungsserver durchführen, welche die Datenbank nicht betrifft, sowie einfache Datenbankabfragen durchführen. Dadurch kann er zusammen mit den durch den Interpretationsblock 637 bereitgestellten Messungen auf VM-Ebene genau feststellen, welche Komponente überlastet ist und daher, welche Komponente vergrößert werden muss. In dieser Hinsicht ist zu beachten, dass ausschließlich Messungen verwendet werden können, ausschließlich Mikro-Benchmarktests verwendet werden können oder beides zusammen verwendet werden kann. Des Weiteren können Mikro-Benchmarktests zum Beispiel auf einem Vorabtest an einem gut laufenden System beruhen, um die gewünschten Werte zu kennen.
-
Wenn zum Beispiel der Verwaltungsblock 633 feststellt, dass das Webserver-Front-End überlastet ist und die beste Entscheidung darin besteht, mehr Front-Ends hinzuzufügen, weist er den Steuerblock 635 an, eine neue VM zuzuweisen und spielt dann alle notwendige zusätzliche Software und Anwendungsdaten auf und integriert sie in die Anwendung.
-
Wenn es sich bei einer Cloud nur um VMware handeln würde, kopiert der Steuerblock 635 eine Gold-Haupt-VM des Webserver-Front-End auf eine neue VM. Dann verwendet er die „RegisterVm()”-Funktion der VMware API, um die VM der VM-Infrastruktur hinzuzufügen. Nach dem Hinzufügen verwendet der Steuerblock 635 die API, um eine Verbindung mit der neuen VM herzustellen, und verwendet ihr „Start()”-Verfahren, um die Maschinen hochzufahren. Der Verwaltungsblock 633 fügt sie dann zum Cluster der Maschinen hinzu, welche Front-End-Aufgaben abwickeln. In einem einfacheren Beispiel könnte die Größe einer Maschine erhöht werden.
-
In einem weiteren nicht einschränkenden Beispiel wird das Überwachen der Speicherauslastung betrachtet. Die Richtlinie 631 legt fest, welche Menge an freiem Speicherplatz verfügbar sein sollte, sowie, was zu viel freier Speicherplatz ist. Der Interpretationsblock 637 stellt eine Verbindung mit normalen Schnittstellen (du, df, quota, ...) her, um die Menge an freiem Speicherplatz zu ermitteln. Der Verwaltungsblock 633 verwendet diese beiden Informationen, um zu ermitteln, ob genügend freier Speicherplatz (oder zu viel) verfügbar ist. Der Verwaltungsblock 633 weist den Steuerblock 635 an, gemäß der Richtlinie mehr freien Speicherplatz zuzuweisen (oder ihn zu verringern). Ein geeigneter Befehl könnte die Form „increase-disk <Image-ID> <Festplatten-ID> <Größe>” besitzen.
-
Zum Beispiel können manche VMs in der Lage sein, abhängig von der Last der VM einen oder mehrere Dienste auszuführen. In manchen Fällen ist es dann möglich, die VM-Last von der VM-Infrastruktur aus zu überwachen und zur Überwachung der Ressourcennutzung (CPU, E/A) einzelner Dienste Sonden in jeder VM zu besitzen, um zu erfahren, wie viel jeder einzelne Dienst gerade nutzt.
-
Die Richtlinie 631 kann ermitteln, unter welcher dauerhaften Last der Betrieb einer VM erlaubt werden sollte und welche dauerhafte Last den einzelnen auf der VM ausgeführten Diensten erlaubt werden sollte. Der Interpretationsblock 637 stellt eine Verbindung mit der Lastüberwachung der VM-Infrastruktur her (VM-Gesamtlast) und führt Sondierungen innerhalb der VM durch (um für jeden einzelnen Dienst die Lastmessungen auf Betriebssystemebene zu überwachen). Der Verwaltungsblock 633 kann Entscheidungen treffen, die VM zu teilen, so dass einzelne Dienste auf unabhängigen VMs ausgeführt werden können, wenn die Last auf einer einzelnen VM zu hoch ist, oder sie wieder miteinander gruppieren, wenn sich die Last verringert hat. Er stellt eine Verbindung mit dem Steuerblock 635 her, um bei Bedarf neue VMs zu starten oder vorhandene abzuschalten sowie auf den einzelnen VMs ausgeführte Dienste zu beenden oder zu starten.
-
In noch einem weiteren nicht einschränkenden Beispiel wird ein Erhöhen des Speichers und der CPU-Nutzung einer VM betrachtet. Die Richtlinie 631 ermittelt, welcher dauerhafte Speicherplatz und welche dauerhafte CPU-Last auf einer einzelnen Maschine erlaubt werden sollte. Der Interpretationsblock 637 erhält Berichte der CPU-Nutzung und des freien Speicherplatzes und gibt diese in den Verwaltungsblock 633 ein. Der Verwaltungsblock 633 kann entscheiden, die CPU- und Speicherzuweisung einer einzelnen VM zu erhöhen (oder zu verringern). Er weist den Steuerblock 635 an, dies zu tun. Der Steuerblock 635 kann die VM abschalten (bei Bedarf unterstützen manche VMs das Hot-Plugging von CPUs), sie rekonfigurieren, um die Anzahl von CPUs und den zugewiesenen Speicherplatz zu erhöhen, und sie mithilfe der Schnittstellen der VM-Architektur neu starten (Bsp: auf vmware „vmrun”; und Bearbeiten der Konfigurationsdatei manuell oder über APIs).
-
In noch einem weiteren nicht einschränkenden Beispiel wird ein Fall betrachtet, in dem eine monatlich erlaubte Abschaltzeit festgelegt ist. Der Anwendungsverwalter kann die gesamte bisherige Abschaltzeit während des Monats verfolgen; wenn er feststellt, dass sich die erlaubte Grenze nähert, bestellt er mithilfe der Steuerkomponente 635 zusätzliche Ressourcen.
-
Bei den folgenden Befehlen handelt es sich um nicht einschränkende tatsächliche Befehle zum Provisionieren eines Servers und Erhöhen des Speichers:
provision <Vorlage/Basis-ID-Name> <neuer ID-Name»
increase-disk <ID-Name> <Größe>
-
Angesichts der bisherigen Erläuterung wird ersichtlich, dass ein beispielhaftes Verfahren gemäß einem Aspekt der Erfindung allgemein den Schritt eines Erhaltens einer Projektion kommenden Bedarfs für eine auf einer Cloud 10 ausgeführte Anwendung 403, 511 durch einen Anwendungsressourcenverwalter 401 beinhaltet. Bei der Cloud handelt es sich um eine Infrastructure-as-a-Service-Cloud und/oder eine Plafform-as-a-Service-Cloud. Ein zusätzlicher Schritt beinhaltet ein Feststellen durch den Anwendungsressourcenverwalter 401 auf der Grundlage der Projektion, dass Ressourcen der Cloud 10, die der Anwendung zugesprochen sind, erweitert oder verringert werden müssen. Ein weiterer Schritt beinhaltet als Reaktion auf den Feststellungsschritt fallabhängig ein Ausführen (oder zumindest Festlegen der Art des Ausführens) des Erweiterns oder Verringerns der Ressourcen der Cloud, die der Anwendung zugesprochen sind.
-
Die Projektion kommenden Bedarfs könnte zum Beispiel vom Anwendungsbesitzer 513 erhalten werden. In anderen Fällen könnte die Projektion kommenden Bedarfs durch den Anwendungsressourcenverwalter 401 selbst erhalten werden, der die Projektion auf der Grundlage von Beobachtungen der Anwendung 403, 511 und von Daten von einer Cloud-Verwaltungsschnittstelle der Cloud 10 ableitet.
-
Wenn festgestellt wird, dass die Ressourcen der Cloud, die der Anwendung zugesprochen sind, verringert werden müssen, kann der Anwendungsverwalter 401 nicht genutzte Images der Cloud verbergen. In dieser Hinsicht sollte festgehalten werden, dass solche Images im Moment der Entscheidung unter Umständen nicht völlig ungenutzt sind. Zum Beispiel könnte ein Cluster von fünf Images vorhanden und jeder zur Zeit nur zu 50% genutzt sein, so dass entschieden wird, ihn auf vier oder auch drei zu reduzieren. Im Moment des Verbergens sollten die fraglichen Images in der Tat in dem Sinne ungenutzt sein, dass die Anfragen an es/sie nun zu einem anderen Ort geleitet werden. Zum Beispiel würde der Anwendungsressourcenverwalter 401 im Falle, dass für einen gegebenen Cluster ein Lastausgleicher verwendet wird, die Richtlinie des Lastausgleichers so ändern, dass Anfragen nun nur zu (der Anwendungskomponente der) verbleibenden drei oder vier Images gesendet werden.
-
Wenn festgestellt wird, dass die Ressourcen der Cloud, die der Anwendung zugesprochen sind, erweitert werden müssen, kann der Anwendungsverwalter 401 neue Images in der Cloud provisionieren. In manchen Fällen kann dies mit sich bringen, dass der Anwendungsressourcenverwalter auf den neuen Images Software auf Anwendungsebene und/oder Daten provisioniert.
-
Wie festgehalten, wird der Anwendungsressourcenverwalter 401 in manchen Fällen in der Cloud 10 ausgeführt. In anderen Fällen wird der Anwendungsressourcenverwalter auf einer anderen Datenverarbeitungsressource als der Cloud ausgeführt.
-
In manchen Fällen beinhaltet der Feststellungsschritt ein Finden der kostengünstigsten Art, den projizierten kommenden Bedarf zu decken.
-
Es sollte festgehalten werden, dass der projizierte kommende Bedarf hinsichtlich der Leistung und/oder Verfügbarkeit festgelegt werden kann.
-
Es sollte ebenfalls festgehalten werden, dass der Anwendungsverwalter in manchen Fällen die Anwendung neu erkennt, d. h. (z. B. mit einem Erkennungswerkzeug) Änderungen erkennt, die durch den Serveradministrator direkt an der Anwendungssoftware 517 und/oder den zugrundeliegenden Images 519 vorgenommen wurden (im Gegensatz zu Änderungen, die mithilfe eines Anwendungsverwalterwerkzeugs gemäß einer oder mehrerer Ausführungsformen der Erfindung vorgenommen wurden).
-
Des Weiteren ist angesichts der bisherigen Erläuterung ersichtlich, dass ein beispielhaftes System gemäß einem Aspekt der Erfindung allgemein eine Cloud 10 enthält. Bei der Cloud handelt es sich um eine Infrastructure-as-a-Service-Cloud und/oder eine Platform-as-a-Service-Cloud. Ebenfalls enthalten sind mindestens eine Anwendung 403, 511, die in der Cloud ausgeführt wird, und ein Anwendungsressourcenverwalter 401. Der Anwendungsressourcenverwalter 401 erhält eine Projektion kommenden Bedarfs für die Anwendung 403, 511; stellt auf der Grundlage der Projektion fest, dass Ressourcen der Cloud 10, die der Anwendung 403, 511 zugesprochen sind, entweder erweitert oder verringert werden müssen; und führt als Reaktion auf das Feststellen entweder ein Erweitern oder Verringern der Ressourcen der Cloud, die der Anwendung zugesprochen sind, durch.
-
Die Projektion kommenden Bedarfs könnte zum Beispiel vom Anwendungsbesitzer 513 erhalten werden. In anderen Fällen kann die Cloud 10 eine Cloud-Verwaltungsschnittstelle enthalten, und der Anwendungsressourcenverwalter erhält die Projektion durch Ableiten der Projektion auf der Grundlage von Beobachtungen der Anwendung und von Daten von der Cloud-Verwaltungsschnittstelle der Cloud. In dieser Hinsicht sollte festgehalten werden, dass die Cloud-Verwaltungsplattform 523 die Cloud-Verwaltungsschnittstelle bereitstellt, d. h. eine Plattform enthält Code und Ähnliches, Benutzer der Cloud können üblicherweise jedoch nicht auf den Code zugreifen, sondern z. B. nur auf eine Webseite, wo sie ihre aktuellen Images sehen und „Provisioniere ein oder mehrere Images für mich” oder „Erweitere die Ressourcen für dieses Image um X” angeben können. Bei der Webseite handelt es sich um die Schnittstelle und in einer oder mehreren Ausführungsformen besitzt sie eine programmatische Version für Programme, um dieselben Eingaben vorzunehmen.
-
Zu den der Anwendung zugesprochenen Ressourcen der Cloud können zum Beispiel Images zählen. In manchen Fällen, in denen der Anwendungsressourcenverwalter feststellt, dass die Ressourcen der Cloud, die der Anwendung zugesprochen sind, verringert werden müssen, führt der Anwendungsressourcenverwalter das Verringern durch Verbergen ungenutzter Images aus.
-
In manchen Fällen stellt der Anwendungsressourcenverwalter fest, dass die Ressourcen der Cloud, die der Anwendung zugesprochen sind, erweitert werden müssen, und der Anwendungsressourcenverwalter führt das Verringern durch Provisionieren neuer Images in der Cloud aus. Wie festgehalten, kann dies in manchen Fällen mit sich bringen, dass der Anwendungsressourcenverwalter auf den neuen Images Software auf Anwendungsebene und/oder Daten provisioniert.
-
Wie ebenfalls festgehalten, kann der Anwendungsressourcenverwalter in der Cloud oder auf einer anderen Datenverarbeitungsressource als der Cloud ausgeführt werden; eine solche Ressource bildet in manchen Fällen auch einen Teil des Systems. Es ist ersichtlich, dass der Server 12 gleichermaßen für eine Nicht-Cloud-Datenverarbeitungsressource steht, auf welcher der Anwendungsressourcenverwalter 401 realisiert werden könnte, auch wenn er als eine Cloud-Ressource der Cloud 10 gezeigt ist. Des Weiteren kann eine zusätzliche, von der Cloud verschiedene Datenverarbeitungsressource auch einen Fall einschließen, in dem der Verwalter 401 auf einer anderen Cloud als der von ihm verwalteten ausgeführt wird.
-
Wie in 6 zu sehen ist, enthält der Anwendungsressourcenverwalter in manchen Fällen wiederum einen Verwaltungsteil 633 und einen Steuerteil 635. In solchen Fällen kann es sich beim Verwaltungsteil des Anwendungsressourcenverwalters um die Komponente handeln, die auf der Grundlage der Projektion feststellt, dass die der Anwendung zugesprochenen Ressourcen der Cloud entweder erweitert oder verringert werden müssen; und beim Steuerteil des Anwendungsressourcenverwalters kann es sich um die Komponente handeln, die als Reaktion auf das Feststellen das Erweitern oder Verringern der Ressourcen, die der Anwendung zugesprochenen sind, ausführt.
-
Einzelheiten von beispielhaften Systemen und Herstellungsartikeln
-
Wie für den Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als ein System, Verfahren, oder Computerprogrammprodukt ausgebildet werden. Dementsprechend können Aspekte der vorliegenden Erfindung in Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder in einer Ausführungsform ausgebildet werden, die Software- und Hardware-Aspekte kombiniert, was hierin sämtlich allgemein als „Schaltung”, „Modul” oder „System” bezeichnet sein kann. Weiterhin können Aspekte der vorliegenden Erfindung in Form eines Computerprogrammprodukts ausgebildet werden, das in einem oder mehreren computerlesbaren Medien mit darauf enthaltenem computerlesbarem Programmcode enthalten sein kann.
-
Eine oder mehrere Ausführungsformen der Erfindung oder Elemente davon können in der Form einer Vorrichtung realisiert werden, die einen Speicher und mindestens einen Prozessor beinhaltet, der mit dem Speicher verbunden und in der Lage ist, die beispielhaften Verfahrensschritte durchzuführen.
-
Eine oder mehrere Ausführungsformen können Software nutzen, die auf einem universellen Computer oder einer Workstation ausgeführt wird. Unter Bezugnahme auf 1 kann eine solche Realisierung zum Beispiel einen Prozessor 16, einen Speicher 28 und eine Eingabe/Ausgabe-Schnittstelle 22 zu einer Anzeige 24 und eine oder mehrere externe Einheiten 14, wie beispielsweise eine Tastatur, eine Zeigeeinheit oder Ähnliches verwenden. Der hierin verwendete Begriff „Prozessor” soll jede Verarbeitungseinheit einschließen, wie beispielsweise eine Verarbeitungseinheit, die eine Zentraleinheit (central processing unit CPU) und/oder andere Formen von Verarbeitungsschaltungen einschließt. Weiterhin kann sich der Begriff „Prozessor” auf mehr als einen einzelnen Prozessor beziehen. Der Begriff „Speicher” soll Speicher in Verbindung mit einem Prozessor oder einer CPU, wie beispielsweise RAM (Speicher mit wahlfreiem Zugriff) 30, ROM (Nur-Lese-Speicher), eine fest eingebaute Speichereinheit (z. B. ein Festplattenlaufwerk 34), eine Wechselspeichereinheit (z. B. eine Diskette), einen Flash-Speicher und Ähnliches einschließen. Darüber hinaus soll der hierin verwendete Ausdruck „Eingabe/Ausgabe-Schnittstelle” eine Schnittstelle zu beispielsweise einem oder mehreren Mechanismen zum Eingeben von Daten in die Verarbeitungseinheit (zum Beispiel eine Maus) und einen oder mehrere Mechanismen zum Bereitstellen von Ergebnissen in Verbindung mit der Verarbeitungseinheit (zum Beispiel einen Drucker) einschließen. Der Prozessor 16, der Speicher 28 und die Eingabe/Ausgabe-Schnittstelle 22 können zum Beispiel über einen Bus 18 als Teil einer Datenverarbeitungseinheit 12 miteinander verbunden sein. Geeignete Verbindungen zum Beispiel über den Bus 18 können auch einer Netzwerkschnittstelle 20, wie beispielsweise einer Netzwerkkarte, bereitgestellt werden, die bereitgestellt werden kann, um eine Verbindung mit einem Computernetzwerk und einer Medienschnittstelle, wie beispielsweise einer Diskette oder einem CD-ROM-Laufwerk, herzustellen, die bereitgestellt werden kann, um eine Verbindung mit geeigneten Medien herzustellen.
-
Dementsprechend kann Computersoftware, die Anweisungen zum Durchführen der hierin beschriebenen Verfahrensweisen der Erfindung enthält, in einer oder mehreren der zugehörigen Speichereinheiten (zum Beispiel ROM, fest eingebauter oder Wechselspeicher) und bei Verwendungsbereitschaft teilweise oder als Ganzes (zum Beispiel in RAM) geladen und durch eine CPU ausgeführt werden. Zu einer solchen Software können, ohne auf diese beschränkt zu sein, Firmware, residente Software, Mikrocode und Ähnliches zählen.
-
Ein Datenverarbeitungssystem, das für das Speichern und/oder Ausführen von Programmcode geeignet ist, beinhaltet mindestens einen über einen Systembus 18 direkt oder indirekt mit Speicherelementen 28 verbundenen Prozessor 16. Die Speicherelemente können lokalen Speicher, der während der tatsächlichen Ausführung des Programmcodes eingesetzt wird, Massenspeicher und Cachespeicher 32 einschließen, welche das vorübergehende Speichern von mindestens einigem Programmcode bereitstellen, um die Anzahl des Ladens von Code vom Massenspeicher während der Ausführung zu verringern.
-
Eingabe/Ausgabe- bzw. E/A-Einheiten (einschließlich, jedoch nicht beschränkt auf Tastaturen, Anzeigeeinheiten, Zeigeeinheiten und Ähnliches) können mit dem System entweder direkt oder über zwischengeschaltete E/A-Steuereinheiten verbunden sein.
-
Die Netzwerkadapter 20 können ebenfalls mit dem System verbunden sein, damit das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten durch zwischengeschaltete private oder öffentliche Netzwerke verbunden werden kann. Modems, ein Kabelmodem und Ethernet-Karten stellen nur einige wenige der momentan erhältlichen Typen von Netzwerkadaptern dar.
-
Der hierin einschließlich der Ansprüche verwendete Begriff „Server” schließt ein physisches Datenverarbeitungssystem (zum Beispiel das in 1 gezeigte System 12) mit ein, auf dem ein Serverprogramm ausgeführt wird. Es ist ersichtlich, dass ein derartiger physischer Server eine Anzeige und eine Tastatur aufweisen kann, jedoch nicht muss.
-
Wie festgehalten, können Aspekte der vorliegenden Erfindung in Form eines Computerprogrammprodukts ausgebildet werden, das in einem oder mehreren computerlesbaren Medien mit darauf enthaltenem computerlesbarem Programmcode enthalten sein kann. Jede beliebige Kombination aus einem oder mehreren computerlesbaren Medien kann verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um ein System, eine Vorrichtung oder eine Einheit elektronischer, magnetischer, optischer, elektromagnetischer, Infrarot oder Halbleiter verwendender Art sowie jede beliebige geeignete Kombination des Vorgenannten handeln. Zu spezielleren Beispielen für das computerlesbare Speichermedium kann Folgendes gehören (nicht abschließende Liste): eine elektrische Verbindung mit einer oder mehreren Leitungen, eine transportable Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (random access memory (RAM)), ein Nur-Lese-Speicher (read-only memory (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (erasable programmable read-only memory (EPROM) oder Flash-Speicher), ein Lichtwellenleiter, ein transportabler Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorgenannten. Im Kontext dieses Dokuments kann es sich bei einem computerlesbaren Speichermedium um jedes gegenständliche Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen beinhalten oder speichern kann.
-
Zu einem computerlesbaren Signalmedium kann ein verbreitetes Datensignal mit darin zum Beispiel in einem Basisband oder als Teil einer Trägerwelle ausgebildetem computerlesbarem Programmcode zählen. Solch ein verbreitetes Signal kann in jeder beliebigen einer Vielfalt von Formen ausgebildet werden, einschließlich, ohne auf diese beschränkt zu sein, elektromagnetische, optische oder jede geeignete Kombination davon. Bei einem computerlesbaren Signalmedium kann es sich um jedes computerlesbare Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen übertragen, verbreiten oder transportieren kann.
-
Der in einem computerlesbaren Medium enthaltene Programmcode kann mittels eines beliebigen geeigneten Mediums übertragen werden, einschließlich, ohne auf diese beschränkt zu sein, kabellose, kabelgebundene, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder eine beliebige geeignete Kombination des Vorgenannten.
-
Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen oder eine Skriptsprache wie Perl. In manchen Fällen kann ein optimierender Löser als eine Teilkomponente verwendet werden, z. B. ILOG CPLEX (ein hochleistungsfähiger mathematischer Programmierlöser für lineare Programmierung, gemischte Ganzzahlprogrammierung und quadratische Programmierung, das von der International Business Machines Corporation, Armonk, New York, USA, erhältlich ist). Allgemein kann der Programmcode vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede beliebige Art von Netzwerk, darunter ein lokales Netzwerk (local area network (LAN)) oder ein Weitverkehrsnetzwerk (wide area network (WAN)) verbunden sein, oder es kann eine Verbindung zu einem externen Computer (zum Beispiel mittels eines Internetdienstanbieters über das Internet) hergestellt werden. In einer oder mehreren Ausführungsformen ist ein wesentlicher Teil des Codes derjenige, welcher dem Anwendungsressourcenverwalter zugehörig ist; er kann in der Cloud oder außerhalb ausgeführt werden. Zumindest in manchen Fällen ist es wahrscheinlicher, dass er sich auf einem Server anstatt auf einer Endbenutzermaschine befindet (wenn überhaupt, dann eine Endbenutzermaschine des Anwendungsbesitzers), es ist jedoch nicht unmöglich, dass der Anwendungsbesitzer ihn von einem Laptop aus oder Ähnlichem ausführt.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Abbildungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß den Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Abbildungen von Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Abbildungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen realisiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines universellen Computers, eines zweckbestimmten Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen erzeugen.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anleiten kann, auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel einschließlich Anweisungen erzeugen, welche die im Block oder in den Blöcken des Ablaufplans und/oder des Blockschaubildes angegebene Funktion/Handlung ausführen.
-
Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Operationsschritten hervorzurufen, um einen auf dem Computer realisierten Prozess so zu erzeugen, dass die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen bereitstellen.
-
Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und die Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block im Ablaufplan oder in den Blockschaubildern für ein Modul, ein Segment oder einen Codeabschnitt stehen, der eine oder mehrere ausführbare Anweisungen zum Realisieren der angegebenen logischen Funktion(en) aufweist. Es soll zudem angemerkt werden, dass bei einigen alternativen Realisierungen die im Block angegebenen Funktionen in anderer Reihenfolge als der in den Figuren angegebenen auftreten können. Zum Beispiel können zwei aufeinander folgend abgebildete Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal abhängig von der betreffenden Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Abbildung von Ablaufplänen und Kombinationen von Blöcken in den Blockschaubildern und/oder der Abbildung von Ablaufplänen durch zweckbestimmte hardwaregestützte Systeme oder Kombinationen von zweckbestimmter Hardware und Computeranweisungen realisiert werden kann, welche die angegebenen Funktionen oder Handlungen durchführen.
-
Es sollte festgehalten werden, dass jedes der hierin beschriebenen Verfahren einen zusätzliche Schritt des Bereitstellens eines Systems beinhalten kann, das auf einem computerlesbaren Speichermedium enthaltene abgegrenzte Softwaremodule aufweist; zu den Modulen kann zum Beispiel jedes beliebige oder alle der in den Blockschaubildern abgebildeten und/oder hierein beschriebenen Elemente zählen; in beispielhafter und nicht einschränkender Weise ist in 6 ein Anwendungsressourcenverwalter-Modul mit einem oder mehreren Teilmodulen, wie beispielsweise einem Richtlinien-Teilmodul, einem Verwaltungs-Teilmodul, einem Steuer-Teilmodul und einem Interpretations-Teilmodul veranschaulicht. Die Verfahrensschritte können dann mithilfe der vorstehend beschriebenen abgegrenzten Software-Module und/oder Teilmodule des Systems ausgeführt werden, die auf einem oder mehreren Hardware-Prozessoren wie beispielsweise 16 ausgeführt werden. Weiterhin kann ein Computerprogrammprodukt ein computerlesbares Speichermedium mit Code aufweisen, der so eingerichtet ist, dass er ausgeführt werden kann, um einen oder mehrere hierin beschriebene Verfahrensschritte auszuführen, wozu auch die Provisionierung des Systems mit den abgegrenzten Software-Modulen zählt. In manchen Fällen wird der Feststellungsschritt durch das Verwaltungs-Teilmodul ausgeführt, das auf dem mindestens einen Hardware-Prozessor ausgeführt wird, und das Erweitern oder Verringern wird durch das Steuer-Teilmodul ausgeführt, das auf dem mindestens einen Hardware-Prozessor ausgeführt wird. Der Schritt des Erhaltens kann sich allgemein so vorgestellt werden, dass er durch das Anwendungsressourcenverwalter-Modul ausgeführt wird; wenn die Projektion vom Anwendungsbesitzer erhalten wird, kann das Richtlinien-Teilmodul verwendet werden, wohingegen das Interpretations-Teilmodul verwendet werden kann, wenn der Anwendungsressourcenverwalter selbst die Projektionen aus der Anwendung und/oder Daten aus der Cloud-Verwaltungsschnittstelle ableitet.
-
In jedem Fall versteht es sich, dass die hierin veranschaulichten Komponenten in vielfältigen Formen von Hardware, Software oder Kombinationen davon realisiert werden können; zum Beispiel anwendungspezifische integrierte Schaltung(en) (application specific integrated circuit(s) ASICS), funktionelle Schaltungen, ein oder mehrere geeignet programmierte universelle digitale Computer mit zugehörigem Speicher und Ähnliches. Bei den gegebenen Lehren der hierin bereitgestellten Erfindung ist der entsprechende Fachmann in der Lage, andere Realisierungen der Komponenten der Erfindung in Erwägung zu ziehen.
-
Die hierin verwendete Terminologie dient lediglich dem Zwecke des Beschreibens besonderer Ausführungsformen und ist nicht als die Erfindung einschränkend aufzufassen. Die hierin verwendeten Singularformen „ein”, „eine” und „der”, „die”, „das” sowie deren Deklinationen sollen ebenso die Pluralformen einschließen, es sei denn dies ist im Kontext deutlich anderweitig angegeben. Es versteht sich weiterhin, dass die Begriffe „aufweist” und/oder „aufweisend” in diesem Dokument das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Vorgängen, Elementen und/oder Komponenten angeben, jedoch nicht das Vorhandensein oder Hinzufügen eines oder mehrerer Merkmale, ganzer Zahlen, Schritte, Vorgänge, Elemente, Komponenten und/oder Gruppen davon ausschließen.
-
Die entsprechenden Strukturen, Materialien, Handlungen und Entsprechungen aller Mittel oder Schritte sowie Funktionselemente in den nachfolgenden Ansprüchen sollen alle Strukturen, Materialien oder Handlungen zum Durchführen der Funktion in Kombination mit anderen beanspruchten Elementen, wie sie im Einzelnen beansprucht sind, einschließen. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgelegt, ist jedoch nicht als erschöpfend oder auf die Erfindung in der offenbarten Form beschränkt aufzufassen. Viele Änderungen und Variationen sind für den Fachmann naheliegend, ohne vom Umfang und Geist der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erklären und anderen Fachleuten ein Verständnis der Erfindung für vielfältige Ausführungsformen mit vielfältigen Änderungen, wie sie für den besonderen betrachteten Gebrauch geeignet sind, zu ermöglichen.