DE112021002572T5 - Multikriterielles optimieren von anwendungen - Google Patents

Multikriterielles optimieren von anwendungen Download PDF

Info

Publication number
DE112021002572T5
DE112021002572T5 DE112021002572.4T DE112021002572T DE112021002572T5 DE 112021002572 T5 DE112021002572 T5 DE 112021002572T5 DE 112021002572 T DE112021002572 T DE 112021002572T DE 112021002572 T5 DE112021002572 T5 DE 112021002572T5
Authority
DE
Germany
Prior art keywords
application
parameters
function
micro
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112021002572.4T
Other languages
English (en)
Inventor
Srinivasan Parthasarathy
Fabio A. OLIVEIRA
Sushma Ravichandran
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112021002572T5 publication Critical patent/DE112021002572T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Machine Translation (AREA)
  • Feedback Control In General (AREA)

Abstract

Es werden ein System, ein Computerprogrammprodukt und ein Verfahren bereitgestellt, um eine multikriterielle Optimierung einer Anwendung zu orchestrieren. Es wird ein Satz von zwei oder mehr wesentlichen Leistungsindikatoren (KPIs) und ein oder mehrere Parameter empfangen, die der Anwendung zugehörig sind. Es wird ein auf maschinellem Lernen (ML) beruhendes Ersatzfunktions-Lernmodell in Verbindung mit einer Erfassungsfunktion verwendet, um eine oder mehrere adaptive Testdurchführungen durchzuführen. Jeder Test besteht aus einer bestimmten Konfiguration des einen oder der mehreren Parameter. Es wird eine Pareto-Fläche der KPls der Anwendung auf der Grundlage der Beobachtungen der KPI-Werte aus jedem adaptiven Test berechnet. Die Pareto-Fläche wird untersucht, und es wird ein optimaler Betriebspunkt für die Anwendung ausgewählt. Die Anwendung wird daraufhin an dem ausgewählten Betriebspunkt ausgeführt.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende(n) Ausführungsform(en) bezieht/beziehen sich auf ein Ausführen einer Anwendung an einem optimalen Betriebspunkt in Bezug auf bestimmte wesentliche Leistungsindikatoren (KPI, key performance indicator). Genauer gesagt sind die Ausführungsformen auf ein Verwenden von maschinellem Lernen (ML) zur Berechnung einer Pareto-Fläche und ein Untersuchen der Pareto-Fläche zum Ermitteln des optimalen Betriebspunkts ausgerichtet.
  • HINTERGRUND
  • Bei Cloud-Computing handelt es sich um ein Modell zum Ermöglichen eines universellen, problemlosen, bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Ressourcen, z.B. Netzwerke, Server, Speicher, Anwendung und Dienste, die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Eine Anwendung, genauer gesagt eine Cloud-Anwendung, ist ein Softwareprogramm, bei dem auf der Cloud beruhende und lokale Komponenten zusammenarbeiten. Dieses Modell stützt sich auf entfernt angeordnete Server für die Verarbeitungslogik, auf die über einen Webbrowser mit ständiger Internetverbindung zugegriffen werden kann. Cloud-Anwendungsserver können sich in einem entfernt angeordneten Datenzentrum befinden. Auf einer Cloud beruhende Anwendungen können Funktionen wie eMail, Dateispeicherung und -freigabe, Auftragserfassung, Bestandsverwaltung, Textverarbeitung, Customer-Relationship-Management (Kundenbeziehungsmanagement), Datenerfassung oder Finanzbuchhaltung umfassen.
  • Der Begriff Micro-Services (Mikrodienste), auch bekannt als Micro-Service-Architektur, bezeichnet einen Architekturstil, der eine Anwendung als eine Sammlung von Diensten strukturiert, die in einer oder mehreren modularen Komponenten dargestellt werden, die in hohem Maße wartbar und testbar, lose verbunden und unabhängig einsetzbar sind. Jedes Modul unterstützt eine bestimmte Aufgabe oder ein bestimmtes Geschäftsziel und verwendet eine einfache, genau definierte Schnittstelle, zum Beispiel eine Anwendungsprogrammierschnittstelle (API, application programming interface), um Daten mit anderen Sätzen von Micro-Services auszutauschen. Bei Micro-Services handelt es sich um kleine, skalierbare Komponenten. Jedes Modul unterstützt eine bestimmte Aufgabe und verwendet eine definierte Schnittstelle, zum Beispiel eine Anwendungsprogrammierschnittstelle (API), um mit anderen Diensten Daten auszutauschen. Jedes einzelne Micro-Service-Modul kann verändert werden, ohne dass sich dies auf andere Teile eines Programms auswirkt, das mehrere Micro-Service-Module aufweist. Dementsprechend wird durch die Micro-Service-Architektur eine Skalierbarkeit unterstützt und ermöglicht.
  • Eine monolithische Architektur bezieht sich auf ein einheitliches Modell für die Ausgestaltung einer Softwareanwendung. Monolithische Software ist so konzipiert, dass sie in sich geschlossen ist, wobei die Komponenten des Programms miteinander verbunden und voneinander abhängig sind. In der monolithischen Architektur ist es erforderlich, dass jede Komponente und die ihr zugehörigen Komponenten vorliegen, damit der Code kompiliert oder ausgeführt werden kann. Wenn eine Programmkomponente aktualisiert werden muss, um erwartete sowie unvorhergesehene Änderungen in anderen Elementen zu berücksichtigen, muss die gesamte Anwendung neu geschrieben werden. Entsprechend ist die monolithische Architektur auf eine große, eng verbundene Anwendung ausgerichtet.
  • In der Technik ist es klar, dass Micro-Service-Architekturen im Vergleich zu monolithischen Software-Architekturen zu einer schnelleren Software-Entwicklung und -Bereitstellung führen und damit die Flexibilität des Unternehmens erhöhen. Genauer gesagt wird durch die Micro-Service-Architektur die schnelle, häufige und zuverlässige Bereitstellung großer, komplexer Anwendungen ermöglicht. Mit Micro-Services können einzelne Dienste individuell bereitgestellt oder individuell skaliert werden. Bei richtiger Ausführung benötigen Micro-Services weniger Infrastruktur als monolithische Anwendungen, da sie eine präzise Skalierung nur der benötigten Komponenten statt einer ganzen Anwendung wie bei monolithischen Anwendungen ermöglichen. In der Technik ist es klar, dass es bei Micro-Services und insbesondere bei der Micro-Service-Architektur Probleme gibt. Diese Probleme betreffen ein Verwalten von Micro-Services bei zunehmender Anzahl von Micro-Services, ein Überwachen von Micro-Services, sowie Testen, Abhängigkeiten usw.
  • KURZDARSTELLUNG
  • Die Ausführungsformen umfassen ein System, ein Computerprogrammprodukt und ein Verfahren zum multikriteriellen Optimieren von Cloud-Anwendungen in Bezug auf wesentliche Leistungsindikatoren.
  • In einem Aspekt wird einem Computersystem eine Verarbeitungseinheit bereitgestellt, die funktionsmäßig mit einem Speicher verbunden ist, sowie eine Plattform für künstliche Intelligenz (Kl), die funktionsmäßig mit der Verarbeitungseinheit und dem Speicher verbunden ist. Die Kl-Plattform ist mit Werkzeugen in der Form einer Eingabeverwaltung, einer Testverwaltung und einer Optimierungsverwaltung konfiguriert, die über Funktionen zum Orchestrieren einer multikriteriellen Optimierung von Anwendungen verfügen. Die Eingabeverwaltung ist so konfiguriert, dass sie einen Satz von zwei oder mehr wesentlichen Leistungsindikatoren (KPI) empfängt, die einer Anwendung zugehörig sind. Die Testverwaltung ist funktionsmäßig mit der Eingabeverwaltung verbunden und so konfiguriert, dass sie ein auf maschinellem Lernen (ML) beruhendes Ersatzfunktions-Lernmodell in Verbindung mit einer Erfassungsfunktion einsetzt, um eine adaptive Testdurchführung der Anwendung mit einem oder mehreren empfangenen Parametern durchzuführen. Die Testverwaltung ist ferner so konfiguriert, dass sie auf der Grundlage von beobachteten Ausgaben der Testdurchführung(en) eine Pareto-Fläche der KPls der Anwendung berechnet. Die Optimierungsverwaltung, die funktionsmäßig mit der Testverwaltung verbunden ist, hat die Aufgabe, die berechnete Pareto-Fläche zu untersuchen und einen optimalen Betriebspunkt für die Anwendung auszuwählen. Der optimale Betriebspunkt entspricht der Konfiguration des einen oder mehrerer Parameter. Die Optimierungsverwaltung führt die Anwendung an dem ausgewählten optimalen Betriebspunkt aus.
  • In einem anderen Aspekt wird ein Computerprogrammprodukt bereitgestellt, um ein multikriterielles Optimieren einer Anwendung zu orchestrieren. Dem Computerprogrammprodukt wird eine durch einen Computer lesbare Speichereinheit bereitgestellt, in der ein Programmcode verkörpert ist. Der Programmcode kann von der Verarbeitungseinheit ausgeführt werden, die über eine Funktionalität verfügt, so dass sie einen Satz von zwei oder mehr wesentlichen Leistungsindikatoren (KPI) empfängt, die einer Anwendung zugehörig sind. Der Programmcode verwendet ein auf maschinellem Lernen (ML) beruhendes Ersatzfunktions-Lernmodell in Verbindung mit einer Erfassungsfunktion, um eine adaptive Testdurchführung der Anwendung mit einem oder mehreren empfangenen Parametern durchzuführen. Der Programmcode berechnet eine Pareto-Fläche der KPls der Anwendung auf der Grundlage der beobachteten Ausgaben der Testdurchführung(en). Der Programmcode untersucht die berechnete Pareto-Fläche und wählt einen optimalen Betriebspunkt für die Anwendung aus, wobei der optimale Betriebspunkt der Konfiguration des einen oder der mehreren Parameter entspricht. Der Programmcode dient ferner dazu, die Anwendung an dem ausgewählten optimalen Betriebspunkt auszuführen.
  • In einem anderen Aspekt wird ein Verfahren zum Orchestrieren einer multikriteriellen Optimierung einer Anwendung bereitgestellt. Es wird ein Satz von zwei oder mehr wesentlichen Leistungsindikatoren (KPI) empfangen, die einer Anwendung zugehörig sind. Es wird ein auf maschinellem Lernen (ML) beruhendes Ersatzfunktions-Lernmodell in Verbindung mit einer Erfassungsfunktion verwendet, um eine adaptive Testdurchführung der Anwendung mit einem oder mehreren empfangenen Parametern durchzuführen. Es wird eine Pareto-Fläche der KPls der Anwendung auf der Grundlage der beobachteten Ausgaben der Testdurchführung(en) berechnet. Die berechnete Pareto-Fläche wird untersucht und es wird ein optimaler Betriebspunkt für die Anwendung ausgewählt, wobei der optimale Betriebspunkt der Konfiguration des einen oder mehrerer Parameter entspricht. Die Anwendung wird daraufhin an dem ausgewählten optimalen Betriebspunkt ausgeführt.
  • Diese und andere Funktionen und Vorteile werden aus der folgenden detaillierten Beschreibung der gegenwärtig bevorzugten Ausführungsform(en) in Verbindung mit den beigefügten Zeichnungen ersichtlich.
  • Figurenliste
  • Die Zeichnungen, auf die hier Bezug genommen wird, bilden einen Teil der Spezifikation und werden in diese aufgenommen. Die in den Zeichnungen dargestellten Funktionen dienen nur zur Veranschaulichung einiger Ausführungsformen und nicht aller Ausführungsformen, sofern nicht ausdrücklich anders angegeben.
    • 1 zeigt ein Systemschaubild, das ein Computersystem und eingebettete Werkzeuge darstellt, die ein multikriterielles Optimieren von Anwendungen unterstützen.
    • 2 zeigt ein Blockschaubild, das die in 1 gezeigten Werkzeuge und die ihnen zugehörige(n) Anwendungsprogrammierschnittstelle(n) darstellt.
    • 3 zeigt einen Ablaufplan, der einen Prozess zum multikriteriellen Optimieren einer Anwendung darstellt.
    • 4 zeigt einen Ablaufplan, der einen Prozess darstellt, bei dem maschinelles Lernen zur Durchführung eines oder mehrerer adaptiver Testdurchführungen eingesetzt wird.
    • 5 zeigt ein Blockschaubild, das ein Diagramm und eine beispielhafte Pareto-Fläche für die KPls der Latenz- und Fehlerraten-Ziele darstellt.
    • 6 zeigt ein Blockschaubild, das eine beispielhafte Hierarchie von interagierenden Micro-Services darstellt.
    • 7 zeigt ein Blockschaubild, das eine beispielhafte Hierarchie von Anwendungs-Micro-Services mit einer sequenziellen Suchanfrage-Beschränkung darstellt.
    • 8 zeigt ein Blockschaubild, das eine beispielhafte Hierarchie von Anwendungs-Micro-Services mit einer parallelen Suchanfrage-Beschränkung darstellt.
    • 9 stellt ein Blockschaubild dar, das ein Beispiel eines Computersystems/Servers eines auf einer Cloud beruhenden Unterstützungssystems zeigt, um das oben beschriebene System und die oben beschriebenen Prozesse mit Bezug auf 1 bis 8 zu implementieren.
    • 10 stellt ein Blockschaubild dar, das eine Cloud-Computing-Umgebung zeigt.
    • 11 stellt ein Blockschaubild dar, das einen Satz von funktionalen Abstraktionsmodellschichten zeigt, die von der Cloud-Computing-Umgebung bereitgestellt werden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es versteht sich von selbst, dass die Bestandteile der vorliegenden Ausführungsformen, wie sie im Allgemeinen in den Figuren hierin beschrieben und gezeigt sind, in einer großen Vielfalt unterschiedlicher Konfigurationen angeordnet und gestaltet werden können. Die folgende detaillierte Beschreibung der Ausführungsformen der Vorrichtung, des Systems, des Verfahrens und des Computerprogrammprodukts der vorliegenden Ausführungsformen, wie sie in den Figuren vorliegen, soll daher nicht, wie beansprucht, den Umfang der Ausführungsformen einschränken, sondern ist lediglich repräsentativ für ausgewählte Ausführungsformen.
  • Ein Verweis in dieser Spezifikation auf „eine ausgewählte Ausführungsform“, „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass eine bestimmte in Verbindung mit der Ausführungsform beschriebene Funktion, Struktur oder Eigenschaft in mindestens einer Ausführungsform enthalten ist. Daher bezieht sich das Auftreten der Ausdrücke „eine ausgewählte Ausführungsform“, „in einer einzelnen Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser Spezifikation nicht zwangsläufig auf dieselbe Ausführungsform.
  • Die gezeigten Ausführungsformen lassen sich am besten anhand der Zeichnungen verstehen, wobei gleiche Teile durchgehend mit den gleichen Ziffern gekennzeichnet sind. Die folgende Beschreibung ist nur als Beispiel zu verstehen und zeigt lediglich bestimmte ausgewählte Ausführungsformen von Einheiten, Systemen und Prozessen, die mit den hier beanspruchten Ausführungsformen übereinstimmen.
  • Künstliche Intelligenz (KI) ist ein Teilgebiet der Informatik, das sich mit Computern und dem Verhalten von Computern in Bezug auf den Menschen befasst. KI bezeichnet die Intelligenz, mit der Maschinen auf der Grundlage von Informationen in der Lage sind, Entscheidungen zu treffen, die zum Beispiel die Erfolgswahrscheinlichkeit in einem bestimmten Thema verbessern oder maximieren. Genauer gesagt ist eine KI in der Lage, aus einem Satz von Daten zu lernen, um Probleme zu lösen und entsprechende Empfehlungen bereitzustellen. Zum Beispiel verarbeiten im Bereich der künstlichen intelligenten Computersysteme natürlichsprachliche Systeme (zum Beispiel das künstlich intelligente Computersystem IBM Watson® oder andere natürlichsprachliche Frage-Antwort-Systeme) natürliche Sprache auf der Grundlage von im System erworbenem Wissen. Um natürliche Sprache zu verarbeiten, kann das System mit Daten aus einer Datenbank oder einem Wissenskorpus trainiert werden, aber das Ergebnis kann aus einer Vielfalt von Gründen falsch oder ungenau sein.
  • Im Kern der KI und der zugehörigen Betrachtungen steht das Konzept der Ähnlichkeit. Der Prozess des Verstehens von natürlicher Sprache und Objekten erfordert Schlussfolgerungen aus einer relationalen Perspektive, die ein Problem darstellen kann. Strukturen, zum Beispiel statische Strukturen und dynamische Strukturen, legen eine bestimmte Ausgabe oder Aktion für eine bestimmte Eingabe fest. Genauer gesagt beruht die bestimmte Ausgabe oder Aktion auf einer ausdrücklichen oder inhärenten Beziehung innerhalb der Struktur. Diese Regelung kann unter gewissen Umständen und Bedingungen zufriedenstellend sein. Es versteht sich jedoch, dass dynamische Strukturen von Natur aus Veränderungen unterliegen und dass sich die Ausgabe oder Aktion entsprechend ändern kann.
  • Bei maschinellem Lernen (ML), das wie oben erwähnt eine Teilmenge der KI ist, werden Algorithmen eingesetzt, um aus Daten anstatt durch ein explizites Programmieren zu lernen und auf der Grundlage dieser Daten Voraussagen zu treffen. Bei ML handelt es sich um die Anwendung von KI durch Erstellen von neuronalen Netzwerken, die Lernverhalten zeigen können, indem sie Aufgaben ausführen, die nicht explizit programmiert sind. ML erfordert Daten, die analysiert, formatiert und aufbereitet werden, um ein maschinelles Lernmodell zu erstellen und einen maschinellen Lernalgorithmus zu trainieren. In der Technik ist es klar, dass ein ML-Algorithmus ein computergestützter Vorgang ist, der ein ML-Modell erzeugt, wenn er auf die Daten trainiert wird. Das Auswählen des ML-Algorithmus ist eine wesentliche Voraussetzung für das erfolgreiche Durchführen von ML. Zu Beispielen für ML gehören Regressionsalgorithmen, Entscheidungsbäume, auf Instanzen beruhende Algorithmen und Clustering-Algorithmen, ohne auf diese beschränkt zu sein. Sobald die Daten aufbereitet sind und der Algorithmus trainiert ist, kann das ML-Modell Feststellungen oder Vorhersagen zu den Daten machen. Je größer die Menge der bereitgestellten Daten ist, desto mehr lernt das Modell und desto genauer werden seine Vorhersagen.
  • ML-Modelle lassen sich in die folgenden grundlegenden Kategorien einteilen: überwachtes maschinelles Lernen, unüberwachtes maschinelles Lernen, bestärkendes maschinelles Lernen und Deep Learning (tiefes Lernen). Algorithmen des überwachten Lernens erlernen eine Abbildungsfunktion für einen Datensatz mit einer bestehenden Klassifizierung, während Algorithmen des unüberwachten Lernens einen nicht gekennzeichneten Datensatz auf der Grundlage von verdeckten Funktionen in den Daten kategorisieren können. Bestärkendes Lernen kann Richtlinien für die Entscheidungsfindung in einer unbestimmten Umgebung durch iteratives Untersuchen dieser Umgebung erlernen. Beim Deep Learning werden neuronale Netzwerke in aufeinanderfolgenden Schichten eingesetzt, um iterativ aus Daten zu lernen. Bei neuronalen Netzwerken handelt es sich um Modelle, die der Arbeitsweise des Nervensystems entsprechen. Deren Grundeinheiten werden als Neuronen bezeichnet, die in der Regel in Schichten organisiert sind. Das neuronale Netzwerk funktioniert durch ein Simulieren einer großen Anzahl miteinander verbundener Verarbeitungseinheiten, die abstrakten Versionen von Neuronen ähneln. Ein neuronales Netzwerk besteht in der Regel aus drei Teilen, zu denen eine Eingabeschicht mit Einheiten, die Eingabefelder darstellen, sowie eine oder mehrere ausgeblendete Schichten und eine Ausgabeschicht mit einer oder mehreren Einheiten gehören, die Zielfelder darstellen. Die Einheiten sind mit unterschiedlichen Verbindungsstärken oder -gewichten verbunden. Der ersten Schicht werden Eingabedaten vorgelegt, woraufhin die Werte von jedem Neuron an alle Neuronen der nächsten Schicht weitergegeben werden. Schließlich wird von den Ausgabeschichten ein Ergebnis ausgegeben. Komplexe neuronale Netzwerke mit Deep Learning sind so konstruiert, dass sie die Funktionsweise des menschlichen Gehirns nachbilden, so dass Computer darauf trainiert werden können, Abstraktionen und Probleme zu unterstützen, auch wenn sie schlecht definiert sind. Neuronale Netzwerke und Deep Learning werden häufig in Anwendungen zur Bilderkennung, Sprachverarbeitung und Computer Vision verwendet.
  • Es werden hier ein intelligentes System, ein Computerprogrammprodukt und ein Verfahren mit Werkzeugen und Algorithmen bereitgestellt, um intelligente Echtzeit-Analysen unter Verwendung von maschinellem Lernen (ML) auszuführen. Genauer gesagt, und wie hier dargestellt und beschrieben, wird ML auf die Micro-Service-Architektur angewendet, um ein multikriterielles Optimieren von Anwendungen zu ermöglichen, zum Beispiel von Cloud-Anwendungen. Es gibt verschiedene Möglichkeiten, Cloud-Anwendungen zu parametrisieren, wobei die Konfiguration solcher Parameter zu unterschiedlichen Werten von wesentlichen Leistungsindikatoren (KPI) für die Anwendungen führt.
  • Latenz ist ein Netzwerkbegriff, der sich auf ein Zeitintervall oder eine Verzögerung bezieht, wenn eine Systemkomponente auf die Antwort einer anderen Systemkomponente wartet. Die Dauer des Zeitintervalls wird als Latenz bezeichnet. Ein Zeitlimit (timeout) bezieht sich auf ein Unterbrechungssignal, das von einem Programm oder einer Einheit erzeugt wird, das/die für eine bestimmte Zeitspanne auf eine Eingabe gewartet hat, diese aber nicht erhalten hat. Viele Programme führen Zeitlimits durch, damit das Programm nicht untätig bleibt und auf eine Eingabe wartet, die möglicherweise nie eintrifft. Ein Einstellen von Zeitlimit- und Neuversuch-Werten von Micro-Services kann für die Anwendung(en), z.B. die Cloud-Anwendung(en), unterschiedliche Werte für die Ende-zu-Ende-Latenz und die Fehlerraten ergeben. Es ist erstrebenswert, den besten Kompromiss zwischen KPIs, zum Beispiel zwischen Latenz und Fehlerrate, für eine bestimmte Anwendung ermitteln zu können, bevor die Anwendung ausgeführt wird. In einer Ausführungsform ermöglicht ein Ermitteln dieser Kompromisse eine realistische Bewertung der der jeweiligen Anwendung zugehörigen Vereinbarungen zum Dienstumfang (SLA, Service Level Agreements). Eine Analyse des Kompromisses ist kompliziert und in einer Ausführungsform proportional zu der architektonischen Struktur von Micro-Services in Cloud-Anwendungen.
  • Unter Bezugnahme auf 1 wird ein Computersystem (100) mit Werkzeugen zum Unterstützen einer multikriteriellen Optimierung von Anwendungen bereitgestellt. Wie dargestellt wird ein Server (110) bereitgestellt, der über eine Netzwerkverbindung (105) Daten mit einer Mehrzahl von Datenverarbeitungseinheiten (180), (182), (184), (186), (188) und (190) austauscht. Der Server (110) ist mit einer Verarbeitungseinheit, z.B. ein Prozessor, (112) konfiguriert, die funktionsmäßig mit einem Speicher (114) über einen Bus (116) verbunden ist. Ein Werkzeug in Form einer Plattform für künstliche Intelligenz (KI) (150) ist als lokal auf dem Server (110) vorliegend dargestellt und ist funktionsmäßig mit der Verarbeitungseinheit (112) und dem Speicher (114) verbunden. Wie dargestellt enthält die Kl-Plattform (150) ein oder mehrere Werkzeuge in Form einer Eingabeverwaltung (152), einer Testverwaltung (154) und einer Optimierungsverwaltung (156), um ein multikriterielles Optimieren von Anwendungen über das Netzwerk (105) von einer oder mehreren Datenverarbeitungseinheiten (180), (182), (184), (186), (188) und (190) bereitzustellen und zu unterstützen. Genauer gesagt tauschen die Datenverarbeitungseinheiten (180), (182), (184), (186), (188) und (190) untereinander und mit anderen Einheiten oder Komponenten über eine oder mehrere drahtgebundene und/oder drahtlose Datenübertragungsverbindungen Daten aus, wobei jede Datenübertragungsverbindung eine oder mehrere Leitungen, Leitwegrechner, Vermittlungseinheiten, Sender, Empfänger oder Ähnliches aufweisen kann. In dieser vernetzten Anordnung ermöglichen der Server (110) und die Netzwerkverbindung (105) ein Optimieren einer Cloud-Anwendung über verteilte Ressourcen. Andere Ausführungsformen des Servers (110) können mit anderen als den hier dargestellten Komponenten, Systemen, Teilsystemen und/oder Einheiten verwendet werden.
  • Die Kl-Plattform (150) ist hier in einer Konfiguration mit Werkzeugen zur Unterstützung von ML dargestellt, genauer gesagt mit einem auf ML beruhenden Ersatzfunktions-Lernmodell in Verbindung mit einer Erfassungsfunktion, um das Optimieren von Cloud-Anwendungen zu erleichtern und zu ermöglichen. Die hierin eingebetteten Werkzeuge, darunter die Eingabeverwaltung (152), die Testverwaltung (154) und die Optimierungsverwaltung (156), sind so konfiguriert, dass sie Eingaben aus verschiedenen Quellen empfangen, zum Beispiel Eingaben aus dem Netzwerk (105) und einer funktionsmäßig verbundenen Wissensdatenbank (160), ohne auf diese beschränkt zu sein. In einer Ausführungsform ist die Wissensdatenbank (160) mit einer Bibliothek (162) mit einer Mehrzahl von Anwendungen konfiguriert, die hier beispielhaft als AnwendungA (164A), AnwendungB (164B) und AnwendungN (164N) dargestellt sind. Es werden zwar nur drei Anwendungen dargestellt, diese Menge dient jedoch nur zur Veranschaulichung und sollte nicht als einschränkend betrachtet werden. In einer Ausführungsform kann die Wissensdatenbank (160) mit einer oder mehreren zusätzlichen Bibliotheken konfiguriert werden, die jeweils eine oder mehrere Anwendungen enthalten. Die Anzahl der Anwendungen in der Struktur oder Bibliothek (162) dient nur zur Veranschaulichung und sollte nicht als einschränkend betrachtet werden.
  • Jede Anwendung wird hier mit einer Ersatzfunktion des maschinellen Lernens (ML) dargestellt, die hier als ML-Modell bezeichnet wird. AnwendungA (164A) ist mit ML-ModellA (166A) dargestellt, AnwendungB (164B) ist mit ML-ModellB (166B) dargestellt und AnwendungN (164N) ist mit ML-ModellN (166N) dargestellt. Jedes ML-Modell wird hier mit einem entsprechenden Modellabbild dargestellt, die hier auch als Abbild bezeichnet wird. Zur besseren Veranschaulichung ist ML-ModellA (166A) mit dem zugehörigen ModellabbildA (170A) dargestellt, ML-ModellB (166B) ist mit dem zugehörigen ModellabbildB (170B) dargestellt, und ML ModellN (166N) ist mit dem zugehörigen ModellabbildN (170N) dargestellt. Darüber hinaus kann jede bestehende Anwendung auch über eine zugehörige Erfassungsfunktion verfügen, die dazu dient, Stichproben zu nehmen und insbesondere einen Wert zu messen, der erzeugt werden würde. AnwendungA (164A) ist mit ErfassungsfunktionA (168A) dargestellt, AnwendungB (164B) ist mit ErfassungsfunktionB (168B) dargestellt, und AnwendungN (164N) ist mit ErfassungsfunktionN (168N) dargestellt. Im Folgenden wird ausführlich dargestellt und beschrieben, wie die ML-Ersatzfunktion, das zugehörige Modellabbild und die zugehörige Erfassungsfunktion verwendet werden.
  • Die verschiedenen Datenverarbeitungseinheiten (180), (182), (184), (186), (188) und (190), die mit dem Netzwerk (105) Daten austauschen, stellen Zugangspunkte zur Kl-Plattform (150) dar. Die Werkzeuge (152), (154) und (156) unterstützen und ermöglichen ein multikriterielles Optimieren von Anwendungen. Das Netzwerk (105) kann in verschiedenen Ausführungsformen lokale Netzwerkverbindungen und entfernt angeordnete Verbindungen umfassen, so dass die Kl-Plattform (150) und die eingebetteten Werkzeuge (152), (154) und (156) in Umgebungen beliebiger Größe betrieben werden können, unter anderem in lokalen und globalen Umgebungen, z.B. im Internet. Dementsprechend dienen der Server (110) und die Kl-Plattform (150) als Front-End-System, während die Wissensdatenbank (160) und die Anwendung(en) (164A) bis (164N) als Back-End-System dienen.
  • Wie im Folgenden ausführlich beschrieben wird, optimiert die Kl-Plattform (150) die Leistung von Anwendungen, wobei die Anwendung aus einer Sammlung von Micro-Services in Bezug auf identifizierte wesentliche Leistungsindikatoren (KPI) besteht. Die Kl-Plattform (150) nutzt die Eingabeverwaltung (152), um einen Satz von zwei oder mehr KPls zu erhalten, die einer Anwendung zugehörig sind. Die KPls zeigen Leistungsaspekte der Anwendung an, die Gegenstand der Optimierung ist. In einer Ausführungsform wird die Kategorie der KPls vom Benutzer ausgewählt und bezieht sich auf Leistungsaspekte, an deren Optimierung der Benutzer interessiert ist. Jeder KPI im Satz der empfangenen KPls hat einen zugehörigen oder entsprechenden Indikatortyp. Zu Beispielen für mögliche KPI-Typen gehören quantitative und qualitative Indikatoren. Ein quantitativer Indikator zeigt eine Menge an, die in einer Ausführungsform eine Zahl, ein Index, ein Verhältnis, ein Prozentsatz usw. sein kann. Qualitative Indikatoren zeigen keine numerischen Maße an. Vielmehr stellen sie einen Qualitätsstatus dar. Zu Beispielen für quantitative Messgrößen, die die Leistung von Anwendungen erfassen, gehören Latenz, Fehlerrate und Durchsatz, ohne auf diese beschränkt zu sein. Jeder quantitative Indikator hat einen oder mehrere zugehörige Werte.
  • In der Technik ist es klar, dass in Bezug auf eine Anwendung als eine Sammlung von Diensten, z.B. Micro-Services, solche Dienste nicht linear angeordnet werden dürfen. Vielmehr ist es klar, dass die Micro-Services Abhängigkeiten umfassen können und dass die Micro-Services daher eine hierarchische Anordnung aufweisen, die diese Abhängigkeiten widerspiegelt. Zusätzlich zu den KPls empfängt die Eingabeverwaltung (152) auch einen oder mehrere Parameter, die der Anwendung zugehörig sind, wobei jeder Parameter einem Parameterwert zugeordnet ist. Zu Beispielen für mögliche Parameterwerte gehören, ohne auf diese beschränkt zu sein, Zeitlimit, Neuversuch und Replikationsanzahl, die einer oder mehreren topologischen Beschränkungen zugehörig sind, die der hierarchischen Anordnung, z.B. der Hierarchie, entsprechen. In derTechnik ist es klar, dass eine Hierarchie eine Organisationstechnik ist, bei der Elemente in Schichten oder Gruppen eingeteilt werden, um die Komplexität zu reduzieren. Beispiele für hierarchische Anordnungen von Micro-Services sind in 6 bis 8 dargestellt und beschrieben. Der/die einstellbare(n) Parameter wird/werden in Bezug auf die Hierarchie der Micro-Services so gesetzt, dass der/die Parameterwert/e gewährleistet/gewährleisten, dass Suchanfragen von einem übergeordneten Micro-Service so lange aktiv sind, wie eine Suchanfrage von einem untergeordneten Micro-Service aktiv ist.
  • Die Testverwaltung (154), die hier als funktionsmäßig mit der Eingabeverwaltung (152) verbunden dargestellt ist, dient innerhalb der KI-Plattform (150) der Überwachung eines dynamischen Ressourcenstatus. Genauer gesagt verwendet die Testverwaltung (154) das auf ML beruhende Ersatzfunktions-Lernmodell in Verbindung mit der Erfassungsfunktion, um einen oder mehrere adaptive Tests der Anwendung durchzuführen. Wie in der Wissensdatenbank (160) dargestellt, gibt es für jede Anwendung eine entsprechende Ersatzfunktion und Erfassungsfunktion. Jeder Test ist auf eine bestimmte Konfiguration der Anwendung auf der Grundlage der eingestellten Parameter ausgerichtet. Die Testverwaltung (154) verwendet die ErfassungsfunktionA (168A), um eine Konfiguration des einen oder mehrerer Parameter für einen adaptiven Testlauf mit der AnwendungA (164A) auszuwählen. Die Ergebnisse des adaptiven Tests stellen Leistungsindikatorwerte der Anwendung bereit, z.B. KPIs, die der spezifischen Konfiguration der/des Parameter/s zugehörig sind. Darüber hinaus verwendet die Testverwaltung (154) die ML-Ersatzfunktion, um die KPI-Werte in dem zugehörigen ML-Modell zu erfassen. Das auf ML beruhende Ersatzfunktions-Lernmodell kann unter Verwendung eines neuronalen Netzwerks, einer Gaußprozess-Regression oder anderer linearer oder nichtlinearer Regressionstechniken, Kernregressionstechniken oder anderer im Rahmen der Black-Box-Optimierung oder des bestärkenden Lernens verwendeter Wertschätzungstechniken implementiert werden. Dementsprechend bilden die ML-Modelle jede Konfiguration eines oder mehrerer Parameter auf zwei oder mehr entsprechende KPI-Werte ab.
  • Durch Einstellen der Parameterwerte können mehrere Tests mit der Anwendung durchgeführt werden. Die Erfassungsfunktion, ErfassungsfunktionA (168A), wählt eine neue Konfiguration des einen oder mehrerer Parameterwerte aus, woraufhin ein weiterer adaptiver Test und entsprechende KPI-Werte gemessen werden. Die Erfassungsfunktion kann als Funktion der erwarteten Verbesserung, als Funktion der maximalen Wahrscheinlichkeit der Verbesserung oder als Funktion der oberen Konfidenzgrenze implementiert werden, oder es können andere Techniken zur Abschätzung von Aktionen verwendet werden, die in der Black-Box-Optimierung oder im bestärkenden Lernen eingesetzt werden. Die Testverwaltung (154) verwendet die KPI-Werte aus jedem Test und berechnet eine Pareto-Fläche der Anwendung. Die Pareto-Fläche zeigt in grafischer Form alle möglichen KPI-Werte, die auf der Grundlage der Konfigurationen der Parameterwerte, die in den adaptiven Tests verwendet wurden, erreicht werden können. Dementsprechend verwendet die Testverwaltung (154) das ML-Ersatzfunktions-Lernmodell und die Erfassungsfunktion, um auf der Grundlage von ausgewählten Konfigurationen der einstellbaren Parameter adaptive Tests für die Anwendung auszuführen, und verwendet die KPI-Werte aus den Tests, um eine entsprechende Pareto-Fläche zu berechnen.
  • Die Optimierungsverwaltung (156), die hier als funktionsmäßig mit der Eingabeverwaltung (152) und der Testverwaltung (154) verbunden dargestellt ist, hat die Aufgabe, die von der Testverwaltung (154) berechnete Pareto-Fläche zu untersuchen, um einen optimalen Betriebspunkt der Anwendung zu ermitteln, und die Anwendung an dem ausgewählten Betriebspunkt auszuführen. Die Optimierungsverwaltung (156) untersucht die berechnete Pareto-Fläche und wählt aus dieser Untersuchung einen optimalen Betriebspunkt, der hier auch als Betriebspunkt bezeichnet wird, für die Anwendung aus. In einer Ausführungsform stellt der ausgewählte Betriebspunkt einen Kompromiss in Bezug auf die KPI-Werte dar, wobei der ausgewählte Punkt einen höheren Wert für einen ersten, wünschenswerteren KPI und einen niedrigeren Wert für einen zweiten, weniger wünschenswerten KPI haben kann. In einer Ausführungsform kann der Betriebspunkt vom Benutzer ausgewählt werden. Die Optimierungsverwaltung (156) führt die Anwendung unter Verwendung des ausgewählten Betriebspunkts aus. Wenn der ausgewählte Betriebspunkt verwendet wird, wird die Anwendung mit den gewünschten, vom Benutzer bestimmten KPI-Werten ausgeführt. Dementsprechend untersucht die Optimierungsverwaltung (156) die berechnete Pareto-Fläche und wählt einen optimalen Betriebspunkt für die Anwendung aus und führt dann diese Anwendung unter Verwendung des ausgewählten Betriebspunkts aus.
  • Die Kl-Plattform (150) ist zwar als in dem Server (110) verkörpert oder in diesen integriert dargestellt, kann aber auch in einem separaten Datenverarbeitungssystem (z.B. 190) implementiert sein, das über das Netzwerk (105) mit dem Server (110) verbunden ist. Die Werkzeuge (152), (154) und (156) sind zwar als lokal auf dem Server (110) vorliegend dargestellt, können aber auch gemeinsam oder einzeln über das Netzwerk (105) verteilt sein. Wo auch immer die Eingabeverwaltung (152), die Testverwaltung (154) und die Optimierungsverwaltung (156) verkörpert sind, werden sie dazu verwendet, die multikriterielle Optimierung von Anwendungen zu verwalten und zu unterstützen.
  • Anwendungen können über das Netzwerk (105) an den Server (110) übertragen werden. Zum Beispiel können in einer Ausführungsform eine oder mehrere Anwendungen aus einem nichtflüchtigen Datenspeicher (190A) an den Server (110) übertragen werden. Die Werkzeuge (152), (154) und (156) verarbeiten die Anwendungen, entweder aus der Wissensdatenbank (160) oder über das Netzwerk (105).
  • Arten von Informationsverarbeitungssystemen, die den Server (110) nutzen können, reichen von kleinen Handheld-Einheiten wie ein Handheld-Computer/Mobiltelefon (180) bis zu großen Großrechnersystemen wie ein Großrechner (182). Zu Beispielen für Handheld-Computer (180) gehören elektronische Assistenten (PDAs), persönliche Unterhaltungseinheiten wie MP4-Abspielgeräte, tragbare Fernsehgeräte und Kompaktspeicherplatte-Abspielgeräte (compact disc player). Zu weiteren Beispielen für Informationsverarbeitungssysteme gehören ein Stift- oder Tablet-Computer (184), ein Laptop- oder Notebook-Computer (186), ein Personal-Computer-System (188) und ein Server (190). Wie dargestellt können die verschiedenen Informationsverarbeitungssysteme mittels Computernetzwerk (105) miteinander vernetzt werden. Zu Arten von Computernetzwerken (105), die zum Verbinden der verschiedenen Informationsverarbeitungssysteme verwendet werden können, gehören lokale Netzwerke (LAN), drahtlose lokale Netzwerke (WLAN), das Internet, das öffentliche Telefonnetz (PSTN, public switched telephone network), andere drahtlose Netzwerke und jede andere Netzwerktopologie, die zum Verbinden der Informationsverarbeitungssysteme verwendet werden kann. Viele der Informationsverarbeitungssysteme umfassen nichtflüchtige Datenspeicher wie Festplatten und/oder nichtflüchtigen Speicher. Einige der Informationsverarbeitungssysteme können separate nichtflüchtige Datenspeicher verwenden (z.B. verwendet der Server (190) den nichtflüchtigen Datenspeicher (190A) und der Großrechner (182) den nichtflüchtigen Datenspeicher (182A). Bei dem nichtflüchtigen Datenspeicher (182A) kann es sich um eine Komponente handeln, die sich außerhalb der verschiedenen Informationsverarbeitungssysteme befindet, oder um eine interne Komponente eines der Informationsverarbeitungssysteme.
  • Ein Informationsverarbeitungssystem kann viele Formen annehmen, von denen einige in 1 dargestellt sind. Zum Beispiel kann ein Informationsverarbeitungssystem die Form eines Desktop-Computers, eines Servers, eines tragbaren Computers, eines Laptops, eines Notebooks oder eines Computers oder Datenverarbeitungssystems mit einem anderen Formfaktor haben. Darüber hinaus kann ein Informationsverarbeitungssystem auch in anderen Formen vorliegen, zum Beispiel als elektronischer Assistent (PDA, personal digital assistant), als Spieleinheit, als Geldautomat (ATM, automated teller machine), als tragbare Telefoneinheit, als Datenübertragungseinheit oder als eine andere Einheit, die einen Prozessor und einen Speicher umfasst.
  • Unter einer Anwendungsprogrammierschnittstelle (API) versteht man in der Technik eine Softwarevermittlung zwischen zwei oder mehreren Anwendungen. In Bezug auf das in 1 dargestellte und beschriebene System zur Anwendungsoptimierung können eine oder mehrere APIs verwendet werden, um eines oder mehrere der Werkzeuge der Kl-Plattform zu unterstützen, zum Beispiel die Eingabeverwaltung (152), die Testverwaltung (154) und die Optimierungsverwaltung (156), sowie die ihnen zugehörige Funktionalität. Unter Bezugnahme auf 2 wird ein Blockschaubild (200) bereitgestellt, das die Werkzeuge der KI-Plattform und die ihnen zugehörigen APIs zeigt. Wie dargestellt ist eine Mehrzahl von Werkzeugen in die Kl-Plattform (205) eingebettet, wobei die Werkzeuge die Eingabeverwaltung (252), die API0 (212) zugeordnet ist, die Testverwaltung (254), die API1 (222) zugeordnet ist, und die Optimierungsverwaltung (256), die API2 (232) zugeordnet ist, umfassen. Jede der APIs kann in einer oder mehreren Sprachen und Schnittstellenspezifikationen implementiert werden. API0 (212) stellt eine Unterstützung für ein Empfangen und Verwalten der ausgewählten KPls und einstellbaren Parameter bereit; API1 (222) stellt eine Unterstützung für ein Durchführen eines oder mehrerer adaptiver Anwendungstests und ein Berechnen einer entsprechenden Pareto-Fläche unter Verwendung der beobachteten KPls aus den Tests bereit; und API2 (232) stellt eine Unterstützung für ein Untersuchen der Pareto-Fläche bereit, darunter Auswählen eines optimalen Anwendungsbetriebspunkts und Ausführen der Anwendung am ausgewählten Betriebspunkt. Wie dargestellt ist jede der APIs (212), (222) und (232) funktionsmäßig mit einer API-Orchestrierung (260) verbunden, die auch als Orchestrierungsschicht bezeichnet wird und in der Technik als Abstraktionsschicht zur transparenten Verknüpfung der einzelnen APIs verstanden wird. In einer Ausführungsform können die Funktionen der einzelnen APIs miteinander verbunden oder kombiniert werden. Daher sollte die hier dargestellte Konfiguration der APIs nicht als einschränkend angesehen werden. Dementsprechend kann, wie hier dargestellt, die Funktionalität der Werkzeuge durch ihre jeweiligen APIs verkörpert oder unterstützt werden.
  • Unter Bezugnahme auf 3 wird ein Ablaufplan (300) bereitgestellt, der einen Prozess zur multikriteriellen Optimierung einer Anwendung zeigt. Wie dargestellt und beschrieben gibt ein Benutzer zwei oder mehr wesentliche Leistungsindikatoren (KPI) ein, die in Bezug auf eine Anwendung (302) von Interesse sind, welche in einer Ausführungsform eine auf einer Cloud beruhende Anwendung sein kann. In einer Ausführungsform ist ein KPI eine Kennzahl, die misst und bewertet, wie gut ein Prozess oder ein Projekt bestimmte Erwartungen und Ziele erfüllt. KPls können in Cloud-Anwendungen integriert werden, um Erwartungen in Bezug auf die Form und Funktion der Cloud-Anwendung zu überwachen und zu bestätigen. Nach Schritt (302) werden ein oder mehrere der Anwendung zugehörige Parameter empfangen (304). Bei den in Schritt (304) empfangenen Parametern handelt es sich um einstellbare Parameter, und in einer Ausführungsform sind die empfangenen Parameter so steuerbar, dass sie die in Schritt (302) eingegebenen KPls beeinflussen. Zu Beispielen für die empfangenen Parameter gehören, ohne auf diese beschränkt zu sein, Zeitlimit, Neuversuch und Replikationsanzahl, die einer oder mehreren topologischen Beschränkungen der Anwendung zugehörig sind. Dementsprechend werden KPls von Interesse und Parameter empfangen, die der Anwendung zugehörig sind.
  • Wie in 1 beschrieben und wie in 6 bis 8 dargestellt und beschrieben, weist die Anwendung eine topologische Anordnung von Micro-Services auf, die in einer Ausführungsform eine hierarchische Anordnung der Micro-Services umfasst. Die hierarchische Anordnung hat inhärente Beschränkungen in Bezug auf die in der Hierarchie dargestellte Topologie. Die in Schritt (304) empfangenen Parameter reagieren auf die Topologie und werden in einer Ausführungsform in Bezug auf die Hierarchie der Micro-Services, die die Anwendung aufweist, so eingestellt oder gesetzt, dass der/die Parameterwert(e) gewährleistet/gewährleisten, dass Suchanfragen von einem übergeordneten Micro-Service so lange aktiv sind, wie eine Suchanfrage von einem untergeordneten, z.B. abhängigen, Micro-Service aktiv ist. Nach dem Empfangen des/der Parameter(s) in Schritt (306) wird die der Anwendung zugehörige auf ML beruhende Ersatzfunktion in Verbindung mit einer entsprechenden Erfassungsfunktion verwendet, um einen oder mehrere adaptive Tests zur Anwendungsleistung durchzuführen, um KPI-Werte zu messen, die der in Schritt (302) angegebenen Indikatoren kategorie entsprechen, wobei die gemessenen KPI-Werte möglichen KPI-Werten entsprechen, die auf der Grundlage von den in Schritt (304) empfangenen Konfigurationen der Parameterwerte erreicht werden können.
  • Unter Bezugnahme auf 4 wird ein Ablaufplan (400) bereitgestellt, der einen Prozess zur Verwendung von ML zum Durchführen der anwendungsadaptiven Tests zeigt. Wie dargestellt wird die Erfassungsfunktion verwendet, und eine Konfiguration des einen oder mehrerer einstellbaren Parameter, z.B. die in Schritt (304) empfangenen einstellbaren Parameter, wird ausgewählt (402). In einer Ausführungsform ist die Auswahl in Schritt (402) auf Parameter ausgerichtet, die zuvor noch nicht verwendet wurden. Ein Test der Anwendung wird mit dem/den ausgewählten Anwendungsparameter(n) durchgeführt (404). Die Ausgaben des Tests werden in Form von KPI-Werten beobachtet, und das ML-Modell wird anhand der geänderten Parameter und der beobachteten Ergebnisse aktualisiert (406). Dieser Prozess der Parameterauswahl und KPI-Messung wird für eine vordefinierte Zeitspanne oder eine bestimmte Anzahl von Tests fortgesetzt. In einer Ausführungsform sind die Zeit- oder Mengenbegrenzungen konfigurierbar. Zum Beispiel können in einer Ausführungsform Tests zur Parameterkonfiguration so konfiguriert werden, dass sie für eine bestimmte Zeitspanne bewertet werden, z.B. 30 Minuten. Dementsprechend werden eine ML-Ersatzfunktion und Erfassungsfunktion verwendet, um die quantitativen Ausgaben, die den KPls zugehörig sind, bei verschiedenen Konfigurationen des einen oder der mehreren Parameter zu ermitteln.
  • Jeder Test der Anwendung ergibt einen quantitativen Leistungswert, der den KPls von Interesse zugehörig ist. Nach Abschluss der adaptiven Tests kehrt der Prozess wie in 4 dargestellt zu Schritt (308) zurück, wo die beobachteten quantitativen Ausgaben der KPI-Werte verwendet werden, um eine Pareto-Fläche zu berechnen. Eine Pareto-Effizienz ist eine Situation, die nicht so modifiziert werden kann, dass ein einzelnes Kriterium oder Präferenzkriterium besser gestellt wird, ohne dass mindestens ein einzelnes Kriterium oder Präferenzkriterium schlechter gestellt wird. Eine Pareto-Front oder eine Pareto-Fläche ist der Satz aller pareto-effizienten Zuordnungen, der üblicherweise grafisch dargestellt wird. Die in Schritt (308) erstellte Pareto-Fläche zeigt alle in den Anwendungstests gemessenen möglichen quantitativen KPI-Werte, die auf der Grundlage der bereitgestellten und in einer Ausführungsform einstellbaren Parameter erreicht werden können. Die erstellte Pareto-Fläche wird untersucht, um einen optimalen Betriebspunkt für die Anwendung zu identifizieren (310). Die Anwendung wird dann unter Verwendung des identifizierten optimalen Betriebspunkts der Anwendung ausgeführt (312). Dementsprechend werden wie hier dargestellt Anwendungsparameter auf der Grundlage der topologischen Anordnung der Micro-Services der Anwendung ausgewählt oder eingestellt, wobei ML die Anwendungsparameter verwendet, um adaptive Anwendungstests durchzuführen und eine entsprechende Pareto-Fläche zu berechnen, die untersucht wird, um einen optimalen Betriebspunkt für die Anwendung zu identifizieren und die Anwendung an diesem auszuführen.
  • Unter Bezugnahme auf 5 wird eine Figur (500) bereitgestellt, die ein Diagramm und eine beispielhafte Pareto-Fläche für die KPls der Latenz- und Fehlerraten-Ziele darstellt. Wie dargestellt, wird ein Diagramm (510) mit den beiden KPls für Latenz und Fehlerrate gezeigt. Das Diagramm (510) zeigt den auf einer ersten Achse (520) gemessenen Latenzindikator und den auf einer zweiten Achse (530) gemessenen Fehlerratenindikator. Anwendungstests werden mit einem oder mehreren ausgewählten Parametern durchgeführt, und es werden den Indikatoren zugehörige quantitative Werte gemessen, die in dem Diagramm (510) dargestellt werden. Jede Messung wird durch einen Eintrag in dem Diagramm (510) wiedergegeben. Eine Mehrzahl von KPI-Messungen wird als Einträge im Diagramm (510) aus den Tests dargestellt, und es wird eine Pareto-Fläche (540) erstellt, um eine ausgewählte Teilmenge der Einträge darzustellen. Alle grafischen Einträge stellen die Werte der ausgewählten KPIs, in diesem Beispiel Latenz und Fehlerrate, auf der Grundlage der bereitgestellten einstellbaren Parameter dar (nicht dargestellt). Jeder Punkt auf der Pareto-Fläche ist ein möglicher Betriebspunkt der Anwendung mit entsprechenden und bekannten (oder identifizierbaren) KPI-Werten. Zum Beispiel werden auf der Pareto-Fläche zwei mögliche oder optimale Betriebspunkte als BetriebspunktA (550) und BetriebspunktB (560) dargestellt. BetriebspunktA (550) stellt einen optimalen Betriebspunkt der Anwendung auf der Fläche (540) in Bezug auf die Latenz dar, und BetriebspunktB (560) stellt einen optimalen Betriebspunkt der Anwendung auf der Fläche (540) in Bezug auf die Fehlerrate dar. Durch Auswählen eines Betriebspunkts auf der Pareto-Fläche (540) werden die Leistungsindikatoren der Anwendung festgelegt, bevor die Anwendung ausgeführt wird.
  • Bei dem in 5 dargestellten Diagramm handelt es sich um eine zweidimensionale Pareto-Fläche, die zwei KPls entspricht. Es versteht sich, dass die Pareto-Fläche in einer Ausführungsform eine größere Menge von KPls darstellen kann. Zum Beispiel würde die Pareto-Fläche im Falle von drei KPls einer dreidimensionalen Fläche entsprechen. Dementsprechend handelt es sich bei der in 5 dargestellten Pareto-Fläche lediglich um ein Beispiel für eine Pareto-Fläche aus den Anwendungstests.
  • Wie oben in 1 beschrieben, können die Micro-Services hierarchisch angeordnet sein. Der/die einstellbare(n) Parameter wird/werden in Bezug auf die Hierarchie der Micro-Services so gesetzt, dass der/die Parameterwert(e) gewährleistet/gewährleisten, dass Suchanfragen von einem übergeordneten Micro-Service so lange aktiv sind, wie eine Suchanfrage von einem untergeordneten Micro-Service aktiv ist. Unter Bezugnahme auf 6 wird ein Blockschaubild (600) bereitgestellt, das eine beispielhafte Hierarchie von interagierenden Micro-Services darstellt. Es wird ein Gateway (602) gezeigt, das Daten mit einer Hierarchie von Micro-Services austauscht. Die in der Hierarchie dargestellte Topologie umfasst drei Ebenen, die hier als Ebene0 (610), Ebene1 (620) und Ebene2 (630) dargestellt sind. In einer Ausführungsform ist Ebene0 (610) eine übergeordnete Ebene, Ebene1 (620) ist eine untergeordnete Ebene und Ebene2 (630) ist eine in zweiter Ebene untergeordnete Ebene. Ebene0 (610) ist mit einem einzigen Micro-Service dargestellt, z.B. Micro-Service0,0 (612). In einer Ausführungsform wird der Micro-Service0,0 (612) als übergeordneter Micro-Service bezeichnet, der so lange aktiv bleibt, wie eine Suchanfrage von einem untergeordneten Micro-Service aktiv ist. Micro-Service1,0 (622) und Micro-Service1,1 (624) werden in der untergeordneten Ebene dargestellt, z.B. Ebene1 (620) in der Hierarchie. Micro-Service1,0 (622) und Micro-Service1,1 (624) werden als untergeordnete Micro-Services bezeichnet, die jeweils separat mit dem übergeordneten Micro-Service0,0 (612) verbunden und von diesem abhängig sind. Ein Micro-Service kann sowohl ein übergeordneter als auch ein untergeordneter Micro-Service in der Hierarchie sein. Wie dargestellt ist Micro-Service1,1 (624) sowohl von Micro-Service0,0 (612) abhängig als auch dem Micro-Service2,0 (632) in Ebene2 (630) übergeordnet. Auf der Grundlage der hier dargestellten Hierarchie und Anordnung bleibt der Micro-Service1,1 (624) nur so lange aktiv, wie eine Suchanfrage von Micro-Service2,0 (632) aktiv ist. Dementsprechend zeigt die hier dargestellte hierarchische Anordnung der Micro-Services ein Beispiel für abhängige Beziehungen zwischen den Micro-Services.
  • 7 zeigt ein Blockschaubild (700), das eine beispielhafte Hierarchie von Anwendungs-Micro-Services mit einer sequenziellen Suchanfrage-Beschränkung darstellt. Es wird ein Gateway (702) gezeigt, das Daten mit einer Hierarchie von Micro-Services austauscht. Die in der Hierarchie dargestellte Topologie umfasst zwei Ebenen, die hier als Ebene0 (710), und Ebene1 (720) dargestellt sind. In einer Ausführungsform ist Ebene0 (710) eine übergeordnete Schicht, die auch als unabhängige Schicht bezeichnet wird, und Ebene1 (720) ist eine untergeordnete Schicht, die auch als abhängige Schicht bezeichnet wird. Ebene0 (710) ist mit einem einzigen Micro-Service dargestellt, der auch als übergeordneter Micro-Service bezeichnet wird, und zwar Micro-Service0,0 (712). Ebene1 (720) ist mit zwei untergeordneten Micro-Services dargestellt, darunter Micro-Service1,0 (722) und Micro-Service1,1 (732). Die untergeordneten Micro-Services (722) und (732) sind separat und direkt mit dem übergeordneten Micro-Service (712) verbunden. Der übergeordnete Micro-Service0.0(712) ist mit dem Zeitlimit-Parameter y0 (714) konfiguriert. In ähnlicher Weise wird jeder der untergeordneten Micro-Services (722) und (732) mit einem entsprechenden Zeitlimit-Parameter und einem Neuversuch-Parameter konfiguriert. Wie dargestellt ist Micro-Service1,0 (722) mit dem Zeitlimit-Parameter y2 (724) und dem Neuversuch-Parameter z2 (726) dargestellt, und Micro-Service1,1 (732) ist mit dem Zeitlimit-Parameter y3 (734) und dem Neuversuch-Parameter z3 (736) dargestellt. Die topologische Beschränkung für die hier dargestellte Hierarchie ist ein Szenario für eine sequenzielle Suchanfrage, das als Gleichung y1 ≥ y2z2 + y3z3 dargestellt ist. Bei diesem Szenario einer sequenziellen Suchanfrage sollte der übergeordnete Micro-Service0,0 (712) nicht aufgrund eines Zeitlimits aussetzen, solange der untergeordnete Micro-Service1,0 (722) und/oder der untergeordnete Micro-Service1,1 (732) aktiv sind.
  • 8 zeigt ein Blockschaubild (800), das eine beispielhafte Hierarchie von Anwendungs-Micro-Services mit einer parallelen Suchanfrage-Beschränkung darstellt. Es wird ein Gateway (802) gezeigt, das Daten mit einer Hierarchie von Micro-Services austauscht, wobei die Hierarchie zwei Ebenen von Micro-Services umfasst. Ein übergeordneter Micro-Service, Micro-Service0,0 (812), ist in einer ersten Ebene (810) dargestellt, z.B. Ebene0, und bildet eine Schnittstelle zwischen dem Gateway (802) und den Micro-Services, die in einer zweiten Ebene (820) dargestellt sind, z.B. Ebene1, die auch als untergeordnete Ebene bezeichnet wird. Ebene1 (820) ist mit zwei untergeordneten Micro-Services dargestellt, die jeweils direkt und separat mit dem übergeordneten Micro-Service0,0 (812) verbunden sind. Der untergeordnete Micro-Service1,0 (822) steht in direkter Beziehung zum übergeordneten Micro-Service0,0 (812), und der untergeordnete Micro-Service1,1 (832) steht in direkter Beziehung zum übergeordneten Micro-Service0,0 (812). Der übergeordnete Micro-Service0.0 (812) ist mit dem Zeitlimit-Parameter y1 (814) konfiguriert. In ähnlicher Weise ist der untergeordnete Micro-Service1,0 (822) mit dem Zeitlimit-Parameter y2 (824) und dem Neuversuch-Parameter z2 (826) konfiguriert, und der Micro-Service1,1 (832) ist mit dem Zeitlimit-Parameter y3 (834) und dem Neuversuch-Parameter z3 (836) konfiguriert. Die topologische Beschränkung für die hier dargestellte Hierarchie ist ein Szenario für eine parallele Suchanfrage, das als Gleichung y1 ≥ max{y2z2, y3z3} dargestellt ist. Bei diesem Szenario einer parallelen Suchanfrage sollte der Micro-Service0,0 (812) nicht aufgrund eines Zeitlimits aussetzen, solange der untergeordnete Micro-Service1,0 (822) und/oder der untergeordnete Micro-Service1,1 (832) aktiv sind.
  • Die hierarchischen Anordnungen und die entsprechenden sequenziellen und parallelen Szenarien für Suchanfragen, die in 6, 7 und 8 gezeigt und beschrieben werden, dienen nur als Beispiele zur Veranschaulichung und sollten nicht als einschränkend betrachtet werden. Genauer gesagt beziehen sich die hier dargestellten hierarchischen Anordnungen auf Beispiele für topologische Beschränkungen, die auf die Anordnung reagieren. In einer Ausführungsform können die Anzahl der Micro-Services, die topologische Anordnung und die Szenarien für Suchanfragen an Komplexität zunehmen.
  • Die hier gezeigten und beschriebenen Ausführungsformen können in Form eines Computersystems zur Verwendung mit einer KI-Plattform vorliegen, die maschinelles Lernen bereitstellt, um ein multikriterielles Optimieren einer Cloud-Anwendung zu orchestrieren. Aspekte der Werkzeuge (152), (154) und (156) und die ihnen zugehörige Funktionalität können in einem Computersystem/Server an einem einzigen Standort verkörpert sein oder in einer Ausführungsform in einem auf einer Cloud beruhenden System konfiguriert sein, das Datenverarbeitungsressourcen gemeinsam nutzt. Unter Bezugnahme auf 9 wird ein Blockschaubild (900) bereitgestellt, das ein Beispiel eines Computersystems/Servers (902) zeigt, im Folgenden als Host (902) bezeichnet, das mit einem auf einer Cloud beruhenden Unterstützungssystem Daten austauscht, um das oben beschriebene System und die oben beschriebenen Prozesse bezüglich 1 bis 8 zu implementieren. Host (902) ist in zahlreichen anderen Datenverarbeitungssystem-Umgebungen oder -Konfigurationen für allgemeine Zwecke oder spezielle Zwecke einsatzfähig. Zu Beispielen für bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die für die Verwendung mit Host (902) geeignet sein können, zählen, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computer-Systeme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputer-Systeme, Großrechner-Computersysteme und Dateisysteme (z.B. verteilte Speicherumgebungen und verteilte Cloud-Computing-Umgebungen), die eines der oben genannten Systeme, Einheiten und deren Entsprechungen aufweisen.
  • Host (902) kann in einem allgemeinen Kontext von durch ein Computersystem ausführbaren Befehlen beschrieben werden, zum Beispiel Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. umfassen, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Host (902) kann in verteilten Cloud-Computing-Umgebungen (910) eingesetzt werden, in denen Aufgaben von entfernten Verarbeitungseinheiten durchgeführt werden, die über ein Verkehrsnetz miteinander verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Speichermedien des Computersystems befinden, unter anderem in Arbeitsspeichereinheiten.
  • Wie in 9 dargestellt, ist Host (902) in der Form einer Datenverarbeitungseinheit für allgemeine Zwecke dargestellt. Die Komponenten von Host (902) können, ohne darauf beschränkt zu sein, einen oder mehrere Prozessoren oder Verarbeitungseinheiten (904), einen Systemspeicher (906) und einen Bus (908) umfassen, der verschiedene Systemkomponenten mit dem Prozessor (904) verbindet, unter anderem den Systemspeicher (906). Bus (908) repräsentiert eine oder mehrere von mehreren Arten von Busstrukturen, unter anderem einen Speicherbus oder eine Speichersteuerung, einen Peripheriebus, einen beschleunigten Grafikanschluss und einen Prozessor oder lokalen Bus, der eine von verschiedenen Busarchitekturen verwendet. Zu diesen Architekturen gehören zum Beispiel, aber nicht auf diese beschränkt, ISA-Bus (Industry Standard Architecture), MCA-Bus (Micro Channel Architecture), EISA-Bus (Enhanced ISA), lokaler Bus der Video Electronics Standards Association (VESA) und PCI-Bus (Peripheral Component Interconnects). Host (902) umfasst in der Regel eine Vielfalt von durch ein Computersystem lesbaren Medien. Bei diesen Medien kann es sich um alle verfügbaren Medien handeln, auf die über Host (902) zugegriffen werden kann, und sie umfassen sowohl flüchtige als auch nichtflüchtige Medien, Wechselmedien und nicht wechselbare Medien.
  • Der Systemspeicher (906) kann durch ein Computersystem lesbare Medien in Form eines flüchtigen Speichers umfassen, zum Beispiel RAM (Random Access Memory) (930) und/oder Cache-Speicher (932). Nur als Beispiel kann das Speichersystem (934) für Lese- und Schreibvorgänge von einem nicht wechselbaren, nichtflüchtigen magnetischen Medium bereitgestellt werden (nicht dargestellt und üblicherweise als „Festplatte“ bezeichnet). Obwohl nicht dargestellt, kann ein Magnetplattenlaufwerk zum Lesen von einer und Schreiben auf eine wechselbare(n), nichtflüchtige(n) Magnetplatte (z.B. eine „Diskette“) bereitgestellt werden, sowie ein optisches Plattenlaufwerk zum Lesen von einer oder Schreiben auf eine wechselbare(n), nichtflüchtige(n) optische(n) Platte wie eine CD-ROM, DVD-ROM oder andere optische Medien. Hierbei können sie jeweils über eine oder mehrere Datenträgerschnittstellen mit Bus (908) verbunden werden.
  • Das Programm/Dienstprogramm (940), das einen Satz (mindestens eines) von Programmmodulen (942) enthält, kann zum Beispiel, aber nicht darauf beschränkt, im Systemspeicher (906) gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule sowie Programmdaten. Jedes der Betriebssysteme, ein oder mehreren Anwendungsprogramme, anderen Programmmodule sowie Programmdaten oder eine Kombination davon kann eine Implementierung einer Netzwerkumgebung umfassen. Die Programmmodule (942) führen im Allgemeinen die Funktionen und/oder Methodiken der Ausführungsformen des Adversial Training (feindliches Training) und der dynamischen Klassifikationsmodell-Entwicklung aus. Zum Beispiel kann der Satz von Programmmodulen (942) die Module enthalten, die als die Werkzeuge (152), (154) und (156) konfiguriert sind, wie in 1 beschrieben.
  • Host (902) kann auch mit einer oder mehreren externen Einheiten (914) Daten austauschen, zum Beispiel mit einer Tastatur, einer Zeigeeinheit, einer Sensoren-Eingabeeinheit, einer Sensoren-Ausgabeeinheit usw.; mit einer Anzeige (924); mit einer oder mehreren Einheiten, anhand derer ein Benutzer mit Host (902) interagieren kann; und/oder mit allen Einheiten (z.B. Netzwerkkarte, Modem usw.), anhand derer Host (902) mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten austauschen kann. Eine solche Datenübertragung kann über eine oder mehrere Eingabe/Ausgabe-(E/A-)Schnittstellen (922) erfolgen. Host (902) kann jedoch auch über den Netzwerkadapter (920) mit einem oder mehreren Netzwerken wie einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet) Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter (920) über den Bus (908) Daten mit den anderen Komponenten von Host (902) aus. In einer Ausführungsform tauscht eine Mehrzahl von Knoten eines verteilten Dateisystems (nicht dargestellt) über die E/A-Schnittstelle (922) oder über den Netzwerkadapter (920) Daten mit dem Host (902) aus. Es sollte auch beachtet werden, dass andere Hardware- und/oder Softwarekomponenten in Verbindung mit Host (902) verwendet werden können, auch wenn sie nicht dargestellt sind. Beispiele umfassen, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerkarrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
  • In diesem Dokument werden die Begriffe „Computerprogramm-Medium“, „durch einen Computer nutzbares Medium“ und „durch einen Computer lesbares Medium“ verwendet, um sich im Allgemeinen auf Medien wie Hauptspeicher (906), darunter RAM (930), Zwischenspeicher (932) und Speichersystem (934), zu beziehen, zum Beispiel ein Wechselspeicherlaufwerk und eine in einem Festplattenlaufwerk installierte Festplatte.
  • Computerprogramme (auch Computer-Steuerlogik genannt) sind in Speicher (906) gespeichert. Computerprogramme können auch über eine Datenübertragungsschnittstelle empfangen werden, zum Beispiel über einen Netzwerkadapter (920). Durch das Ausführen solcher Computerprogramme kann das Computersystem die Funktionen der vorliegenden Ausführungsformen ausführen, wie hier erläutert. Insbesondere ermöglichen die Computerprogramme durch ihr Ausführen, dass die Verarbeitungseinheit (904) die Funktionen des Computersystems ausführen kann. Dementsprechend stellen solche Computerprogramme Controller des Computersystems dar.
  • In einer Ausführungsform ist Host (902) ein Knoten in einer Cloud-Computing-Umgebung. Wie in der Technik bekannt ist, handelt es sich bei Cloud-Computing um ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen, bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften umfassen, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle. Bei den Eigenschaften handelt es sich zum Beispiel um die folgenden:
  • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Nutzung von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Bei den Dienstmodellen handelt es sich um die folgenden:
  • Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Benutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen der Application Hosting Environment.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die folgenden:
  • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann in den eigenen Räumen oder fremden Räumen stehen.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt, und sie gehört einer Cloud-Dienste verkaufenden Organisation.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten aufweist.
  • Unter Bezugnahme auf 10 ist ein veranschaulichendes Cloud-Computing-Netzwerk (1000) abgebildet. Wie gezeigt ist, weist das Cloud-Computing-Netzwerk (1000) eine Cloud-Computing-Umgebung (1050) mit einem oder mehreren Cloud-Computing-Knoten (1010) auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten Daten austauschen können. Zu Beispielen dieser lokalen Datenverarbeitungseinheiten zählen, ohne auf diese beschränkt zu sein, der elektronische Assistent (PDA, personal digital assistant) oder das Mobiltelefon 1054A, der Desktop-Computer 1054B, der Laptop-Computer 1054C und/oder das Automobil-Computer-System 1054N. Einzelne Knoten innerhalb der Knoten (1010) können weiter miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie Private, Community, Public oder Hybrid Clouds gruppiert werden (nicht dargestellt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung (1000), Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es versteht sich, dass die Arten von in 10 gezeigten Datenverarbeitungseinheiten (1054A bis N) lediglich veranschaulichend sein sollen und dass die Cloud-Computing-Umgebung (1050) über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 11 wird ein Satz von funktionalen Abstraktionsschichten (1100) gezeigt, die durch das Cloud-Computing-Netzwerk in 10 bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 11 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und die Ausführungsformen nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt: Hardware- und Software-Schicht (1110), Virtualisierungsschicht (1120), Verwaltungsschicht (1130) und Arbeitslastschicht (1140). Die Hardware- und Software-Schicht (1110) umfasst Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: Großrechner, in einem Beispiel IBM® zSeries®-Systeme; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server, in einem Beispiel IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten; Netzwerke sowie Netzwerkkomponenten. Zu Beispielen von Software-Komponenten gehören: Netzwerk-Anwendungsserver-Software, in einem Beispiel IBM WebSphere®-Anwendungsserver-Software; und Datenbank-Software, in einem Beispiel IBM DB2®-Datenbank-Software. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, und DB2 sind eingetragene Warenzeichen der International Business Machines Corporation in vielen Gerichtsbarkeiten weltweit).
  • Die Virtualisierungsschicht (1120) stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke, darunter virtuelle private Netzwerke, virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients.
  • In einem Beispiel kann die Verwaltungsschicht (1130) die folgenden Funktionen bereitstellen: Ressourcen-Bereitstellung, Messen und Preisfindung, Benutzerportal, Verwaltung des Dienstumfangs, Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement). Eine Ressourcen-Bereitstellung stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen aufweisen. Die Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) stellt die Vorbereitung und Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
  • Eine Arbeitslastschicht (1140) stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Beispiele für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, sind, ohne auf diese beschränkt zu sein: Abbildung und Navigation; Software-Entwicklung und Lebenszyklusverwaltung; Bereitstellung von Ausbildung in virtuellen Klassenzimmern; Datenanalytikverarbeitung; Transaktionsverarbeitung; und multikriterielle Optimierung einer Anwendungsverwaltung
  • Das hier gezeigte System und die hier gezeigten Ablaufpläne können auch in Form einer Computerprogrammeinheit zum dynamischen Orchestrieren einer voraussetzungsgesteuerten codifizierten Infrastruktur vorliegen. In der Einheit ist ein Programmcode verkörpert. Der Programmcode ist von einer Verarbeitungseinheit ausführbar, um die beschriebene Funktionalität zu unterstützen.
  • Zwar wurden bestimmte Ausführungsformen dargestellt und beschrieben, doch wird es für den Fachmann offensichtlich sein, dass auf der Grundlage von hierin enthaltenen Lehren Änderungen und Modifikationen vorgenommen werden können, ohne von ihren allgemeineren Aspekten abzuweichen. Daher sollen die beigefügten Ansprüche in ihrem Umfang alle Änderungen und Modifikationen umfassen, die in den wahren Umfang der Ausführungsformen fallen. Es sei ferner darauf hingewiesen, dass die Ausführungsformen ausschließlich durch die beigefügten Ansprüche definiert sind. Der Fachmann wird verstehen, dass, wenn eine bestimmte Anzahl eines eingeführten Anspruchselements beabsichtigt ist, diese Absicht ausdrücklich im Anspruch aufgeführt wird, und dass ohne eine solche Angabe keine solche Beschränkung vorliegt. Als nicht einschränkendes Beispiel und zum besseren Verständnis werden in den folgenden beigefügten Ansprüchen die einleitenden Ausdrücke „mindestens eins“ und „eins oder mehrere“ verwendet, um Anspruchselemente einzuführen. Die Verwendung solcher Ausdrücke sollte jedoch nicht dahingehend ausgelegt werden, dass die Einführung eines Anspruchselements durch die unbestimmten Artikel „ein“ oder „eine“ einen bestimmten Anspruch, der ein auf diese Weise eingeführtes Anspruchselement enthält, auf die Ausführungsformen beschränkt, die nur ein solches Element enthalten, selbst wenn derselbe Anspruch die einleitenden Ausdrücke „eins oder mehrere“ oder „mindestens eins“ und unbestimmte Artikel wie „ein“ oder „eine“ umfasst; dies gilt auch für die Verwendung von bestimmten Artikeln in den Ansprüchen.
  • Bei der (den) vorliegenden Ausführungsform(en) kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Darüber hinaus können ausgewählte Aspekte der vorliegenden Ausführungsform(en) als reine Hardware-Ausführungsform vorliegen, als reine Software-Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder als eine Ausführungsform, die Software- und/oder Hardware-Aspekte kombiniert und hierin allgemein als „Schaltkreis“, „Modul“ oder „System“ bezeichnet werden kann. Darüber hinaus können Aspekte der vorliegenden Ausführungsform(en) die Form eines Computerprogrammprodukts annehmen, das in einem durch einen Computer lesbaren Speichermedium (oder -medien) verkörpert ist, auf dem (denen) durch einen Computer lesbare Programmanweisungen gespeichert sind, die einen Prozessor veranlassen, Aspekte der vorliegenden Ausführungsform(en) auszuführen. In dieser Verkörperung sind das offenbarte System, ein Verfahren und/oder ein Computerprogrammprodukt funktionsfähig, um die Funktionalität und den Betrieb einer multikriteriellen Optimierung von Anwendungen zu verbessern.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein dynamischer oder statischer Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), eine magnetische Speichereinheit, ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Ausführungsform(en) kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server oder Serververbund ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Ausführungsform(en) durchzuführen.
  • Aspekte der vorliegenden Ausführungsform(en) sind hierin unter Bezugnahme auf Flussdiagramm-Darstellungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten beschrieben. Es wird darauf hingewiesen, dass jeder Block der Flussdiagramm-Darstellungen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Flussdiagramm-Darstellungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken des Flussdiagramms und/oder des Blockschaubilds festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Ausführungsform(en). In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Wenngleich hierin zur Veranschaulichung spezifische Ausführungsformen beschrieben wurden, ist zu berücksichtigen, dass verschiedene Modifikationen vorgenommen werden können, ohne vom Umfang der Ausführungsform(en) abzuweichen. Insbesondere kann die codifizierte Infrastruktur, einschließlich der dynamischen Orchestrierung einer voraussetzungsgesteuerten codifizierten Infrastruktur, von verschiedenen Computerplattformen oder über mehrere Einheiten ausgeführt werden. Darüber hinaus kann der Datenspeicher und/oder der Korpus vor Ort oder entfernt angeordnet oder über mehrere Systeme verteilt sein. Dementsprechend ist der Schutzumfang der Ausführungsform(en) nur durch die folgenden Ansprüche und deren Entsprechungen begrenzt.

