-
TECHNISCHES GEBIET
-
Allgemein betrifft die vorliegende Erfindung die Verbesserung von Bereitstellungszeiten von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung (z. B. einer Cloud-Computing-Umgebung). Insbesondere betrifft die vorliegende Erfindung das Verwenden von Softwarekomponenten-Metadaten zum Bereitstellen von virtuellen Maschinen in einer vernetzten Datenverarbeitungsumgebung.
-
HINTERGRUND
-
Die vernetzte Datenverarbeitungsumgebung (z. B. Cloud-Computing-Umgebung) ist eine Erweiterung der Vorgänger-Grid-Umgebung, wobei mehrere Grids (Gitter) und andere Datenverarbeitungsressourcen des Weiteren um eine oder mehrere zusätzliche Abstraktionsschichten erweitert werden können (z. B. eine Cloud-Schicht), wodurch ungleichartige Einheiten sich für einen Endnutzer als ein einziger Pool von nahtlosen Ressourcen darstellen. Zu diesen Ressourcen können unter anderem solche Elemente wie physische oder logische Datenverarbeitungs-Engines, Server und Einheiten, Einheitenspeicher, Speichereinheiten gehören.
-
Cloud-Computing-Dienste werden üblicherweise in einem relativ statischen Hardware-Pool ausgeführt, wobei Betriebssysteme und Anwendungen genutzt und neu konfiguriert werden, um die Datenverarbeitungsbedürfnisse von Nutzern zu erfüllen. Innerhalb der Grenzen der Cloud-Umgebung können Anwendungsabbilder installiert und überschrieben werden, Internet-Protocol-(IP-)Adressen können modifiziert werden, und reale und virtuelle Prozessoren/Maschinen können zugeordnet werden, um sich ändernde Geschäftsbedürfnisse zu erfüllen. Gegenwärtig können verschiedene Cloud-Dienstanbieter unterschiedliche lange Zeiten benötigen, um virtuelle Maschinen bereitzustellen, die von Nutzern angefordert werden. Zum Beispiel können einige Cloud-Anbieter eine bestimmte Ressource sehr schnell bereitstellen, wogegen andere dazu länger brauchen. Daher können Anforderungen bestehen konsistente Bereitstellungszeiten für Datenverarbeitungsressourcen zu erzielen.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Ausführungsformen der vorliegenden Erfindung stellen eine Gruppe von algorithmischen Verfahren bereit, die verwendet werden können, um einen vorab bereitgestellten Pool von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung zu erzeugen. Insbesondere wird eine Installationszeit für mögliche Kombinationen von Softwarekomponenten einer VM in einer Vielzahl von Softwarekomponenten-Kombinationen berechnet. Jede einzelne Installationszeit wird durch einen Wert gewichtet, der einem Bereitstellungsverlauf von Softwarekomponenten zugehörig ist. Zumindest ein Teil der Softwarekomponenten-Kombinationen ist dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) zugeordnet.
-
Ein erster Aspekt der vorliegenden Erfindung stellt ein durch einen Computer umgesetztes Verfahren zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung bereit, aufweisend: das Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; das Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; und das Zuordnen zumindest eines Teils der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs).
-
Ein zweiter Aspekt der vorliegenden Erfindung stellt ein System zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung bereit, aufweisend: ein Speichermedium, das Anweisungen aufweist; einen Bus, der an das Speichermedium gekoppelt ist; und einen Prozessor, der an den Bus gekoppelt ist, der, wenn die Anweisungen ausgeführt werden, das System veranlasst zum: Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; und Zuordnen zumindest eines Teils der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs).
-
Ein dritter Aspekt der vorliegenden Erfindung stellt ein Computerprogrammprodukt zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung bereit, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium und Programmanweisungen aufweist, die auf dem computerlesbaren Speichermedium gespeichert sind zum: Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; und Zuordnen zumindest eines Teils der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs).
-
Ein vierter Aspekt der vorliegenden Erfindung stellt ein Verfahren zum Nutzen eines Systems zum Erzeugen eines vorab bereitgestellten Pools von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung bereit, aufweisend: das Nutzen einer Computerinfrastruktur, die betriebsfähig ist zum: Berechnen einer Installationszeit für jede Softwarekomponenten-Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen; Gewichten jeder einzelnen Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist; und Zuordnen zumindest eines Teils der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs).
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Diese und andere Merkmale dieser Erfindung lassen sich besser aus der folgenden ausführlichen Beschreibung der verschiedenen Aspekte der Erfindung in Verbindung mit den begleitenden Zeichnungen verstehen, wobei:
-
1 einen Cloud-Computing-Knoten gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
2 eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
3 Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
4 eine Systemdarstellung gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
5 ein Installationsschaubild gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
6 einen Verfahrensablaufplan gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu. Die Zeichnungen sind rein schematische Darstellungen, die keine speziellen Parameter der Erfindung darstellen sollen. Die Zeichnungen sollen nur typische Ausführungsformen der Erfindung veranschaulichen und sollten deshalb nicht als den Schutzumfang der Erfindung einschränkend betrachtet werden. In den Zeichnungen stellt eine gleiche Nummerierung gleiche Elemente dar.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Veranschaulichende Ausführungsformen werden hierin im Folgenden ausführlicher unter Bezugnahme auf die begleitenden Zeichnungen beschrieben, in denen beispielhafte Ausführungsformen gezeigt sind. Diese Offenbarung kann jedoch in vielen verschiedenen Formen verkörpert werden und sollte nicht als auf die hierin dargelegten beispielhaften Ausführungsformen eingeschränkt ausgelegt werden. Diese beispielhaften Ausführungsformen werden stattdessen bereitgestellt, damit diese Offenbarung gründlich und vollständig ist und Fachleuten den Schutzumfang dieser Offenbarung umfassend vermittelt. In dieser Beschreibung können Details von bekannten Merkmalen und Techniken weggelassen sein, um eine unnötige Unverständlichkeit der dargestellten Ausführungsformen zu vermeiden.
-
Die hierin verwendete Terminologie dient nur zum Zweck der Beschreibung von bestimmten Ausführungsformen und ist nicht dazu gedacht, diese Offenbarung einzuschränken. Wie hierin verwendet sollen die Singularformen „ein”, „eine” und „der/die/das” auch die Pluralformen mit einschließen, es sei denn, der Kontext gibt eindeutig anderes vor. Ferner gibt die Verwendung der Begriffe „ein”, „eine” usw. keine Einschränkung einer Menge an, sondern gibt stattdessen das Vorhandensein von mindestens einem der Elemente an, auf die Bezug genommen wird. Der Begriff „Gruppe” soll eine Menge von mindestens einem bedeuten. Es versteht sich ferner, dass die Begriffe „weist auf” und/oder „aufweisend” oder „enthält” und/oder „enthaltend” bei Verwendung in dieser Spezifikation das Vorhandensein von ausgewiesenen Merkmalen, Bereichen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, Bereichen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon aber nicht ausschließen.
-
Ausführungsformen der vorliegenden Erfindung stellen eine Gruppe von algorithmischen Verfahren bereit, die verwendet werden können, um einen vorab bereitgestellten Pool von virtuellen Maschinen (VMs) in einer vernetzten Datenverarbeitungsumgebung zu erzeugen. Insbesondere wird eine Installationszeit für mögliche Kombinationen von Softwarekomponenten einer VM in einer Vielzahl von Softwarekomponenten-Kombinationen berechnet. Jede einzelne Installationszeit wird durch einen Wert gewichtet, der einem Bereitstellungsverlauf von Softwarekomponenten zugehörig ist. Zumindest ein Teil der Softwarekomponenten-Kombinationen ist dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) zugeordnet.
-
Es ist von vornherein zu verstehen, dass, obwohl diese Offenbarung eine detaillierte Beschreibung von Cloud-Computing enthält, die Umsetzung der hierin zitierten Lehren nicht auf eine Cloud-Computing-Umgebung begrenzt ist. Die Ausführungsformen der vorliegenden Erfindung sind stattdessen fähig, in Verbindung mit jedem anderen Typ einer jetzt bekannten oder später entwickelten Datenverarbeitungsumgebung umgesetzt zu werden.
-
Cloud-Computing ist ein Modell einer Dienstleistung zum Ermöglichen eines bequemen On-Demand-Netzwerkzugriffs (Netzzugriff bei Bedarf) auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z. B. Netzwerke, Netzbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand oder Interaktion mit einem Anbieter des Diensts rasch bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Merkmale, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle enthalten.
-
Die Merkmale sind wie folgt:
On-Demand-Selfservice: Ein Cloud-Nutzer kann einseitig und je nach Bedarf automatisch Datenverarbeitungsfunktionen, wie z. B. Serverzeit und Netzwerkspeicher, ohne menschliche Interaktion mit dem Anbieter des Diensts bereitstellen.
-
Breiter Netzwerkzugriff: Funktionen stehen über ein Netzwerk zur Verfügung und auf sie wird über Standardmechanismen zugegriffen, die den Einsatz über heterogene Thin Client- oder Thick Client-Plattformen unterstützen (z. B. Mobiltelefone, Laptops und PDAs).
-
Ressourcen-Pooling: Die Datenverarbeitungsressourcen des Anbieters sind in einem Pool zusammengeschlossen, um unter Verwendung eines Multi-Tenant-Modells mehreren Nutzern mit unterschiedlichen physischen und virtuellen Ressourcen zu dienen, deren Zuweisung oder Zuweisungsaufhebung je nach Bedarf dynamisch erfolgt. Es herrscht insofern ein Gefühl der Standortunabhängigkeit, dass der Nutzer im Allgemeinen keine Kontrolle oder Kenntnis in Bezug auf den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene anzugeben (z. B. Land, Bundesstaat oder Rechenzentrum).
-
Schnelle Elastizität: Funktionen können rasch und elastisch, in einigen Fällen automatisch, für eine schnelle Erweiterung bereitgestellt und für eine schnelle Reduzierung rasch freigegeben werden. Für den Nutzer scheinen die zur Bereitstellung verfügbaren Funktionen oft unbegrenzt zu sein und können jederzeit in beliebiger Menge erworben werden.
-
Richtig bemessener Dienst: Cloud-Systeme kontrollieren und optimieren Ressourcennutzung durch wirksamen Einsatz einer Messfunktion auf einer passenden Abstraktionsebene, die dem Diensttyp entspricht (z. B. Speicher, Verarbeitung, Bandbreite und aktive Nutzerkonten). Die Inanspruchnahme von Ressourcen kann überwacht, gesteuert und gemeldet werden, was sowohl für den Anbieter als auch den Nutzer des in Anspruch genommenen Dienstes für Transparenz sorgt.
-
Es gibt folgende Dienstmodelle:
Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu nutzen. Auf die Anwendungen kann über eine Thin Client-Schnittstelle, Browser (wie beispielsweise einen Web-z. B. eMail auf Web-Grundlage), von verschiedenen Client-Einheiten aus zugegriffen werden. Der Nutzer verwaltet weder noch steuert er die zu Grunde liegende Cloud-Infrastruktur, einschließlich Netzwerk, Server, Betriebssysteme, Speicher oder auch einzelne Anwendungsfunktionen, ausgenommen möglicherweise begrenzte nutzerspezifische Einstellungen einer Anwendungskonfiguration.
-
Plafform as a Service (PaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, auf der Cloud-Infrastruktur vom Nutzer erstellte oder erworbene Anwendungen zu nutzen, die unter Verwendung von Programmiersprachen und Tools erstellt wurden, die von dem Anbieter unterstützt werden. Der Nutzer verwaltet weder noch steuert er die zu Grunde liegende Cloud-Infrastruktur, einschließlich Netzwerke, Server, Betriebssysteme oder Speicher, aber er hat die Kontrolle über die genutzten Anwendungen und möglicherweise die Hosting-Umgebungskonfigurationen von Anwendungen.
-
Infrastructure as a Service (IaaS): Die für den Nutzer bereitgestellte Funktion besteht in der Bereitstellung von Verarbeitung, Speicher, Netzwerken und anderen grundlegenden Datenverarbeitungsressourcen, wobei der Nutzer in der Lage ist, beliebige Software zu nutzen und auszuführen, zu der auch Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet weder noch steuert er die zu Grunde liegende Cloud-Infrastruktur, aber er hat die Kontrolle über Betriebssysteme, Speicher, genutzte Anwendungen und möglicherweise eine begrenzte Kontrolle über ausgewählte Netzwerkkomponenten (z. B. Host-Firewalls).
-
Es gibt folgende Nutzungsmodelle:
Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
-
Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Community, die gemeinsame Problemstellungen hat (z. B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
-
Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und ist im Besitz einer Organisation, die Cloud-Dienste verkauft.
-
Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung von zwei oder mehr Clouds (Private, Community oder Public), die eindeutige Entitäten bleiben, aber durch eine standardisierte oder proprietäre Technologie vereinigt sind, die eine Daten- und Anwendungsportabilität ermöglicht (z. B. Cloud Bursting für einen Lastausgleich zwischen Clouds).
-
Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert mit Schwerpunkt auf Statusunabhängigkeit, niedriger Kopplung, Modularität und semantischer Interoperabilität. Das Kernstück des Cloud Computing ist eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten aufweist.
-
Unter Bezugnahme auf 1 wird eine schematische Darstellung eines Beispiels für einen Cloud-Computing-Knoten gezeigt. Der Cloud-Computing-Knoten 10 ist nur ein Beispiel für einen geeigneten Cloud-Computing-Knoten und soll keinerlei Einschränkung in Bezug auf den Schutzumfang der Verwendung oder Funktionalität der Ausführungsformen der hierin beschriebenen Erfindung andeuten. Ungeachtet dessen lässt sich der Cloud-Computing-Knoten 10 umsetzen und/oder kann jede der im Vorgenannten erläuterten Funktionalitäten ausführen.
-
Im Cloud-Computing-Knoten 10 ist ein Computersystem/Server 12 vorhanden, das bzw. der mit zahlreichen anderen Umgebungen oder Konfigurationen für Universal- oder Sonder-Datenverarbeitungssysteme betriebsfähig ist. Zu Beispielen für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem Computersystem/Server 12 geeignet sein können, zählen PC-Systeme, Servercomputersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Multiprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der oben genannten Systeme oder Einheiten und dergleichen aufweisen, sie sind aber nicht darauf beschränkt.
-
Das Computersystem/der Server 12 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, wie beispielsweise Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen umsetzen. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, wobei Aufgaben von entfernt angeordneten Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule sich sowohl in lokalen als auch entfernt angeordneten Computersystem-Speichermedien befinden, die Arbeitsspeichereinheiten enthalten.
-
Wie in 1 gezeigt, wird das Computersystem/der Server 12 in dem Cloud-Computing-Knoten 10 in der Form einer Universal-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/Servers 12 können einen oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemspeicher 28 und einen Bus 18 enthalten, der verschiedene Systemkomponenten einschließlich des Systemspeichers 28 an den Prozessor 16 koppelt, sie sind aber nicht darauf beschränkt.
-
Der Bus 18 stellt einen oder mehrere von mehreren beliebigen Typen von Busstrukturen dar, einschließlich eines Arbeitsspeicherbusses oder Arbeitsspeicher-Controllers, eines Peripheriebusses, eines Accelerated Graphics Port und eines Prozessor- oder lokalen Busses unter Verwendung von einer aus einer Vielfalt von Busarchitekturen. Als Beispiel und nicht einschränkend enthalten derartige Architekturen einen Industry Standard Architecture(ISA)-Bus, Micro Channel Architecture(MCA)-Bus, Enhanced ISA(EISA)-Bus, einen lokalen Video Electronics Standards Association(VESA)-Bus und Peripheral Component Interconnects(PCI)-Bus.
-
Das Computersystem/der Server 12 weist typischerweise eine Vielfalt von Medien auf, die von einem Computersystem gelesen werden können. Derartige Medien können alle verfügbaren Medien sein, auf die von dem Computersystem/Server 12 zugegriffen werden kann, und sie enthalten sowohl flüchtige als auch nicht flüchtige Medien, austauschbare und nicht austauschbare Medien.
-
Der Systemspeicher 28 kann vom Computersystem lesbare Medien in Form von flüchtigem Arbeitsspeicher enthalten, wie beispielsweise einen Direktzugriffspeicher (RAM) 30 und/oder einen Cache-Zwischenspeicher 32. Das Computersystem/der Server 12 kann ferner andere austauschbare/nicht austauschbare, flüchtige/nicht flüchtige Computersystem-Speichermedien enthalten. Nur als Beispiel kann das Speichersystem 34 für das Lesen von und das Schreiben auf nicht austauschbare, nicht flüchtige Magnetdatenträger bereitgestellt werden (nicht gezeigt und typischerweise als „Festplatte” bezeichnet). Obwohl nicht gezeigt, können ein Magnetplattenlaufwerk für das Auslesen und Beschreiben einer austauschbaren, nicht flüchtigen Magnetplatte (z. B. eine „Floppy-Disk”) und ein optisches Plattenlaufwerk für das Auslesen oder Beschreiben einer austauschbaren, nicht flüchtigen optischen Platte wie einem CD-ROM, DVD-ROM oder andere optische Medien bereitgestellt werden. In solchen Fällen können alle über eine oder mehrere Datenträgerschnittstellen mit dem Bus 18 verbunden werden. Wie ferner im Folgenden veranschaulicht und beschrieben wird, kann der Speicher 28 mindestens ein Programmprodukt mit einer Gruppe (z. B. mindestens einem) von Programmmodulen enthalten, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Die Ausführungsformen der Erfindung können als ein computerlesbares Signalmedium umgesetzt werden, das ein verbreitetes Datensignal mit einem darin integrierten computerlesbaren Programmcode enthalten kann (z. B. im Basisband oder als Teil einer Trägerwelle). Ein derartiges verbreitetes Signal kann jede von einer Vielfalt von Formen annehmen, einschließlich elektromagnetisch, optisch oder jede geeignete Kombination davon, ist aber nicht darauf beschränkt. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung übertragen, verbreiten oder transportieren kann.
-
In einem computerlesbaren Medium integrierter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder jede geeignete Kombination des Vorgenannten, ist aber nicht darauf beschränkt.
-
Das Programm/Dienstprogramm 40, das eine Gruppe von (mindestens einem) von Programmmodulen 42 aufweist, kann beispielsweise und nicht einschränkend im Speicher 28 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination davon können alle jeweils eine Umsetzung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methoden von Ausführungsformen der Erfindung aus, wie hierin beschrieben.
-
Das Computersystem/der Server 12 kann auch mit einem oder mehreren externen Einheiten 14 Daten austauschen, wie beispielsweise einer Tastatur, einem Zeigegerät, einer Anzeige 24 usw.; einer oder mehreren Einheiten, die es einem Nutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder allen Einheiten (z. B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 12 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über E/A-Schnittstellen 22 erfolgen. Außerdem kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken, wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netzwerk (z. B. dem Internet), über den Netzwerkadapter 20 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 20 Daten mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18 aus. Es sollte verstanden werden, dass, obwohl nicht gezeigt, andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Beispiele dafür, ohne darauf beschränkt zu sein, sind: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
-
Unter folgender Bezugnahme auf 2 wird die 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 Datenverarbeitungseinheiten Daten austauschen können, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und/oder Fahrzeug-Computersystem 54N. Die Knoten 10 können untereinander Daten austauschen. Sie können (nicht gezeigt) physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein, wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder eine Kombination davon sein. Damit hat die Cloud-Computing-Umgebung 50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Nutzer der Cloud keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es versteht sich, dass die in 2 gezeigten Typen von Datenverarbeitungseinheiten 54A bis N nur zur Veranschaulichung dienen sollen, und dass die Cloud-Computing-Knoten 10 und die Cloud-Computing-Umgebung 50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z. B. unter Verwendung eines Web-Browsers) Daten austauschen können.
-
Unter folgender Bezugnahme auf 3 ist eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung 50 (2) bereitgestellt werden. Es sollte von vornherein verstanden werden, dass die in 3 gezeigten Komponenten, Schichten und Funktionen nur veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
Die Hardware- und Software-Schicht 60 weist Hardware- und Software-Komponenten auf. Zu Beispielen für Hardware-Komponenten zählen Mainframes. In einem Beispiel zSeries®-Systeme von IBM® und Server auf der Grundlage einer RISC-(Reduced Instruction Set Computer)Architektur. In einem Beispiel pSeries®-Systeme von IBM, xSeries®-Systeme von IBM, BladeCenter®-Systeme von IBM, Speichereinheiten, Netzwerke und Netzwerkkomponenten. Zu Beispielen für Software-Komponenten zählt Software für Netzwerkanwendungsserver. In einem Beispiel Software für WebSphere®-Anwendungsserver von IBM und Datenbanksoftware. In einem Beispiel Software für DB2®-Datenbanken von IBM. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind Marken der International Business Machines Corporation, die weltweit unter zahlreichen Gerichtsbarkeiten registriert sind.)
-
Die Virtualisierungsschicht 62 stellt eine Abstraktionsschicht bereit, von der aus die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke, einschließlich virtueller privater Netzwerke; virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients.
-
In einem Beispiel kann die Verwaltungsschicht 64 die im Folgenden beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung sorgt für die dynamische Beschaffung von Datenverarbeitungsressourcen und anderen Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung stellen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und die Abrechnung oder Rechnungsstellung für den Nutzer dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware aufweisen. Die Sicherheit stellt für die Nutzer der Cloud und Aufgaben eine Identitätsüberprüfung sowie Schutz für Daten und andere Ressourcen bereit. Das Nutzerportal stellt den Zugang zu der Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Die Service-Level-(Dienstgüte)Verwaltung sorgt für die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen, so dass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird. In der Verwaltungsschicht wird ferner eine Optimierung der Bereitstellungszeit gezeigt, welche die Funktionalität darstellt, die unter den Ausführungsformen der vorliegenden Erfindung bereitgestellt wird.
-
Die Arbeitslastenschicht 66 stellt Beispiele für die Funktionalität bereit, für die die Cloud-Computing-Umgebung eingesetzt werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation; Software-Entwicklung und Lifecycle-Management; Bereitstellung von virtuellen Schulungen; Datenanalyseverarbeitung; Transaktionsverarbeitung; Speicherung von Nutzerdaten und Sicherung. Wie vorher erwähnt, sind alle vorgenannten Beispiele, die unter Bezugnahme auf 3 beschrieben wurden, rein veranschaulichend, und die Erfindung ist nicht auf diese Beispiele beschränkt.
-
Es versteht sich, dass alle Funktionen der vorliegenden Erfindung, wie hierin beschrieben, typischerweise durch die Auswahlfunktionalität der virtuellen Maschine (der Verwaltungsschicht 64, die konkret als Module von Programmcode 42 des Programms/Dienstprogramms 40 (1) verkörpert sein kann) ausgeführt werden können. Dies muss allerdings nicht der Fall sein. Die hierin zitierte Funktionalität könnte von jeder der in 3 gezeigten Schichten 60 bis 66 ausgeführt/umgesetzt und/oder ermöglicht werden.
-
Es wird wiederholt, dass, obwohl diese Offenbarung eine ausführliche Beschreibung zu Cloud-Computing enthält, die Umsetzung der hierin zitierten Lehren nicht auf eine Cloud-Computing-Umgebung begrenzt ist. Die Ausführungen der vorliegenden Erfindung sind stattdessen dazu bestimmt, mit jedem Typ einer derzeit bekannten oder zukünftig entwickelten vernetzten Datenverarbeitungsumgebung umgesetzt zu werden.
-
Unter folgender Bezugnahme auf 4 wird eine Systemdarstellung gemäß einem Aspekt der vorliegenden Erfindung gezeigt. Wie veranschaulicht wird eine Engine für zusammengefasste virtuelle Maschinen (Engine 70) in einer vernetzten Datenverarbeitungsumgebung 84 gezeigt (die z. B. die Cloud-Computing-Umgebung 50 aufweist). Im Allgemeinen kann die Engine 70 als ein Programm 40 auf dem Computersystem 12 von 1 umgesetzt werden und kann die hierin zitierten Funktionen umsetzen, wie in der Verwaltungsschicht 64 von 3 veranschaulicht. Im Allgemeinen weist die Engine 70 (in einer Ausführungsform) eine Regel- und/oder Datenverarbeitungs-Engine auf, die eine Gruppe von (mindestens eine) Regeln 78 verarbeitet und/oder eine Gruppe von Datenverarbeitungen ausführt, um eine Gruppe von VMs 72A bis N aus einem Pool von vorab bereitgestellten VMs (Pool 74) auszuwählen, um eine oder mehrere Arbeitslastanforderungen 76A bis N zu verarbeiten/zu bearbeiten. Auf diese Weise kann die Engine 70 Funktionen ähnlich wie bei einem Universal-Computer ausführen.
-
Auf diese Weise kann die Engine 70 mehrere Funktionen unter Verwendung der Regeln 78 ausführen. Neben anderen Funktionen kann die Engine 70 insbesondere: eine Installationszeit für jede Softwarekomponenten-(z. B. Softwareprogramm)Kombination in einer Vielzahl von Softwarekomponenten-Kombinationen berechnen; jede einzelne Installationszeit durch einen Wert, der einem Bereitstellungsverlauf zugehörig ist, gewichten; und zumindest einen Teil der Softwarekomponenten-Kombinationen zu dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) zuordnen.
-
Die Funktionen der Engine 70 werden im Folgenden ausführlicher erklärt. Unter den Ausführungsformen der vorliegenden Erfindung befinden sich mehrere Verfahren/Ansätze, die umgesetzt werden können, um einen Pool 74 von (z. B. zumindest teilweise) vorab bereitgestellten VMs 72A bis N zu erzeugen. Angenommen, die Cloud-Umgebung 50 weist einen Pool 74 von (z. B. zumindest teilweise) vorab bereitgestellten VMs 72A bis N auf. Ferner angenommen, dass ein Bereitstellungsverlauf und Bewertungsdaten 80 für die teilweise vorab bereitgestellten VMs 72A bis N vorhanden sind (z. B. in einer Gruppe von Datenbanken 82A bis N oder dergleichen). Mehrere Verfahren/Ansätze können umgesetzt werden, um zu identifizieren, welche VMs 72A bis N im Pool 74 die Softwarekomponente(n) aufweisen, die zum Verarbeiten der Arbeitslastanforderungen 76A bis N verwendet wird bzw. werden. In dem im Folgenden dargelegten Beispiel wird angenommen, dass bis zu drei mögliche Softwarekomponenten (z. B. Softwareprogramme) bereitgestellt und/oder verwendet werden, nämlich die Softwarekomponenten „A”, „B” und „C” (oder eine beliebige Kombination davon). Dies muss jedoch nicht der Fall sein, und es versteht sich, dass die Softwarekomponenten „A”, „B” und „C” nur zu Veranschaulichungszwecken zitiert werden.
-
Diese Offenbarung stellt ein Verfahren zum Erzeugen eines Pools von (z. B. zumindest teilweise) vorab bereitgestellten VMs 72A bis N vor, der in Bezug auf die Zeit, die zum Erfüllen von VM-Anforderungen benötigt wird, optimal zugeordnet ist. Das Verfahren berechnet die Zeit, um von jeder Kombination von Softwarekomponenten zu jeder anderen Kombination von Softwarekomponenten zu gelangen. Die gesamte Übergangszeit für jede einzelne Softwarekomponenten-Kombination stellt deren Installationszeit dar. Diese Installationszeit wird dann durch die Verteilung aller vorherigen Bereitstellungsanforderungen gewichtet. Mit anderen Worten, die Wahrscheinlichkeit, mit der der Benutzer eine VM mit der jeweiligen endgültigen Softwarekomponenten-Konfiguration anfordern würde, wird für jede Zeitberechnung zum Gewichten der Installationszeit für die Konfiguration verwendet. Dieses Verfahren ist vorteilhaft, weil es auf optimale Weise die beste Vorab-Bereitstellungsverteilung von VMs auf der Grundlage ihrer relativen Installationszeiten findet.
-
In einer ersten Ausführungsform berechnet das Verfahren die Übergangszeit von jeder möglichen Softwarekomponenten-Kombinationen zu jeder anderen Softwarekomponenten-Kombination. In einer zweiten Ausführungsform wird nur eine Untergruppe von Übergangszeiten berechnet statt einer Übergangszeit für jede mögliche Softwarekomponenten-Kombination. Diese Ausführungsform verringert die Komplexität durch das Einschränken der Anzahl von Softwarekomponenten-Kombinationen, die in den Übergangszeitberechnungen verwendet werden. Dieses Verfahren stellt nahezu optimale Ergebnisse bereit, die im Vergleich zu herkömmlichen Verfahren schnell berechnet werden.
-
In einer weiteren Ausführungsform wird ein genetischer Algorithmus beim Erzeugen des Vorab-Bereitstellungs-Pools verwendet, um die Komplexität zu überwinden, die durch große Dienstekataloge erstellt wird. Gegenwärtig können Cloud-Anbieter bis zu mehrere Stunden brauchen, um von Nutzern angeforderte Ressourcen bereitzustellen. Einige Cloud-Systeme brauchen nur wenige Minuten. Die Unterschiede in der Bereitstellungsgeschwindigkeit liegen im Allgemeinen in drei Bereichen: (1) die Höhe der Investitionen in die Sicherungsspeicher-Architektur; (2) die Architektur der Cloud-Verwaltungsplattform; und (3) die zum Bereitstellen von Ressourcen verwendeten Verfahren. Einige Clouds brauchen zum Bereitstellen notwendigerweise länger, weil der Dienstanbieter sich entschieden hat, nicht in kostspielige Backend-Speichertechnologien zu investieren, andere brauchen wiederum länger aufgrund von Anforderungen, die von Nutzern eingesetzt werden, die komplexere Bereitstellungsverfahren erfordern.
-
Genetische Algorithmen entwickeln Lösungen für Probleme unter Verwendung der Prinzipien der natürlichen Auslese. Im Allgemeinen beginnt ein genetischer Algorithmus mit einer Ausgangsgesamtheit von Lösungsversuchen für ein Problem, bewertet die Lösungsversuche und verwendet die besseren Lösungen als Grundlage für ein nächstes Erzeugen von Lösungsversuchen. Der Prozess wird üblicherweise fortgesetzt, bis sich eine zufriedenstellende Lösung abzeichnet. Beliebige Softwarekomponenten-Kombinationen werden für eine Tauglichkeitsbewertung ausgewählt. Kombinationen, die bei der Tauglichkeitsbewertung gut abschneiden, werden zu dem Bereitstellungs-Pool hinzugefügt. In einem Beispiel kann der genetische Algorithmus Bedingungen haben. Bedingungen sind Anforderungen, die eine Softwarekomponenten-Kombination erfüllen muss, um sich für eine Tauglichkeitsprüfung zu qualifizieren. Indem vor dem Ausführen von Tauglichkeitsbewertungen Kombinationen entfernt werden, die gewisse Anforderungen nicht erfüllen, kann das System Zeit sparen, indem unbrauchbare Lösungen nicht weiterverfolgt werden.
-
Die folgende Tauglichkeitsbewertungsfunktion nimmt eine Ausführung des genetischen Algorithmusprozesses (einschließlich mehrerer Generierungen) vor, um das tauglichste teilweise vorab bereitgestellte Einzelergebnis zu finden. Die Tauglichkeitsbewertungsfunktion des genetischen Algorithmus kann wie folgt dargestellt werden:
-
Um den sich daraus ergebenden vorab bereitgestellten Pool vielfältig zu halten, wird jedes Mal, wenn eine Softwarekomponente in den Pool gestellt wird, eine Instanz dieser Kombination entfernt. Auf diese Weise wird der sich daraus ergebende Prozentsatz dieser Konfiguration vermindert, und wenn der genetische Algorithmus das nächste Mal ausgeführt wird, ist die Gewichtung der Konfiguration geringer. Das Verfahren stellt durch Software installierbare Kombinationen als BitSets für jede einzelne Kombination in der genetischen Ausgangsgesamtheit dar. Zum Beispiel kann eine mögliche durch Software installierbare Konfiguration auf die folgende Weise dargestellt werden: 1001110 = 51525354555657. Der allgemeine Algorithmus für die Rückgabe eines Pools wird im Folgenden gezeigt:
-
Dieses Konzept wird ausführlicher in 5 gezeigt. Wie veranschaulicht zeigt das Schaubild in 5 VMs 100A bis N mit einer Kombination von Softwarekomponenten „A”, „B” und/oder „C”. Ebenso werden verschiedene Querpfade 102A bis N mit dazugehörigen Zeiten „tx” gezeigt, um alle drei Softwarekomponenten „A”, „B” „C” zu erhalten. Zum Beispiel, beginnend bei VM 100A (Null-Gruppe), besteht eine mögliche Route zum Erhalten aller drei Software-Komponenten darin, wie in Knoten 100N gezeigt, den Pfad tb zu VM 100B zu durchqueren, danach Pfad ta zu VM 100E und dann Pfad tc zu VM 100N. Wie ferner gezeigt, könnte man mehreren Pfaden von VM 100A zu VM 100N folgen.
-
Betrachten wir das Beispiel, in dem die Softwarekomponente A eine Softwarekomponenten-Installationszeit von 5 Minuten hat, und die Softwarekomponente B eine Softwarekomponenten-Installationszeit von 30 Minuten hat. Es ginge viel schneller, eine „A und B”-VM bereitzustellen, indem man mit einer B-VM statt einer A-VM beginnt.
-
Das folgende Beispiel eines „timeToInstall”-Algorithmus kann zum Berechnen der Installationszeit jeder Softwarekomponente verwendet werden:
-
Die Variable startConfig stellt den Anfang der Installationszeit für die jeweilige Softwarekomponenten-Konfiguration dar. Die Variable endConfig stellt das Ende der Installationszeit für die jeweilige Softwarekomponenten-Konfiguration dar. Die Gesamtzeit für die Installation (installTime) wird von dem Algorithmus zurückgegeben.
-
In einigen Ausführungsformen berücksichtigt die Funktion „timeToInstall” nicht das Deinstallieren von Softwarekomponenten von einer teilweise bereitgestellten VM zum Erfüllen von Anforderungen, da nach dem Deinstallieren der Software noch Softwarekomponenten-Reste vorhanden sein können. In anderen Ausführungsformen können Deinstallationen in den Algorithmus integriert werden, indem die Deinstallationszeiten für jede Softwarekomponente aufgenommen werden. Der Algorithmus würde dann die Mindestentfernung in dem in 1 veranschaulichten Blockschaubild nehmen.
-
In jeder der oben beschriebenen Ausführungsformen wird jede Installationszeit dann durch den Prozentsatz jeder Softwarekomponenten-Kombination gewichtet, die vorher bereitgestellt wurde. Mit anderen Worten, die Zeitberechnung für jede Softwarekomponenten-Konfiguration wird durch die Wahrscheinlichkeit gewichtet, mit der der Benutzer eine VM mit dieser endgültigen Softwarekomponenten-Konfiguration anfordern würde. Beim Gewichten der Wahrscheinlichkeit werden einfache P-(softwareConfig)Wahrscheinlichkeiten verwendet. Mit anderen Worten, von all den vorher bereitgestellten Instanzen beruht die Gewichtung auf dem Prozentsatz für ausschließlich softwareConfig. Der folgende „totalToCost”-Algorithmus kann verwendet werden, um eine VM auf der Grundlage einer Verteilung auszuwählen, um einen Pool von (z. B. zumindest teilweise) vorab bereitgestellten VMs
72A bis N zu erzeugen:
-
Unter folgender Bezugnahme auf 6 wird ein Verfahrensablaufplan gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in Schritt S1 veranschaulicht, wird eine Installationszeit für jede Softwarekomponenten-Kombination berechnet. In Schritt S2 wird jede einzelne Installationszeit durch einen Wert gewichtet, der zu einem Bereitstellungsverlauf zugehörig ist. In Schritt S3 wird zumindest ein Teil der Softwarekomponenten-Kombinationen dem vorab bereitgestellten Pool von virtuellen Maschinen (VMs) zugeordnet.
-
Obwohl sie hierin als eine Generierungslösung für einen vorab bereitgestellten VM-Pool gezeigt und beschrieben wird, versteht es sich, dass die Erfindung ferner verschiedene alternative Ausführungsformen bereitstellt. Zum Beispiel stellt die Erfindung in einer Ausführungsform ein computerlesbares/-verwendbares Medium bereit, das Computerprogrammcode enthält, um einer Computerinfrastruktur zu ermöglichen, eine Generierungsfunktionalität für einen vorab bereitgestellten VM-Pool bereitzustellen, wie hierin erörtert. Insofern enthält das computerlesbare/-verwendbare Medium einen Programmcode, der jeden der verschiedenen Prozesse der Erfindung umsetzt. Es versteht sich, dass die Begriffe computerlesbares Medium oder computerverwendbares Medium eine oder mehrere von jedem Typ von physischen Ausführungsformen des Programmcodes aufweist. Insbesondere kann das computerlesbare/-verwendbare Medium einen Programmcode aufweisen, der auf einem oder mehreren tragbaren Herstellungsartikeln für Speicherung (z. B. einer CD, einer Magnetplatte, einem Band usw.), auf einem oder mehreren Datenspeicherabschnitten einer Datenverarbeitungseinheit wie beispielsweise dem Speicher 28 (1) und/oder dem Speichersystem 34 (1) (z. B. einer Festplatte, einem Nur-Lese-Speicher, einem Direktzugriffspeicher, einem Cache-Zwischenspeicher usw.) ausgeführt sein kann.
-
In einer weiteren Ausführungsform stellt die Erfindung ein Verfahren bereit, das den Prozess der Erfindung auf der Grundlage eines Abonnements, von Werbung und/oder von Gebühren ausführt. Das heißt, ein Dienstanbieter wie beispielsweise ein Lösungsintegrator könnte anbieten, eine Generierungsfunktionalität für einen vorab bereitgestellten VM-Pool anzubieten. In diesem Fall kann der Dienstanbieter eine Computerinfrastruktur wie beispielsweise ein Computersystem 12 (1) erstellen, verwalten, unterstützen usw., das die Prozesse der Erfindung für einen oder mehrere Nutzer ausführt. Im Gegenzug kann der Dienstanbieter eine Bezahlung von dem oder den Nutzern gemäß einem Abonnement und/oder einer Gebührenvereinbarung erhalten und/oder der Dienstanbieter kann eine Bezahlung aus dem Verkauf von Werbeinhalt an einen oder mehrere Dritte erhalten.
-
In einer noch weiteren Ausführungsform stellt die Erfindung ein durch einen Computer umgesetztes Verfahren zum Erzeugen eines Pools von (z. B. zumindest teilweise) vorab bereitgestellten VMs bereit. In diesem Fall kann eine Computerinfrastruktur wie beispielsweise ein Computersystem 12 (1) bereitgestellt werden, und ein oder mehrere Systeme zum Ausführen der Prozesse der Erfindung können erhalten (z. B. erstellt, gekauft, verwendet, modifiziert usw.) und für die Computerinfrastruktur genutzt werden. Insofern kann die Nutzung eines Systems eines oder mehreres aufweisen von: (1) Installieren von Programmcode auf einer Datenverarbeitungseinheit wie beispielsweise einem Computersystem 12 (1) aus einem computerlesbaren Medium; (2) Hinzufügen von einer oder mehreren Datenverarbeitungseinheiten zu der Computerinfrastruktur; und (3) Integrieren und/oder Modifizieren von einem oder mehreren vorhandenen Systemen der Computerinfrastruktur, um der Computerinfrastruktur das Ausführen der Prozesse der Erfindung zu ermöglichen.
-
Wie hierin verwendet versteht es sich, dass die Begriffe „Programmcode” und „Computerprogrammcode” synonym sind und jeden Ausdruck, in jeder Sprache, jedem Code oder jeder Schreibweise einer Gruppe von Anweisungen bedeuten, der eine Datenverarbeitungseinheit, die eine Informationsverarbeitungsfähigkeit besitzt, veranlassen soll, eine bestimmte Funktion entweder direkt oder nach einem oder beidem des Folgenden auszuführen: (a) Konvertierung in eine andere Sprache, einen anderen Code oder eine andere Schreibweise; und/oder (b) Wiedergabe in einer anderen Materialform. Insofern kann Programmcode verkörpert werden als eines oder mehreres von: einer Anwendung/einem Softwareprogramm, einer Komponenten-Software/Bibliothek von Funktionen, einem Betriebssystem, einem grundlegenden Einheitensystem/Treiber für eine bestimmte Datenverarbeitungseinheit und dergleichen.
-
Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, kann hierunter bereitgestellt werden und kann mindestens einen Prozessor enthalten, der direkt oder indirekt im Datenaustausch über einen Systembus an Speicherelemente gekoppelt ist. Die Speicherelemente können einen lokalen Speicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Cache-Zwischenspeicher enthalten, die eine vorübergehende Speicherung von mindestens einigem Programmcode bereitstellen, um die Anzahl zu verringern, wie oft Code während der Ausführung aus dem Massenspeicher abgerufen werden muss. Eingabe-/Ausgabe- und/oder andere externe Einheiten (einschließlich Tastaturen, Anzeigen, Zeigeeinheiten usw., jedoch nicht darauf beschränkt) können entweder direkt oder über zwischengeschaltete Einheiten-Controller an das System gekoppelt werden.
-
Netzwerkadapter können ebenfalls an das System gekoppelt werden, um dem Datenverarbeitungssystem zu ermöglichen, über eine beliebige Kombination von dazwischengeschalteten privaten oder öffentlichen Netzwerken an andere Datenverarbeitungssysteme, entfernt angeordnete Drucker, Speichereinheiten und/oder dergleichen gekoppelt zu werden. Zu veranschaulichenden Adaptern gehören Modems, Kabelmodems und Ethernet-Karten.
-
Die vorhergehende Beschreibung von verschiedenen Aspekten der Erfindung wurde zu Veranschaulichungs- und Beschreibungszwecken erstellt. Sie soll nicht erschöpfend sein oder die Erfindung genau auf die offenbarte Form einschränken, und offensichtlich sind viele Modifizierungen und Variationen möglich. Derartige Modifizierungen und Variationen, die für einen Fachmann offenkundig sein dürften, sollen in dem Schutzumfang der Erfindung enthalten sein, wie durch die begleitenden Ansprüche definiert.