Claims (20)

  1. Computersystem, das aufweist: eine funktionsmäßig mit einer Speichereinheit verbundene Verarbeitungseinheit; eine Plattform für künstliche Intelligenz (Kl), die funktionsmäßig mit der Verarbeitungseinheit verbunden ist, wobei die Kl-Plattform so konfiguriert ist, dass sie ein multikriterielles Optimieren einer Cloud-Anwendung orchestriert, wobei die Kl-Plattform aufweist: eine Eingabeverwaltung, die einen Satz von zwei oder mehr der Anwendung zugehörigen wesentlichen Leistungsindikatoren (KPI) empfängt, wobei jeder KPI im Satz der KPls einem KPI-Wert zugehörig ist; eine Testverwaltung, die ein auf maschinellem Lernen (ML) beruhendes Ersatzfunktions-Lernmodell in Verbindung mit einer Erfassungsfunktion verwendet, um eine adaptive Testdurchführung der Anwendung mit einem oder mehreren Parametern durchzuführen; wobei die Testverwaltung die Ausgaben von jeder Testdurchführung beobachtet und eine Pareto-Fläche der beobachteten Ausgaben berechnet. eine Optimierungsverwaltung, die die berechnete Pareto-Fläche untersucht und einen optimalen Betriebspunkt für die Anwendung auswählt, der der Konfiguration des einen oder der mehreren Parameter entspricht; und wobei die Optimierungsverwaltung die Anwendung an dem ausgewählten optimalen Betriebspunkt ausführt.
  2. Computersystem nach Anspruch 1, wobei das auf ML beruhende Ersatzfunktions-Lernmodell jede Konfiguration des einen oder mehrerer Parameter auf die zwei oder mehr KPI-Werte abbildet.
  3. Computersystem nach Anspruch 2, wobei das auf ML beruhende Ersatzfunktions-Lernmodell unter Verwendung eines neuronalen Netzwerks, einer Gaußprozess-Regression, Kernregressionstechniken oder einer Kombination davon implementiert wird.
  4. Computersystem nach Anspruch 1, wobei die Erfassungsfunktion eine zweite Konfiguration von einem oder mehreren zweiten Parametern für eine zweite Testausführung der Anwendung auswählt.
  5. Computersystem nach Anspruch 4, wobei die Erfassungsfunktion als Funktion der erwarteten Verbesserung, als Funktion der maximalen Wahrscheinlichkeit der Verbesserung, als Funktion der oberen Konfidenzgrenze oder einer Kombination davon implementiert wird.
  6. Computersystem nach Anspruch 1, wobei der Satz von zwei oder mehr KPl-Werten Latenz, Fehlerrate, Durchsatz oder eine Kombination davon aufweist, und wobei der eine oder mehrere Parameter, die einer oder mehreren topologischen Beschränkungen zugehörig sind, Zeitlimit, Neuversuch, Replikationsanzahl oder eine Kombination davon aufweist.
  7. Computersystem nach Anspruch 6, wobei die topologischen Beschränkungen eine Hierarchie von Micro-Services aufweisen und der eine oder mehrere Parameter in Bezug auf die Hierarchie gesetzt sind, wobei sichergestellt wird, dass der eine oder mehrere Parameter gewährleisten, dass eine Suchanfrage von einem übergeordneten Micro-Service in der Hierarchie so lange aktiv ist, wie eine oder mehrere Suchanfragen von einem untergeordneten Micro-Service aktiv sind.
  8. Computerprogrammprodukt zum Orchestrieren einer multikriteriellen Optimierung von Cloud-Anwendungen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, in dem ein Programmcode verkörpert ist, wobei der Programmcode durch einen Prozessor ausführbar ist zum: Empfangen eines Satzes von zwei oder mehr einer Anwendung zugehörigen wesentlichen Leistungsindikatoren (KPI), wobei jeder KPI im Satz der KPls einem KPI-Wert zugehörig ist; Verwenden eines auf maschinellem Lernen (ML) beruhenden Ersatzfunktions-Lernmodells in Verbindung mit einer Erfassungsfunktion, um eine adaptive Testdurchführung der Anwendung mit einem oder mehreren empfangenen Parametern durchzuführen; Beobachten der Ausgaben von jeder Testdurchführung und Berechnen einer Pareto-Fläche der beobachteten Ausgaben. Untersuchen der berechneten Pareto-Fläche und Auswählen eines optimalen Betriebspunkts für die Anwendung, der der Konfiguration des einen oder mehrerer Parameter entspricht; und Ausführen der Anwendung an dem ausgewählten optimalen Betriebspunkt.
  9. Computerprogrammprodukt nach Anspruch 8, wobei das auf ML beruhende Ersatzfunktions-Lernmodell jede Konfiguration des einen oder mehrerer Parameter auf die zwei oder mehr KPI-Werte abbildet.
  10. Computerprogrammprodukt nach Anspruch 9, wobei das auf ML beruhende Ersatzfunktions-Lernmodell unter Verwendung eines neuronalen Netzwerks, einer Gaußprozess-Regression, Kernregressionstechniken oder einer Kombination davon implementiert wird.
  11. Computerprogrammprodukt nach Anspruch 8, wobei die Erfassungsfunktion eine zweite Konfiguration von einem oder mehreren zweiten Parametern für eine zweite Testausführung der Anwendung auswählt.
  12. Computerprogrammprodukt nach Anspruch 11, wobei die Erfassungsfunktion als Funktion der erwarteten Verbesserung, als Funktion der maximalen Wahrscheinlichkeit der Verbesserung, als Funktion der oberen Konfidenzgrenze oder einer Kombination davon implementiert wird.
  13. Computerprogrammprodukt nach Anspruch 8, wobei der Satz von zwei oder mehr KPl-Werten Latenz, Fehlerrate, Durchsatz oder eine Kombination davon aufweist, und wobei der eine oder mehrere einstellbare Parameter, die einer oder mehreren topologischen Beschränkungen zugehörig sind, Zeitlimit, Neuversuch, Replikationsanzahl oder eine Kombination davon aufweist.
  14. Computerprogrammprodukt nach Anspruch 13, wobei die topologischen Beschränkungen eine Hierarchie von Micro-Services aufweisen und der eine oder mehrere Parameter in Bezug auf die Hierarchie gesetzt sind, wobei sichergestellt wird, dass der eine oder mehrere Parameter gewährleisten, dass eine Suchanfrage von einem übergeordneten Micro-Service in der Hierarchie so lange aktiv ist, wie eine oder mehrere Suchanfragen von einem untergeordneten Micro-Service aktiv sind.
  15. Auf einem Computer implementiertes Verfahren, das aufweist: Empfangen eines Satzes von zwei oder mehr der Anwendung zugehörigen wesentlichen Leistungsindikatoren (KPIs), wobei jeder KPI im Satz der KPls einem KPI-Wert zugehörig ist; Verwenden eines auf maschinellem Lernen (ML) beruhenden Ersatzfunktions-Lernmodells in Verbindung mit einer Erfassungsfunktion, um eine adaptive Testdurchführung der Anwendung mit einem oder mehreren empfangenen Parametern durchzuführen; Beobachten der Ausgaben von jeder Testdurchführung und Berechnen einer Pareto-Fläche der beobachteten Ausgaben. Untersuchen der berechneten Pareto-Fläche und Auswählen eines optimalen Betriebspunkts für die Anwendung, der der Konfiguration des einen oder der mehreren Parameter entspricht; und Ausführen der Anwendung an dem ausgewählten optimalen Betriebspunkt.
  16. Verfahren nach Anspruch 15, wobei das auf ML beruhende Ersatzfunktions-Lernmodell jede Konfiguration des einen oder mehrerer Parameter auf die zwei oder mehr KPI-Werte abbildet.
  17. Verfahren nach Anspruch 16, wobei das auf ML beruhende Ersatzfunktions-Lernmodell unter Verwendung eines neuronalen Netzwerks, einer Gaußprozess-Regression, Kernregressionstechniken oder einer Kombination davon implementiert wird.
  18. Verfahren nach Anspruch 15, wobei die Erfassungsfunktion eine zweite Konfiguration von einem oder mehreren zweiten Parametern für eine zweite Testausführung der Anwendung auswählt.
  19. Verfahren nach Anspruch 18, wobei die Erfassungsfunktion als Funktion der erwarteten Verbesserung, als Funktion der maximalen Wahrscheinlichkeit der Verbesserung, als Funktion der oberen Konfidenzgrenze oder einer Kombination davon implementiert wird.
  20. Verfahren nach Anspruch 15, wobei der Satz von zwei oder mehr KPl-Werten Latenz, Fehlerrate, Durchsatz oder eine Kombination davon aufweist, und wobei der eine oder mehrere Parameter, die einer oder mehreren topologischen Beschränkungen zugehörig sind, Zeitlimit, Neuversuch, Replikationsanzahl oder eine Kombination davon aufweist.
DE112021002572.4T 2020-04-30 2021-04-29 Multikriterielles optimieren von anwendungen Pending DE112021002572T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/863,001 2020-04-30
US16/863,001 US11237806B2 (en) 2020-04-30 2020-04-30 Multi objective optimization of applications
PCT/CN2021/091104 WO2021219093A1 (en) 2020-04-30 2021-04-29 Multi objective optimization of applications

Publications (1)

Publication Number Publication Date
DE112021002572T5 true DE112021002572T5 (de) 2023-03-09

Family

ID=78292831

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021002572.4T Pending DE112021002572T5 (de) 2020-04-30 2021-04-29 Multikriterielles optimieren von anwendungen

Country Status (8)

Country Link
US (1) US11237806B2 (de)
JP (1) JP7497947B2 (de)
KR (1) KR20220139419A (de)
CN (1) CN115461724A (de)
AU (1) AU2021264961B2 (de)
DE (1) DE112021002572T5 (de)
GB (1) GB2610512A (de)
WO (1) WO2021219093A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797340B2 (en) * 2020-05-14 2023-10-24 Hewlett Packard Enterprise Development Lp Systems and methods of resource configuration optimization for machine learning workloads
US11321217B1 (en) * 2020-10-06 2022-05-03 Splunk Inc. Generating metrics values at component levels of a monolithic application and of a microservice of a microservices-based architecture
US11496601B2 (en) * 2021-01-13 2022-11-08 Dell Products, L.P. Client driven cloud network access system and method
US20230289629A1 (en) * 2022-03-09 2023-09-14 Ncr Corporation Data-driven predictive recommendations
EP4258151A1 (de) * 2022-04-06 2023-10-11 MediaTek Inc. Sicherheit von immer eingeschalteter künstlicher intelligenz (ai)
CN116338716B (zh) * 2023-02-24 2023-10-20 中国人民解放军国防科技大学 基于方位角拓扑结构的空地无人系统多目标关联方法
CN117313554B (zh) * 2023-11-28 2024-03-29 中国科学技术大学 炼焦生产多工段联合多目标优化方法、系统、设备及介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664622B2 (en) 2006-07-05 2010-02-16 Sun Microsystems, Inc. Using interval techniques to solve a parametric multi-objective optimization problem
CN101855621A (zh) 2007-08-15 2010-10-06 Nxp股份有限公司 处理器操作点的基于简档的最优化
EP2307940A1 (de) 2008-07-23 2011-04-13 Nxp B.V. Einstellung einer prozessorfrequenz
US20130096899A1 (en) * 2010-07-29 2013-04-18 Exxonmobile Upstream Research Company Methods And Systems For Machine - Learning Based Simulation of Flow
US9147164B2 (en) 2013-01-30 2015-09-29 Harris Corporation Sequential multi-layer cognitive network optimization
US9404426B2 (en) 2013-12-31 2016-08-02 General Electric Company Methods and systems for enhancing control of power plant generating units
US20180144277A1 (en) 2015-05-07 2018-05-24 Siemens Corporation Data-feedback loop from product lifecycle into design and manufacturing
CN108604995B (zh) 2016-01-08 2021-06-15 Nec实验室欧洲有限公司 用于操作网络的方法、网络以及在该方法内使用的协调器
US10074066B2 (en) * 2016-01-16 2018-09-11 International Business Machines Corporation Two phase predictive approach for supply network optimization
WO2018213119A1 (en) * 2017-05-17 2018-11-22 SigOpt, Inc. Systems and methods implementing an intelligent optimization platform
US10282237B1 (en) * 2017-10-30 2019-05-07 SigOpt, Inc. Systems and methods for implementing an intelligent application program interface for an intelligent optimization platform
US20190213475A1 (en) * 2018-01-10 2019-07-11 Red Hat, Inc. Reducing machine-learning model complexity while maintaining accuracy to improve processing speed
US11922283B2 (en) * 2018-04-20 2024-03-05 H2O.Ai Inc. Model interpretation
US10673708B2 (en) 2018-10-12 2020-06-02 International Business Machines Corporation Auto tuner for cloud micro services embeddings

Also Published As

Publication number Publication date
KR20220139419A (ko) 2022-10-14
WO2021219093A1 (en) 2021-11-04
CN115461724A (zh) 2022-12-09
JP7497947B2 (ja) 2024-06-11
GB2610512A (en) 2023-03-08
US11237806B2 (en) 2022-02-01
AU2021264961B2 (en) 2023-11-09
AU2021264961A1 (en) 2022-07-28
US20210342132A1 (en) 2021-11-04
JP2023523391A (ja) 2023-06-05
GB202217560D0 (en) 2023-01-11

Similar Documents

Publication Publication Date Title
DE112021002572T5 (de) Multikriterielles optimieren von anwendungen
DE112020003820T5 (de) Erkennung von Anomalien und Abweichungen unter Verwendung eines domänenindizierten Einschränkungs-Repository
DE112020000526T5 (de) System und verfahren zum inkrementellen lernen für eine objekterkennung
DE112018005227T5 (de) Merkmalsextraktion mithilfe von multi-task-lernen
DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
DE112020005095T5 (de) Automatische trennung und extraktion von tabellendaten unter verwendung von maschinellem lernen
DE112012004238T5 (de) Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen
DE112021002820T5 (de) Dynamische automatisierung einer auswahl von pipeline-artefakten
DE112020002110T5 (de) Ressourcenarme entitätsauflösung mit transfer learning
DE112020005323T5 (de) Elastische ausführung von machine-learning-arbeitslasten unter verwendung einer anwendungsbasierten profilierung
DE112021003262T5 (de) Erkennen von quelldatensätzen, die zu einem transferlernverfahren für eine zieldomäne passen
DE112021001566T5 (de) Ermitteln von abhängigkeiten multivariater zeitreihendaten
DE112021003401T5 (de) Schattenexperimente für serverlose multi-tenant-cloud-dienste
DE112020000545T5 (de) Deep-forest-modell-entwicklung und -training
DE112021000338T5 (de) Auslagern der statistikerfassung
DE112021006215T5 (de) Automatisierte Deep-Learning-Architekturauswahl für Zeitreihenvorhersage mit Benutzerinteraktion
DE112021004234T5 (de) Einsetzen von metalernen zum optimieren der automatischen auswahl von pipelinesdes maschinellen lernens
DE112021000627T5 (de) Dynamische erkennung und korrektur von datenqualitätsproblemen
DE112021004380T5 (de) Maschinelles merkmalslernen zur produktformulierung
DE112020005306T5 (de) Implementierung von arbeitslasten in einer multi-cloud-umgebung
DE112020005296T5 (de) Durchsuchen von gesprächsprotokollen eines systems mit virtuellen dialogagenten nach kontrastierenden zeitlichen mustern
DE112021003402T5 (de) Blockchain-verwaltung von bereitstellungsfehlern
DE112021003184T5 (de) Ermittlung von laufzeitumgebungen für software-container
DE112021005210T5 (de) Indexieren von Metadaten zum Verwalten von Informationen
DE112019002680T5 (de) Gerät zur Orchestrierung der verteilten Anwendungsbereitstellung mit End-to-End-Leistungsgarantie

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence