DE112020002189T5 - Container-basierte anwendungen - Google Patents

Container-basierte anwendungen Download PDF

Info

Publication number
DE112020002189T5
DE112020002189T5 DE112020002189.0T DE112020002189T DE112020002189T5 DE 112020002189 T5 DE112020002189 T5 DE 112020002189T5 DE 112020002189 T DE112020002189 T DE 112020002189T DE 112020002189 T5 DE112020002189 T5 DE 112020002189T5
Authority
DE
Germany
Prior art keywords
container
computer
limit
performance data
based application
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.)
Granted
Application number
DE112020002189.0T
Other languages
English (en)
Inventor
Andrew Paul Barnes
Clea Anne Zolotow
Oliver Raff
Christopher Peter Baker
Mihai CRIVETI
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 DE112020002189T5 publication Critical patent/DE112020002189T5/de
Granted legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • 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/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/3442Recording 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 planning or managing the needed capacity
    • 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Es werden ein Verfahren, ein Computerprogrammprodukt und ein System zum Einstellen einer Container-basierten Anwendung bereitgestellt. Ein Prozessor kann einen oder mehrere Funktionsaufrufe bei einer Container-basierten Anwendung empfangen. Der Prozessor kann den einen oder die mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung verarbeiten. Der Prozessor kann Leistungsdaten von der Container-basierten Anwendung erhalten, basierend auf der Verarbeitung des einen oder der mehreren Funktionsaufrufe. Der Prozessor kann die Leistungsdaten gegenüber einer Leistungsmessungsgrenze analysieren. Der Prozessor kann einen Aspekt der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten einstellen. Der Aspekt kann einer oder mehrere sein, die aus der Gruppe ausgewählt werden, die eine Ressource und eine Funktionalität der Container-basierten Anwendung umfasst.

Description

  • HINTERGRUND
  • Die vorliegende Offenlegung bezieht sich auf Container-basierte Anwendungen und insbesondere auf die Einstellung einer Container-basierten Anwendung.
  • Native Cloud-Anwendungen, wie etwa Container-basierte Anwendungen, sind so konzipiert, dass sie wachsen und Systemressourcen auf Grundlage einer Zunahme der Arbeitslast/Nachfrage verbrauchen. Während diese Skalierbarkeit unter vielen Bedingungen wünschenswert ist, ist es nicht wünschenswert, dass der Dienst infolge der Erfüllung von Systembeschränkungen nicht mehr verfügbar ist. Beispielsweise kann eine Anwendung eine Skalierungsgrenze erreichen, bei der es sich um eine harte Grenze (in Bezug auf die Hardwarekapazitäten) oder eine weiche Grenze (in Bezug auf die Ressourcenzuweisung für eine Anwendung) handeln kann, wobei die Hinzufügung zusätzlicher Computerleistung es der Anwendung nicht mehr ermöglicht, weitere eingehende Anforderungen zu verarbeiten. Mit anderen Worten: An diesem Punkt kann die Anwendung nicht mehr skalieren, um die Nachfrage zu befriedigen. In diesem Fall stellen typische Anwendungen alle neuen Anforderungen in eine Warteschlange, um sie zu einem späteren Zeitpunkt zu bearbeiten, wenn eine Verarbeitungsressource verfügbar ist, wodurch die Latenzzeit des Systems zunimmt.
  • KURZDARSTELLUNG
  • Ausführungsformen der vorliegenden Offenlegung stellen ein Verfahren, ein Computerprogrammprodukt und ein System zum Einstellen einer Container-basierten Anwendung bereit. Ein Prozessor kann einen oder mehrere Funktionsaufrufe bei einer Container-basierten Anwendung empfangen. Ein Prozessor kann den einen oder die mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung verarbeiten. Der Prozessor kann auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe Leistungsdaten von der Container-basierten Anwendung erhalten. Der Prozessor kann die Leistungsdaten gegenüber einer Leistungsmessungsgrenze analysieren. Der Prozessor kann einen Aspekt der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten einstellen. Der Aspekt kann einer oder mehrere sein, die aus der Gruppe ausgewählt werden, die eine Ressource und eine Funktionalität der Container-basierten Anwendung umfasst.
  • Figurenliste
  • Die Zeichnungen, die in der vorliegenden Offenlegung enthalten sind, werden in die Spezifikation aufgenommen und sind Teil derselben. Sie veranschaulichen Ausführungsformen der vorliegenden Offenlegung und dienen zusammen mit der Beschreibung zur Erläuterung der Grundsätze der Offenlegung. Die Zeichnungen veranschaulichen lediglich typische Ausführungsformen und schränken die Offenbarung nicht ein.
    • 1 zeigt eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Offenlegung.
    • 2 zeigt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Offenlegung.
    • 3 veranschaulicht ein Flussdiagramm eines beispielhaften Prozesses zur Einstellung Container-basierter Anwendungen gemäß Ausführungsformen der vorliegenden Offenlegung.
    • 4 zeigt eine grafische Darstellung eines Knies der Kurve gemäß Ausführungsformen der vorliegenden Offenlegung.
    • 5 veranschaulicht ein High-Level-Blockdiagramm eines beispielhaften Computers, der gemäß den Ausführungsformen der vorliegenden Offenlegung für die Implementierung eines oder mehrerer der hierin beschriebenen Verfahren, Werkzeuge und Module sowie aller damit verbundenen Funktionen verwendet werden kann.
  • Während die hier beschriebenen Ausführungsformen verschiedene Modifikationen und alternative Formen zulassen, sind ihre Besonderheiten in den Zeichnungen als Beispiel dargestellt und werden im Detail beschrieben. Es sollte jedoch verstanden werden, dass die beschriebenen Ausführungsformen nicht in einem begrenzenden Sinne zu verstehen sind. Im Gegenteil, die Absicht ist, alle Modifikationen, Äquivalente und Alternativen abzudecken, die in den Geist und den Umfang der Offenbarung fallen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es soll verstanden werden, dass die Figuren lediglich schematisch und nicht maßstabsgetreu gezeichnet sind. Es sollte auch verstanden werden, dass in den Figuren die gleichen Bezugszeichen verwendet werden, um die gleichen oder ähnliche Teile anzugeben.
  • Im Zusammenhang mit der vorliegenden Anmeldung, wobei die Ausführungsformen der vorliegenden Offenlegung ein Verfahren darstellen, ist davon auszugehen, dass es sich bei einem solchen Verfahren um einen Prozess zur Ausführung durch einen Computer handelt, d. h. um ein computer-implementierbares Verfahren. Die verschiedenen Schritte des Verfahrens entsprechen daher verschiedenen Teilen eines Computerprogramms, z. B. verschiedenen Teilen eines oder mehrerer Algorithmen.
  • Im Zusammenhang mit der vorliegenden Anmeldung kann ein (Verarbeitungs)System auch eine einzelne Vorrichtung oder eine Sammlung verteilter Vorrichtungen sein, die geeignet sind, eine oder mehrere Ausführungsformen der Verfahren der vorliegenden Offenlegung auszuführen. Ein System kann beispielsweise ein Personal Computer (PC), ein Server oder eine Sammlung von PCs und/oder Servern sein, die über ein Netzwerk wie ein lokales Netzwerk, das Internet usw. verbunden sind, um gemeinsam mindestens eine Ausführungsform der Verfahren der vorliegenden Offenlegung auszuführen.
  • Es soll verstanden werden, dass, obwohl diese Offenbarung eine detaillierte Beschreibung des Cloud-Computing beinhaltet, die Umsetzung der hier dargelegten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr können Ausführungsformen der vorliegenden Offenlegung in Verbindung mit jedem anderen Typ von Computer-Umgebung implementiert werden, der heute bekannt ist oder später entwickelt wird.
  • Cloud Computing ist ein Modell zur Bereitstellung von Diensten, das einen bequemen, bedarfsgerechten Netzzugang zu einem gemeinsamen Vorrat konfigurierbarer Computerressourcen (z. B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Speicher, Anwendungen, virtuelle Maschinen und Dienste) ermöglicht, die mit minimalem Verwaltungsaufwand oder minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Charakteristiken, mindestens drei Service-Modelle und mindestens vier Bereitstellungsmodelle beinhalten.
  • Die Charakteristiken lauten wie folgt:
    • Bedarfsgesteuerte Selbstbedienung: Ein Cloud-Verbaucher kann einseitig Ressourcen für Berechnungen bereitstellen, wie z. B. Serverzeit und Netzwerkspeicher, und zwar automatisch, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
    • Breiter Netzwerkzugriff: Die Ressourcen sind über ein Netzwerk verfügbar und werden über Standardmechanismen abgerufen, die die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z. B. Mobiltelefone, Laptops und PDAs) fördern.
    • Ressourcenbündelung: Die Computer-Ressourcen des Anbieters werden in einem Multi-Tenant-Modell gebündelt, um mehrere Verbraucher zu bedienen, wobei verschiedene physische und virtuelle Ressourcen je nach Bedarf dynamisch zugewiesen und neu zugewiesen werden. Es besteht eine gewisse Standortunabhängigkeit, da der Verbraucher in der Regel keine Kontrolle oder Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, jedoch den Standort auf einer höheren Abstraktionsebene angeben kann (z. B. Land, Staat oder Rechenzentrum).
    • Flexible Anpassungsfähigkeit: Ressourcen können schnell und elastisch bereitgestellt werden, in manchen Fällen auch automatisch, um schnell zu skalieren und schnell wieder freigegeben werden, um schnell zu skalieren. Für den Verbraucher erscheinen die für die Bereitstellung verfügbaren Ressourcen oft unbegrenzt und können in beliebiger Menge und zu jeder Zeit erworben werden.
    • Dienstmessung: Cloud-Systeme kontrollieren und optimieren automatisch die Ressourcennutzung, indem sie eine dem Typ des Dienstes entsprechende Steuereinheit auf einer bestimmten Abstraktionsebene verwenden (z. B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, kontrolliert und gemeldet werden, wodurch Transparenz sowohl für den Anbieter als auch für den Nutzer des genutzten Dienstes bereitgestellt wird.
  • Die Service-Modelle lauten wie folgt:
    • Software as a Service (SaaS): Die dem Verbraucher bereitgestellte Ressource besteht darin, die Anwendungen des Anbieters zu verwenden, die auf einer Cloud-Infrastruktur laufen. Der Zugriff auf die Anwendungen erfolgt von verschiedenen Mandant-Geräten aus über eine Thin-Client-Schnittstelle wie z. B. einen Webbrowser (z. B. webbasierte E-Mail). Der Verbraucher verwaltet oder kontrolliert nicht die zugrunde liegende Cloud-Infrastruktur, einschließlich Netzwerk, Server, Betriebssysteme, Steuereinheiten oder sogar einzelne Anwendungsressourcen, mit der möglichen Ausnahme begrenzter benutzerspezifischer Anwendungskonfigurationseinstellungen.
    • Platform as a Service (PaaS): Die dem Verbraucher bereitgestellte Ressource besteht darin, vom Verbraucher erstellte oder erfasste Anwendungen, die mit vom Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Verbraucher verwaltet oder kontrolliert nicht die zugrunde liegende Cloud-Infrastruktur, die Netzwerke, Server, Betriebssysteme oder Steuereinheiten umfasst, hat aber die Kontrolle über die bereitgestellten Anwendungen und möglicherweise über die Konfigurationen der Hosting-Umgebung der Anwendungen.
    • Infrastructure as a Service (laaS): Die dem Verbraucher bereitgestellte Ressource besteht in der Bereitstellung von Verarbeitungs-, Speicher-, Netzwerk- und anderen grundlegenden Computer-Ressourcen, wobei der Verbraucher in der Lage ist, beliebige Software einzusetzen und auszuführen, die Betriebssysteme und Anwendungen umfassen kann. Der Verbraucher verwaltet oder kontrolliert nicht die zugrunde liegende Cloud-Infrastruktur, sondern hat die Kontrolle über Betriebssysteme, Speicher, bereitgestellte Anwendungen und möglicherweise eine begrenzte Kontrolle über ausgewählte Netzwerkkomponenten (z. B. Host-Firewalls).
  • Die Bereitstellungsmodelle lauten wie folgt:
    • Private Cloud: Die Cloud-Infrastruktur wird für lediglich eine Organisation betrieben. Sie kann von der Organisation selbst oder von einem Dritten verwaltet werden und sich an Ort und Stelle oder an einem anderen Ort befinden.
    • Gemeinschafts-Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezifische Gemeinschaft mit gemeinsamen Anliegen (z. B. Aufgabe, Sicherheitsanforderungen, Richtlinie und Einhaltung von Gesetzen und Richtlinien). Sie kann von den Organisationen selbst oder von einem Dritten verwaltet werden und sich an Ort und Stelle oder an einem anderen Ort befinden.
    • Öffentliche Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Branchengruppe bereitgestellt und ist Eigentum einer Organisation, die Cloud-Dienste verkauft.
    • Hybrid-Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren (privaten, Gemeinschafts- oder öffentlichen) Clouds, die eigenständige Einheiten bleiben, aber durch eine standardisierte oder herstellerspezifische Technologie miteinander verbunden sind, die eine Portierbarkeit von Daten und Anwendungen ermöglicht (z. B. das Cloud-Bursting für den Lastausgleich zwischen Clouds).
  • Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantischer Kompatibilität liegt. Im Mittelpunkt einer Cloud-Datenverarbeitung steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten umfasst.
  • Die veranschaulichenden Ausführungsformen stellen Konzepte zur Einstellung einer Container-basierten Anwendung bereit, insbesondere zur Einstellung einer Ressource oder Funktionalität der Container-basierten Anwendung. Das Konzept kann Folgendes beinhalten: Empfangen eines oder mehrerer Funktionsaufrufe bei der Container-basierten Anwendung; Verarbeiten des einen oder der mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung; Erhalten von Leistungsdaten von der Container-basierten Anwendung auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe; Analysieren der Leistungsdaten gegenüber einer Leistungsmessungsgrenze; und Einstellen einer Ressource und/oder Funktionalität der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten.
  • Ausführungsformen beinhalten ein Konzept zur Einstellung einer Container-basierten Anwendung in Reaktion auf einen Vergleich zwischen den erhaltenen Leistungsdaten und einer vordefinierten Leistungsmessungsgrenze. Die Bewertung der Leistungsmessungsgrenze kann auf Grundlage einer Analyse von Leistungsdaten basieren, die von der Container-basierten Anwendung erhalten werden, wenn ein Funktionsaufruf ausgeführt wird.
  • Ausführungsformen können es einer Container-basierten Anwendung ermöglichen, einen oder mehrere Funktionsaufrufe zu empfangen und eine Funktionalität oder Ressource der Anwendung einzustellen, indem ein Satz von Leistungsdaten analysiert wird, die von der Anwendung bei der Verarbeitung der Funktionsaufrufe erhalten werden. Die Funktionalität oder Ressource kann eingestellt werden, wenn festgestellt wird, dass eine Leistungsmessungsgrenze erreicht ist, oder wenn festgestellt wird, dass eine Leistungsmessungsgrenze innerhalb einer vorbestimmten Zeitperiode erreicht werden wird.
  • Auf diese Weise kann die Offenlegung ein Mittel zur Einstellung einer Container-basierten Anwendung in Reaktion auf einen Vergleich zwischen Leistungsdaten und einer Leistungsmessungsgrenze bereitstellen.
  • Wenn beispielsweise ein Maß für die Leistung der Anwendung einen bestimmten Grenzwert überschreitet, z. B. die Zeit, die zum Ausführen eines Funktionsaufrufs benötigt wird, eine Zeitgrenze überschreitet, kann eine Ressource oder Funktionalität der Anwendung eingestellt werden. Ebenso kann eine Ressource oder Funktionalität der Anwendung eingestellt werden, wenn eine Messung der Leistung der Anwendung angibt, dass die Leistung innerhalb einer bestimmten Zeitperiode eine bestimmte Grenze überschreiten wird. Bei typischen Container-basierten Anwendungen wird jede Einstellung der Anwendungsparameter in der Regel ermittelt, bevor die Anwendung zu laufen beginnt, was bedeutet, dass typische Container-basierte Anwendungen nicht in der Lage sind, ihr Verhalten dynamisch anzupassen, z. B. in Reaktion auf eine unerwartet hohe Verarbeitungslast. In einigen Fällen lässt sich das Problem nicht dadurch lösen, dass einfach mehr Computerleistung für die Verarbeitung der Funktionsaufrufe zugewiesen wird.
  • So kann durch Analyse der Leistung der Anwendung eine Leistungsmessung verwendet werden, um die Funktionalität oder die Ressourcen der Anwendung so einzustellen, dass weitere Funktionsaufrufe ausgeführt werden können, die andernfalls in der Warteschlange stehen und Latenzzeiten verursachen würden.
  • Die Container-basierte Anwendung kann somit dynamisch Leistungsdaten erhalten und analysieren, die sich auf die Verarbeitung empfangener Funktionsaufrufe beziehen, und eine Funktionalität oder Ressource der Container-basierten Anwendung entsprechend anpassen.
  • Ausführungsformen können die Einstellung einer Ressource oder Funktionalität einer Container-basierten Anwendung auf Grundlage der Analyse von Leistungsdaten, die von der Container-basierten Anwendung erhalten wurden, bereitstellen.
  • Container sind Packages, die sich auf eine virtuelle Isolierung stützen, um Anwendungen einzusetzen und auszuführen, die auf einen gemeinsamen Betriebssystemkern zugreifen, ohne dass virtuelle Maschinen erforderlich sind. Eine Container-basierte Anwendung bezieht sich auf jede Softwareanwendung, die auf einem System ausgeführt werden kann, das Container verwendet.
  • In einer Ausführungsform umfasst die Analyse der Leistungsdaten gegenüber der Leistungsmessungsgrenze die Ermittlung, ob die Leistungsmessungsgrenze erreicht wurde, oder die Ermittlung, ob die Leistungsmessungsgrenze innerhalb einer bestimmten Zeitperiode erreicht werden wird. Auf diese Weise kann die Container-basierte Anwendung dynamisch an den aktuellen oder vorhergesagten Bedarf angepasst werden.
  • In einer Ausführungsform umfasst das Analysieren der Leistungsdaten: Ermitteln einer Verarbeitungszeit für die Verarbeitung des einen oder der mehreren Funktionsaufrufe; und Erkennen eines Knies der Kurve auf Grundlage der analysierten Leistungsdaten, wobei das Knie der Kurve erkannt wird, wenn die Verarbeitungszeit einen vorgegebenen Schwellenwert überschreitet. Das Knie der Kurve kann verwendet werden, um eine starke Zunahme in einem Leistungsmaß zu erkennen. In diesem Fall kann das Knie der Kurve verwendet werden, um eine starke Zunahme der für den Prozess eines Funktionsaufrufs benötigten Zeit zu erkennen (z. B. eine starke Zunahme der Latenzzeit).
  • Das Knie der Kurve kann anhand eines Merkmals innerhalb der Leistungsdaten erkannt werden, z. B. innerhalb der Leistungsdaten, die als Diagramm mit zwei Variablen dargestellt werden, wie die Anzahl der Funktionsaufrufe und die Zeitablaufzeit für jeden Funktionsaufruf. Das Knie der Kurve kann als jede Veränderung erkannt werden, z. B. der Punkt, an dem eine Zunahme oder Abnahme einer bestimmten Variablen auftritt.
  • So kann zum Beispiel die Zeit für die Verarbeitung eines Funktionsaufrufs zunehmen, wenn eine bestimmte Anzahl von Funktionsaufrufen empfangen wird. Der Punkt in dieser Beziehung, an dem die Zunahme auftritt, kann als ein Knie der Kurve erkannt werden. In einem speziellen Beispiel kann der Punkt, an dem die Zunahme auftritt, nur dann als ein Knie der Kurve erkannt werden, wenn festgestellt wird, dass es sich bei der Zunahme um eine exponentielle Zunahme handelt. Das Gleiche gilt für Abnahmen einer bestimmten Variablen der Leistungsdaten. Mit anderen Worten, das Knie der Kurve kann durch ein Knie-der-Kurve-Merkmal erkannt werden, das eine Änderung in einer Variablen der Leistungsdaten angibt. Auf diese Weise kann das Knie der Kurve auf Grundlage einer Änderung in einer Beziehung zwischen Variablen der Leistungsdaten erkannt werden.
  • In einer Ausführungsform umfasst die Leistungsmessungsgrenze eines oder mehrere der folgenden Merkmale: eine Skalierbarkeitsgrenze, wobei die Skalierbarkeitsgrenze eines oder mehrere der folgenden Merkmale umfasst: eine Grenze für physische Ressourcen; eine Grenze für virtuelle Ressourcen; eine Grenze für Container-Ressourcen; und eine vordefinierte Skalierungsgrenze; eine Kostengrenze; einen Rückmeldungsgrenzwert; eine CPU-Auslastung pro Ausführung; eine CPU-Auslastung für einen Container; eine Speicherauslastung; einen Netzwerkdurchsatz; eine Netzwerklatenz; einen Speicherdurchsatz; eine Speicherlatenz; eine Anfragereaktionszeit; eine Anzahl von Transaktionen pro Sekunde (oder eine andere vereinbarte Zeitperiode); und eine Ausfallrate. Auf diese Weise kann eine Vielzahl von Leistungsmessungsgrenzen je nach Implementierung der Container-basierten Anwendung verwendet werden.
  • In einer Ausführungsform umfasst die Ressource eines oder mehrere der folgenden Elemente: eine Computer-Ressource und eine Ausführungsarchitektur-Ressource. Auf diese Weise kann die eingestellte Ressource eine für das jeweilige Szenario geeignete Form annehmen.
  • In einer Ausführungsform umfasst die Ausführungsarchitektur eines oder mehrere der folgenden Elemente: eine Software-as-a-Service-Architektur; und eine Function-as-a-Service-Architektur. Auf diese Weise kann die Anwendung leicht verfügbare Ausführungsarchitekturen nutzen.
  • In einer Ausführungsform umfasst die Funktionalität eine Front-End-Funktionalität, wobei die Front-End-Funktionalität eines oder mehrere der folgenden Elemente umfasst: eine Menge von angezeigten Daten; eine Anzahl von zulässigen komplexen Transaktionen; und eine Anzahl von verfügbaren Anwendungsoptionen. Auf diese Weise kann die Front-End-Funktionalität auf verschiedene Weise entsprechend der Implementierung der Anwendung eingestellt werden.
  • In einer Ausführungsform umfasst die Funktionalität eine Back-End-Funktionalität, wobei die Back-End-Funktionalität eines oder mehrere der folgenden Elemente umfasst: eine Anzahl von synthetischen Transaktionen; eine Menge von Logging; eine Anzahl von synchronen Transaktionen; und eine Anzahl von asynchronen Transaktionen. Auf diese Weise kann die Backend-Funktionalität auf verschiedene Weise entsprechend der Implementierung der Anwendung eingestellt werden.
  • In einer Ausführungsform umfasst die Einstellung der Funktionalität der Container-basierten Anwendung das Ausführen einer Back-End-Funktion unter Verwendung einer Front-End-Funktionalität. Auf diese Weise kann die Back-End-Funktionalität für eine Zunahme der Back-End-Leistung beibehalten werden.
  • Es können auch Änderungen und zusätzliche Schritte für eine herkömmliche Container-basierte Anwendung vorgeschlagen werden, die den Wert und Nutzen der vorgeschlagenen Konzepte erhöhen können.
  • Die veranschaulichten Ausführungsformen können in vielen verschiedenen Typen von Datenverarbeitungsumgebungen genutzt werden. Um einen Kontext für die Beschreibung von Elementen und Funktionen der veranschaulichenden Ausführungsformen bereitzustellen, werden 1 und 2 im Folgenden als Beispielumgebungen dargestellt, in denen Aspekte der veranschaulichenden Ausführungsformen implementiert werden können. Es sollte gewürdigt werden, dass 1 und 2 nur Beispiele sind und nicht dazu dienen, irgendeine Einschränkung in Bezug auf die Umgebungen, in denen Aspekte oder Ausführungsformen der vorliegenden Offenlegung implementiert werden können, zu behaupten oder zu implizieren. Es können zahlreiche Änderungen an den gezeigten Umgebungen vorgenommen werden, ohne dass der Geist und der Umfang der vorliegenden Offenlegung beeinträchtigt werden.
  • In 1 ist eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie dargestellt, beinhaltet die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen lokale Rechengeräte, die von Verbrauchern in der Cloud verwendet werden, wie z. B. PDAs (Personal Digital Assistant) oder Mobiltelefone 54A, Desktop-Computer 54B, Laptops 54C und/oder Computersysteme für Kraftfahrzeuge 54N, kommunizieren können. Die Knoten 10 können miteinander kommunizieren. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein (nicht dargestellt), wie z. B. in privaten, Community-, öffentlichen oder hybriden Clouds, wie oben beschrieben, oder einer Kombination davon. Auf diese Weise kann die Cloud-Computing-Umgebung 50 Infrastruktur, Plattformen und/oder Software als Services anbieten, für die ein Verbraucher in der Cloud keine Ressourcen auf einem lokalen Rechengerät beibehalten muss. Es wird verstanden, dass die in 1 dargestellten Typen von Rechengeräten 54A-N nur zur Veranschaulichung dienen und dass die Rechenknoten 10 und die Cloud-Computing-Umgebung 50 mit jedem Typ von Computer-Gerät über jede Art von Netzwerk und/oder netzwerkadressierbare Verbindung (z. B. unter Verwendung eines Webbrowsers) kommunizieren können.
  • Unter Bezugnahme auf 2 wird nun eine Reihe von funktionalen Abstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung 50 (1) bereitgestellt werden. Es sollte im Voraus verstanden werden, dass die in 2 dargestellten Komponenten, Schichten und Funktionen nur zur Veranschaulichung dienen und die Ausführungsformen der Offenlegung nicht darauf beschränkt sind. Wie gezeigt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Die Hardware- und Software-Schicht 60 umfasst Hardware- und SoftwareKomponenten. Beispiele für Hardware-Komponenten beinhalten: Großrechner 61; Server auf der Grundlage der RISC-Architektur (Reduced Instruction Set Computer) 62; Server 63; Blade-Server 64; Speichergeräte 65 sowie Netzwerke und Netzwerkkomponenten 66. In einigen Ausführungsformen beinhalten die Softwarekomponenten Netzwerk-Anwendungsserversoftware 67 und Datenbanksoftware 68.
  • Die Virtualisierungsschicht 70 beinhaltet eine Abstraktionsschicht, auf der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71, virtuelle Speicher 72, virtuelle Netzwerke 73, einschließlich virtueller privater Netzwerke, virtuelle Anwendungen und Betriebssysteme 74 und virtuelle Mandanten 75.
  • In einem Beispiel kann die Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung 81 stellt die dynamische Beschaffung von Computer-Ressourcen und anderen Ressourcen bereit, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung genutzt werden. Metering und Pricing 82 stellen die Kostenverfolgung bei der Nutzung von Ressourcen in der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware beinhalten. Sicherheit stellt die Identitätsprüfung für Verbraucher und Aufgaben in der Cloud sowie den Schutz von Daten und anderen Ressourcen bereit. Das Benutzerportal 83 stellt den Zugang zur Cloud-Computing-Umgebung für Verbraucher und Systemadministratoren bereit. Das Service-Level-Management 84 stellt die Zuweisung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die erforderlichen Service-Levels eingehalten werden. Die Planung und Erfüllung von Service Level Agreements (SLA) 85 stellt die Anordnung und Beschaffung von Cloud-Computing-Ressourcen bereit, für die ein zukünftiger Bedarf gemäß einem SLA erwartet wird.
  • Die Schicht 90 „Arbeitslasten“ stellt Beispiele für Funktionen bereit, für die die Cloud-Computing-Umgebung genutzt werden kann. Beispiele für Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, umfassen: Mapping und Navigation 91; Softwareentwicklung und Lebenszyklusmanagement 92; Bereitstellung von Unterricht in virtuellen Klassenzimmern 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und jede andere geeignete Funktion 96.
  • In einer Ausführungsform kann ein Verfahren zur Verwaltung einer Container-basierten Anwendung in der Verwaltungsschicht 80 implementiert werden.
  • In 3 ist ein Flussdiagramm eines beispielhaften Prozesses 300 zur Einstellung Container-basierter Anwendungen gemäß den Ausführungsformen der vorliegenden Offenlegung dargestellt. Der Prozess 300 beginnt in Schritt 310, wobei ein oder mehrere Funktionsaufrufe bei der Container-basierten Anwendung empfangen werden.
  • In Schritt 320 werden die empfangenen ein oder mehreren Funktionsaufrufe von der Container-basierten Anwendung verarbeitet. Die Container-basierte Anwendung kann beispielsweise in einer Cloud-basierten Umgebung eingesetzt werden, wie der Cloud-Computing-Umgebung 50, die in 1 und 2 im Detail beschrieben ist.
  • In der Regel sind Anwendungen, die in Containern bereitgestellt werden, so konzipiert, dass sie auf die vordefinierten Ressourcen der jeweiligen Umgebung skalierbar sind. Diese Ressourcen können physisch, virtuell oder künstlich sein. Sobald diese Ressourcen erschöpft sind, werden zusätzliche Funktionsaufrufe zur Verarbeitung in eine Warteschlange gestellt, was zur Verzögerung der Anwendung beiträgt.
  • In Schritt 330 erhält man Leistungsdaten von der Container-basierten Anwendung auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe.
  • Die Container einer Container-basierten Anwendung werden in der Regel verwaltet, indem sie auf Worker-Knoten platziert werden, deren Kombination als Pod bezeichnet werden kann, und zur Verwaltung dieser Pods wird eine Verwaltungssoftware eingesetzt. In der Regel wird die Verwaltungssoftware kein Tracing, Logging oder Metriken in Bezug auf die Pods bereitstellen. Es gibt jedoch verschiedene Tools, die diese Funktion ausführen, oft als Service Mesh bezeichnet, die in jedem Pod ein Side-Car einsetzen. Ein solches Tool kann eingesetzt werden, um die Leistungsdaten von jedem Container zu erhalten. Es ist zu beachten, dass es sich dabei um eine serverlose Überwachung handelt, soweit der Container für die meisten Funktionen betroffen ist.
  • Die Leistungsdaten können beispielsweise aus dem Linux®-Adressraum erhalten werden, auf dem die Container-basierte Anwendung läuft. Linux ist ein eingetragenes Warenzeichen von Linus Torvalds in den Vereinigten Staaten, anderen Ländern oder beidem.
  • In Schritt 340 werden die Leistungsdaten anhand einer Leistungsmessungsgrenze analysiert.
  • Die Analyse der Leistungsdaten kann das Ermitteln einer Verarbeitungszeit für die Verarbeitung des einen oder der mehreren Funktionsaufrufe und das Erkennen eines Knies der Kurve auf Grundlage der analysierten Leistungsdaten beinhalten, wobei das Knie der Kurve erkannt wird, wenn die Verarbeitungszeit einen vorgegebenen Schwellenwert überschreitet.
  • Durch die Analyse der Leistungsdaten ist es möglich, zu erkennen, wann die Container-basierte Anwendung beispielsweise auf ein maximales Hardware-Potenzial skaliert hat. Dies kann zum Beispiel durch Ausnutzung des Knies der Kurve der Leistungsdaten ausgeführt werden. Diese Technik wird weiter unten unter Bezugnahme auf 4 näher erläutert.
  • Zusätzlich zur Hinzufügung des Hardwarepotenzials als Leistungsmessungsgrenze kann auch ermittelt werden, wann eine maximale Kostengrenze erreicht ist, wobei sich die Kosten auf die finanziellen Kosten für den Betrieb der Container-basierten Anwendung in einer bestimmten Verarbeitungsumgebung beziehen. In diesem Fall kann es sich bei der Ressource um eine Ausführungsarchitektur-Ressource handeln, die so eingestellt werden kann, dass eine alternative Umgebung genutzt wird (z. B. Einstellung von einer Software-asa-Service-Architektur (SAAS) auf eine Function-as-a-Service-Architektur (FAAS)).
  • In Ausführungsformen kann der Prozess 300 zu Schritt 350 übergehen, wobei auf Grundlage der Analyse der Leistungsdaten ermittelt wird, ob die Leistungsmessungsgrenze erreicht wurde. Die Leistungsmessungsgrenze kann eine beliebige messbare Grenze sein, die eine Änderung der Leistung der Container-basierten Anwendung angibt.
  • Bei der Leistungsmessungsgrenze kann es sich beispielsweise um eine Skalierbarkeitsgrenze handeln, d. h. um eine Leistungsmessungsgrenze, die sich auf die herkömmliche Fähigkeit einer solchen Anwendung zur Skalierung bezieht, um Zunahmen der Verarbeitungsanforderungen gerecht zu werden. Wenn eine Skalierbarkeitsgrenze erreicht ist, kann die Container-basierte Anwendung nicht mehr skaliert werden, um die Arbeitslast zu bewältigen.
  • Ein Beispiel für eine Skalierbarkeitsgrenze kann eine physische Grenze für Ressourcen sein. Eine physische Grenze kann sich auf die physischen Grenzen der zugrundeliegenden physischen Infrastruktur des Systems beziehen, das die Container-basierte Anwendung ausführt, zum Beispiel die physischen Grenzen eines Servers, der eine Cloud-Umgebung hostet. Eine physische Grenze kann sich beispielsweise auf die CPU der zugrunde liegenden Architektur, den Speicher der zugrunde liegenden Architektur, die Festplatte der zugrunde liegenden Architektur, das Netzwerk der zugrunde liegenden Architektur und dergleichen beziehen.
  • Ein weiteres Beispiel für eine Skalierbarkeitsgrenze kann eine virtuelle Ressourcengrenze sein, wobei sich eine virtuelle Ressourcengrenze beispielsweise auf eine Grenze einer virtuellen Maschine (VM) beziehen kann, auf der die Container-basierte Anwendung oder irgendein Aspekt der Container-basierten Anwendung laufen kann. Eine virtuelle Grenze kann sich zum Beispiel auf die CPU-Zuweisung der VM, den zugewiesenen Speicher der VM, die Festplattenzuweisung der VM, das Netzwerk der VM und dergleichen beziehen.
  • Ein weiteres Beispiel für eine Skalierbarkeitsgrenze kann eine Container-Ressourcengrenze sein, die den oben unter Bezugnahme auf die virtuellen Ressourcengrenzen beschriebenen Grenzen ähnlich sein kann. Eine Container-Ressourcengrenze bezieht sich auf eine Begrenzung eines einzelnen Containers, die sich beispielsweise auf die CPU-Zuweisung des Containers, den zugewiesenen Speicher des Containers, die Festplattenzuweisung des Containers, das Netzwerk des Containers und dergleichen beziehen kann.
  • Ein weiteres Beispiel für eine Skalierbarkeitsgrenze kann eine vordefinierte Skalierungsgrenze sein, wobei eine vordefinierte Skalierungsgrenze eine Begrenzung sein kann, die sich auf ein gewünschtes Niveau des Ressourcenverbrauchs durch die Container-basierte Anwendung bezieht, und nicht eine Grenze, die durch eine maximale (virtuelle oder andere) Hardwarekapazität definiert ist. Eine solche vordefinierte Skalierungsgrenze kann dazu dienen, die Menge an Ressourcen zu begrenzen, die eine Anwendung verbrauchen kann, um beispielsweise unerwartete Kosten zu vermeiden.
  • Wie weiter unten unter Bezugnahme auf 4 beschrieben, kann die Skalierbarkeitsgrenze durch Ermitteln eines Knies der Kurve aus den Leistungsdaten, die von der Container-basierten Anwendung erhalten wurden, bewertet werden.
  • Ein weiteres Beispiel für eine Leistungsmessungsgrenze kann, wie oben erwähnt, eine Kostengrenze sein. Zum Beispiel können die Kosten mit der Menge an Ressourcen eines Verarbeitungssystems verknüpft sein, die für die Verarbeitung der empfangenen Funktionsaufrufe verbraucht werden. Wenn diese Kosten einen bestimmten Betrag überschreiten, kann eine Funktionalität oder Ressource der Container-basierten Anwendung eingestellt werden, um die Kosten für den Betrieb der Anwendung auf einem bestimmten Betrag zu beibehalten.
  • Ein weiteres Beispiel für eine Leistungsmessungsgrenze kann ein Rückmeldungsgrenzwert sein, die sich auf die Zeitspanne bezieht, die zum Ausführen eines bestimmten Funktionsaufrufs benötigt wird. Wenn beispielsweise die Verarbeitungszeit für einen Funktionsaufruf einen bestimmten Wert überschreitet, z. B. weil die Anwendung nicht mehr auf neue Funktionsaufrufe reagiert, kann eine Ressource oder Funktionalität eingestellt werden, um die Reaktionsfähigkeit der Container-basierten Anwendung zu verbessern.
  • Der Rückmeldungsgrenzwert kann beispielsweise dadurch erreicht werden, dass auch eine Skalierbarkeitsgrenze erreicht wird. Mit anderen Worten: Wenn eine Skalierbarkeitsgrenze erreicht ist, kann die Anwendung nicht mehr skalieren, um den Verarbeitungsbedarf zu decken, so dass zusätzliche Funktionsaufrufe in die Warteschlange gestellt werden, wodurch die Rückmeldungsfähigkeit der Anwendung verringert wird. Alternativ dazu kann es vorkommen, dass ein automatischer Skalierungs-/Bereitstellungsprozess nicht in der Lage ist, zusätzliche Container bereitzustellen, um auf die Zunahme der Arbeitslast zu reagieren, was dazu führt, dass der Rückmeldungsgrenzwert vor dem Erreichen der Skalierbarkeitsgrenze erreicht wird.
  • Eine Leistungsmessungsgrenze kann sich auch auf die Gesamtnutzung der zugrundeliegenden physischen Computer-Ressourcen und/oder der Ressourcen virtueller Maschinen beziehen, auf denen der/die Container selbst laufen (d. h. Daten, die normalerweise nicht für den Container zugänglich sind). Auch wenn der Container die spezifischen Details der externen Ressourcen oder der Ressourcennutzung als Teil der Leistungsdaten nicht sieht, kann der Container erkennen, dass er die ankommende Arbeitslast nicht bewältigen kann (z. B. weil die Ressourcen erschöpft sind oder eine Leistungsmessungsgrenze erreicht wurde).
  • Jeder der oben beschriebenen Grenzwerte und jeder andere Grenzwert, der zur Überwachung der Leistung einer Anwendung geeignet ist, kann durch die Analyse und Auswertung von Leistungsdaten überwacht werden, um die von einem Anwendungsdienst bereitgestellten Ressourcen und/oder Funktionen automatisch einzustellen, um die Verfügbarkeit zu maximieren und beispielsweise die Anzahl der gleichzeitigen Anforderungen, die innerhalb eines dynamischen, aber begrenzten Pools von Verarbeitungskapazität, von Kostenfaktoren und Knie-der-Kurve-Beschränkungen verarbeitet werden können, zu erhöhen.
  • Ferner können die oben beschriebenen Grenzen in beliebiger Kombination miteinander verwendet werden, um eine Einstellung der Ressourcen/Funktionalität der Container-basierten Anwendung vorzunehmen.
  • In Ausführungsformen kann die Analyse und Bewertung der Leistungsdaten mit Hilfe einer kognitiven Maschine ausgeführt werden. Die kognitive Maschine kann bekannte Merkmale der breiteren Computerplattform berücksichtigen. Solche Details sind normalerweise für einen Container nicht sichtbar und können Ressourcen wie die Auslastung des physischen Hosts, die Arbeitslast anderer Container oder anderer virtueller Maschinen beinhalten.
  • Ferner kann die kognitive Engine Merkmale zur Optimierung der Arbeitslast des Containers berücksichtigen, um vorherzusagen, ob eine Leistungsmessungsgrenze aufgrund historischer Merkmale der Arbeitslast erreicht werden könnte oder bereits erreicht wurde. So kann beispielsweise bekannt sein, dass sich der Ressourcenbedarf einer Anwendung am zweiten Sonntag eines jeden Monats zwischen 2 und 7 Uhr morgens verdoppelt.
  • Die kognitive Engine kann dann die Nutzung des betreffenden Containers vorhersagen. Wenn ein Mandant zum Beispiel nur N Ressourcen für einen Monat erworben hat und die Anwendung mit allen aktivierten Funktionen nur bis zum 23. des Monats laufen würde, anstatt dass der Dienst bei Erschöpfung der Ressourcenzuweisung vollständig nicht verfügbar ist, kann die kognitive Engine die voraussichtliche Verfügbarkeit untersuchen, wenn die Funktionalität der Anwendung reduziert würde. In einem konkreten Beispiel kann die kognitive Engine ermitteln, ob eine Bankanwendung bis zum Monatsende durchhalten könnte (z. B. durch Verlängerung der Ressourcen um eine weitere Woche), wenn die Darstellung der aktiven Salden nicht mehr automatisch erfolgt, sondern eine Eingabe des Benutzers erfordert.
  • Für die Ermittlung der Einstellung der Ressourcen/Funktionalität einer Anwendung, wie Skalierung und Leistung, können verschiedene Regeln auf die Leistungsdaten angewendet werden. Die Ergebnisse der Ermittlungen und deren Auswirkungen auf die Verfügbarkeit und Leistung der Anwendung können in einer Datenbank gespeichert werden.
  • Wenn in Schritt 350 ermittelt wird, dass die Leistungsmessungsgrenze erreicht wurde, geht der Prozess 300 zu Schritt 360 über. In Schritt 360 wird eine Ressource oder Funktionalität der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten eingestellt.
  • Die eingestellte Ressource kann eine Computer-Ressource beinhalten, die von der Container-basierten Anwendung verwendet wird. Eine Computer-Ressource kann zum Beispiel eine CPU-Nutzung, eine Speicher-Nutzung, eine Festplatten-Nutzung, eine Netzwerk-Nutzung und dergleichen beinhalten.
  • Die eingestellte Ressource kann auch eine Ausführungsarchitektur-Ressource beinhalten, wobei die Ausführungsarchitektur-Ressource eine Software-as-a-Service-Architektur und/oder eine Function-as-a-Service-Architektur umfassen kann.
  • Cloud-basierte Anwendungen, wie die Container-basierte Anwendung, sind von Natur aus unabhängig von der zugrundeliegenden Ausführungsarchitektur und den Systemressourcen (obwohl sie, wie jede Anwendung, auf Hardware laufen). Daher können diese Faktoren verwendet werden, um eine dynamische Einstellung der Container-basierten Anwendung und die Migration von SAAS zu FAAS auszuführen.
  • Die eingestellte Funktionalität kann eine Front-End-Funktionalität beinhalten, wobei die Front-End-Funktionalität Folgendes beinhalten kann: eine Menge von angezeigten Daten; eine Anzahl von zulässigen komplexen Transaktionen; und eine Anzahl von verfügbaren Anwendungsoptionen.
  • Mit anderen Worten: Auf Grundlage der Ermittlung, dass eine Leistungsmessungsgrenze erreicht wurde und dass eine Funktionalität der Container-basierten Anwendung reduziert/entfernt werden muss, um den Dienst zu erhalten und den Durchsatz (Verarbeitung der empfangenen Funktionsaufrufe) zu maximieren, können verschiedene Funktionalitäten innerhalb der Anwendungslogik angepasst werden.
  • Zum Beispiel können vorgeladene Daten durch eine Option ersetzt werden, mit der der Nutzer die Daten bei Bedarf ausdrücklich anfordern kann, wodurch die Menge der dem Nutzer angezeigten unnötigen Daten verringert wird. Ferner kann die Gesamtmenge der dem Nutzer angezeigten Daten begrenzt (und/oder vorgeladen) werden, indem beispielsweise Inhalte wie Videos und/oder die Bildqualität reduziert werden. Außerdem können komplexe Transaktionen, die normalerweise von der Anwendung ausgeführt werden, entfernt werden. In einem weiteren Beispiel können Optionen aus Menüs entfernt werden, die dem Benutzer normalerweise zur Verfügung stehen, insbesondere Optionen, die zum Ausführen komplexer Transaktionen führen können.
  • Die Funktionalität kann auch eine Back-End-Funktionalität umfassen, wobei die Back-End-Funktionalität Folgendes beinhalten kann: eine Anzahl synthetischer Transaktionen; eine Menge von Logging; eine Anzahl von synchronen Transaktionen; und eine Anzahl von asynchronen Transaktionen.
  • Auf diese Weise kann die Back-End-Service-Funktionalität, die Funktionen umfasst, die dem Endbenutzer nicht direkt zugänglich sind, als Ergebnis der Ermittlung des Erreichens der Leistungsmessungsgrenze eingestellt werden. Zum Beispiel kann die Container-basierte Anwendung von synchronen auf asynchrone Transaktionen umschalten, indem sie Transaktionen für die Batch-Verarbeitung zu einem späteren Zeitpunkt in eine Warteschlange stellt.
  • Ferner kann die Einstellung der Funktionalität der Container-basierten Anwendung das Ausführen einer Back-End-Funktion unter Verwendung einer Front-End-Funktionalität beinhalten.
  • Zum Beispiel können Back-End-Dienste auf die Front-End-Dienste „Call Forward ‟ anwenden, um die Funktionalität automatisch zu reduzieren und somit die Ressourcen für die Back-End-Verarbeitung zu erhalten. Zum Beispiel können über Nacht langlaufende Batch-Verarbeitungsvorgänge eine voraussichtliche Verzögerung der Funktionalität des Front-End-Dienstes über FAAS auslösen, um die Belastung durch die Online-(Echtzeit-)Verarbeitung zu verringern.
  • Nach Schritt 360 kann der Prozess 300 zu Schritt 310 zurückkehren und der Prozess 300 kann wie oben beschrieben fortgesetzt werden. Wenn in Schritt 350 festgestellt wird, dass die Leistungsmessungsgrenze nicht erreicht wurde, kann der Prozess 300 zu Schritt 355 übergehen, wobei auf Grundlage der Analyse der Leistungsdaten ermittelt wird, ob die Leistungsmessungsgrenze innerhalb eines bestimmten Zeitablaufs erreicht werden wird. WIRD EINE ZUKÜNFTIGE LEISTUNGSMESSUNGSGRENZE ERREICHT WERDEN?
  • Mit anderen Worten, die Analyse der Leistungsdaten kann angeben, dass die Leistungsmessungsgrenze von der Anwendung innerhalb einer bestimmten Zeitperiode erreicht werden wird. Wenn ermittelt wird, dass die Leistungsmessungsgrenze innerhalb einer vorgegebenen Zeitspanne erreicht wird, kann der Prozess 300 zu Schritt 360 übergehen, wobei eine Ressource und/oder eine Funktionalität angepasst werden kann, um die vorhergesagte Leistung der Anwendung zu berücksichtigen. Es ist zu beachten, dass die oben beschriebenen Verfahren zur Analyse der Leistungsdaten und der verschiedenen Leistungsmessungsgrenzen auch für die Ermittlung gelten können, ob eine Leistungsmessungsgrenze innerhalb einer bestimmten Zeitperiode erreicht wird.
  • Wenn in Schritt 355 ermittelt wird, dass die Leistungsmessungsgrenze nicht innerhalb einer bestimmten Zeitperiode erreicht wird, kann der Prozess 300 zu Schritt 310 zurückkehren und wie oben beschrieben fortfahren.
  • Zusammenfassend lässt sich sagen, dass die vorliegende Offenlegung die Leistung einer Anwendung analysieren und bewerten und eine dynamische Einstellung der Ressourcen/Funktionalität bereitstellen kann, um die Verfügbarkeit und die Anzahl gleichzeitiger Anforderungen, die verarbeitet werden können, zu maximieren. Anders ausgedrückt: Die vorliegende Offenlegung kann Services bereitstellen, die die Funktionalität einschränken, um die verfügbaren Ressourcen zu erhöhen und so Hardwareprobleme zu umgehen, die für die Verarbeitung neuer oder künftiger eingehender Anforderungen von Endbenutzern verwendet werden können.
  • 4 zeigt eine grafische Darstellung 400 des Knies der Kurve gemäß den Ausführungsformen der vorliegenden Offenlegung. Das Diagramm 400 zeigt eine Kurve 410, die durch die Funktion x-y=sin(x+y) beschrieben wird, wobei x>0 ist, um das Prinzip des Knies der Kurve zu demonstrieren.
  • In diesem Beispiel kann die x-Achse die Anzahl der von der Container-basierten Anwendung empfangenen Funktionsaufrufe und die y-Achse die für den Prozess eines Funktionsaufrufs benötigte Zeit darstellen. Im Allgemeinen kann die x-Achse die Anforderung an die Anwendung und die y-Achse ein Leistungsmaß darstellen.
  • Das Knie der Kurve 420 ist definiert als der Bereich der Kurve, wobei eine exponentielle Änderung auftritt. Im vorliegenden Beispiel ist das Knie der Kurve eine exponentielle Zunahme der Zeit, die für den Prozess eines Funktionsaufrufs benötigt wird. Im Allgemeinen kann das Knie der Kurve als der Punkt verstanden werden, wobei eine Leistungsmessungsgrenze, wie z. B. eine Skalierbarkeitsgrenze, der Anwendung erreicht wird.
  • Mathematisch lässt sich das Knie der Kurve mit Hilfe von Diagramm 430 beschreiben.
  • Orthogonale Vektoren N und T sind für einen ersten Punkt 440 auf der Kurve und einen zweiten Punkt 450 auf der Kurve dargestellt. Die Vektoren am zweiten Punkt 450 werden übersetzt und dem ersten Punkt 440 (punktiert dargestellt) überlagert. Die Änderung des Vektors T zwischen dem ersten Punkt und dem zweiten Punkt, δT, wird angezeigt.
  • Zur Berechnung des Knies der Kurve in den Leistungsdaten kann δT zwischen drei Punkten verglichen werden, um den Beginn einer exponentiellen CPU-Zeit zu erkennen, die in der Regel mit einem Rückgang der Transaktionsabschlüsse oder sogar Timeouts einhergeht. Zu diesem Zeitpunkt kann eine Ressource oder Funktionalität der Container-basierten Anwendung eingestellt werden, indem beispielsweise Container außer Betrieb genommen und auf eine FAAS-Architektur migriert werden. Umgekehrt kann ein flacher δT die Anwendung ermutigen, mehr Container einzusetzen, bis der optimale (schwankende) Punkt festgestellt und ausgeführt ist.
  • Es ist zu beachten, dass in der obigen Mathematik davon ausgegangen wird, dass sich das Legacy-System als Ganzes, wie ein serieller Engpass, verhält. Der Punkt, an dem δT als Spitzenwert ermittelt wird, ist in der Regel ein exponentieller Anstieg und mit einem Knie der Kurve verknüpft.
  • Durch die Berechnung eines Knies der Kurve auf Grundlage der erhaltenen Leistungsdaten kann die künftige Leistung der Anwendung ermittelt werden, wodurch ein Mittel zur Vorhersage bereitgestellt wird, wann eine Leistungsmessungsgrenze innerhalb einer bestimmten Zeitperiode erreicht werden kann.
  • Bezugnehmend auf 5 ist ein Blockdiagramm auf hoher Ebene eines Beispielcomputers 500 dargestellt, der bei der Implementierung eines oder mehrerer der hierin beschriebenen Verfahren, Werkzeuge und Module sowie aller damit verbundenen Funktionen gemäß den Ausführungsformen der vorliegenden Offenlegung verwendet werden kann. Verschiedene oben beschriebene Vorgänge können die Ressourcen des Computers 500 nutzen. Beispielsweise können ein oder mehrere Teile eines Systems zum Erzeugen von textuellen Rückmeldedaten durch Analyse des Rückmeldetextes in ein beliebiges Element, Modul, eine beliebige Anwendung und/oder eine beliebige Komponente integriert werden, die hierin beschrieben werden.
  • Der Computer 500 beinhaltet, ist aber nicht beschränkt auf PCs, Workstations, Laptops, PDAs, Handheld-Vorrichtungen, Server, Speicher und dergleichen. Im Allgemeinen kann der Computer 500 unter dem Begriff der Hardware-Architektur einen oder mehrere Prozessoren 510, einen Speicher 520 und eine oder mehrere E/A-Einheiten 570 beinhalten, die über eine lokale Schnittstelle (nicht gezeigt) kommunikativ gekoppelt sind. Bei der lokalen Schnittstelle kann es sich beispielsweise, aber nicht ausschließlich, um einen oder mehrere Busse oder andere verdrahtete oder drahtlose Verbindungen handeln, wie sie in der Technik bekannt sind. Die lokale Schnittstelle kann zusätzliche Elemente wie Steuereinheiten, Puffer (Caches), Treiber, Repeater und Empfänger aufweisen, um die Kommunikation zu aktivieren. Ferner kann die lokale Schnittstelle Adress-, Steuer- und/oder Datenverbindungen beinhalten, um eine geeignete Kommunikation zwischen den oben genannten Komponenten zu aktivieren.
  • Der Prozessor 510 ist eine Hardware-Einheit zum Ausführen von Software, die im Speicher 520 gespeichert werden kann. Der Prozessor 510 kann praktisch ein beliebiger kundenspezifischer oder handelsüblicher Prozessor sein, eine Zentralverarbeitungseinheit (CPU), ein digitaler Signalprozessor (DSP) oder ein Hilfsprozessor unter mehreren mit dem Computer 500 verknüpften Prozessoren, und der Prozessor 510 kann ein Mikroprozessor auf Halbleiterbasis (in Form eines Mikrochips) oder ein Mikroprozessor sein.
  • Der Speicher 520 kann eine beliebige Kombination von flüchtigen Speicherelementen (z. B. Direktzugriffsspeicher (RAM), wie dynamischer Direktzugriffsspeicher (DRAM), statischer Direktzugriffsspeicher (SRAM) usw.) und nichtflüchtigen Speicherelementen (z. B, ROM, löschbarer programmierbarer Nur-Lese-Speicher (EPROM), elektronisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), programmierbarer Nur-Lese-Speicher (PROM), Band, Compact-Disc-Nur-Lese-Speicher (CD-ROM), Platte, Diskette, Kassette, Kassette oder ähnliches usw.). Darüber hinaus kann der Speicher 520 auch elektronische, magnetische, optische und/oder andere Typen von Speichermedien enthalten. Es ist zu beachten, dass der Speicher 520 eine verteilte Architektur haben kann, wobei verschiedene Komponenten voneinander entfernt sind, aber vom Prozessor 510 angesprochen werden können.
  • Die Software im Speicher 520 kann ein oder mehrere separate Programme beinhalten, von denen jedes eine geordnete Auflistung von ausführbaren Anweisungen zur Implementierung logischer Funktionen umfasst. Die Software im Speicher 520 beinhaltet ein geeignetes Betriebssystem (O/S) 550, einen Compiler 540, einen Quellcode 530 und eine oder mehrere Anwendungen 560 gemäß beispielhaften Ausführungsformen. Wie veranschaulicht, umfasst die Anwendung 560 zahlreiche Funktionskomponenten zur Implementierung der Merkmale und Operationen der beispielhaften Ausführungsformen. Die Anwendung 560 des Computers 500 kann gemäß den beispielhaften Ausführungsformen verschiedene Anwendungen, Recheneinheiten, Logik, Funktionseinheiten, Prozesse, Operationen, virtuelle Einheiten und/oder Module darstellen, wobei die Anwendung 560 nicht als Einschränkung zu verstehen ist.
  • Das Betriebssystem 550 steuert die Ausführung anderer Computerprogramme und stellt Zeitplanung, Eingabe-Ausgabe-Steuerung, Datei- und Datenverwaltung, Speicherverwaltung und Kommunikationssteuerung sowie damit verbundene Dienste bereit. Die Erfinder gehen davon aus, dass die Anwendung 560 zur Implementierung der beispielhaften Ausführungsformen auf allen handelsüblichen Betriebssystemen anwendbar sein kann.
  • Bei der Anwendung 560 kann es sich um ein Quellprogramm, ein ausführbares Programm (Objektcode), ein Skript oder eine andere Einheit handeln, die einen Satz von auszuführenden Anweisungen umfasst. Wenn es sich um ein Quellprogramm handelt, wird das Programm in der Regel mit Hilfe eines Compilers (wie z. B. dem Compiler 540), Assemblers, Interpreters o. ä. übersetzt, der im Speicher 520 enthalten sein kann oder auch nicht, damit es in Verbindung mit dem Betriebssystem 550 ordnungsgemäß funktioniert. Die E/A-Einheiten 570 können Eingabeeinheiten beinhalten, wie zum Beispiel, aber nicht beschränkt auf, eine Maus, eine Tastatur, einen Scanner, ein Mikrofon, eine Kamera usw. Darüber hinaus können die E/A-Einheiten 570 auch Ausgabeeinheiten umfassen, zum Beispiel, aber nicht nur, einen Drucker, eine Darstellung usw. Schließlich können die E/A-Einheiten 570 ferner Einheiten beinhalten, die sowohl Eingaben als auch Ausgaben übermitteln, z. B., aber nicht beschränkt auf, eine Netzwerkkarte oder einen Modulator/Demodulator (für den Zugriff auf entfernte Geräte, andere Dateien, Geräte, Systeme oder ein Netzwerk), einen Hochfrequenz- (RF) oder anderen Transceiver, eine Telefonschnittstelle, eine Brücke, einen Router, usw. Die E/A-Einheiten 570 umfassen auch Komponenten für die Kommunikation über verschiedene Netzwerke, wie z. B. das Internet oder Intranet.
  • Handelt es sich bei dem Computer 500 um einen PC, eine Workstation, eine intelligente Vorrichtung oder ähnliches, kann die Software im Speicher 520 ferner ein Basis-Eingabe-Ausgabe-System (BIOS) beinhalten (der Einfachheit halber weggelassen). Das BIOS ist ein Satz wesentlicher Softwareroutinen, die die Hardware beim Start initialisieren und testen, das Betriebssystem 550 starten und die Datenübertragung zwischen den Hardware-Einheiten unterstützen. Das BIOS ist in einem Typ von Nur-Lese-Speicher, wie ROM, PROM, EPROM, EEPROM oder ähnlichem, gespeichert, so dass das BIOS bei Aktivierung des Computers 500 ausgeführt werden kann.
  • Wenn der Computer 500 in Betrieb ist, ist der Prozessor 510 so konfiguriert, dass er die im Speicher 520 gespeicherte Software ausführt, Daten zum und vom Speicher 520 überträgt und allgemein den Betrieb des Computers 500 gemäß der Software steuert. Die Anwendung 560 und das Betriebssystem 550 werden ganz oder teilweise vom Prozessor 510 gelesen, möglicherweise im Prozessor 510 zwischengespeichert und dann ausgeführt.
  • Es ist zu beachten, dass die Anwendung 560, wenn sie in Software implementiert ist, auf praktisch jedem computerlesbaren Medium gespeichert werden kann, um von oder in Verbindung mit einem beliebigen computer-implementierten Verfahren oder System verwendet zu werden. Im Zusammenhang mit diesem Dokument kann ein computerlesbares Medium ein elektronisches, magnetisches, optisches oder anderes physisches Gerät oder Mittel sein, das ein Computerprogramm zur Verwendung durch oder in Verbindung mit einem computerbezogenen System oder Verfahren enthalten oder speichern kann.
  • Die Anwendung 560 kann in einer beliebigen computerlesbaren Ausführungsform zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, -apparat oder -gerät, wie z. B. einem computergestützten System, einem prozessorhaltigen System oder einem anderen System, das die Anweisungen von dem Anweisungsausführungssystem, -apparat oder -gerät abrufen und die Anweisungen ausführen kann, verkörpert sein. Im Kontext dieses Dokuments kann ein „computerlesbares Medium“ jedes Mittel sein, das das Programm zur Verwendung durch oder in Verbindung mit dem Befehlsausführungssystem, der Vorrichtung oder dem Gerät speichern, kommunizieren, verbreiten oder transportieren kann. Bei dem computerlesbaren Medium kann es sich beispielsweise, aber nicht ausschließlich, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine Vorrichtung, ein Gerät oder ein Verbreitungsmedium handeln.
  • Im Zusammenhang mit der vorliegenden Anmeldung, wobei die Ausführungsformen der vorliegenden Offenlegung ein Verfahren darstellen, ist zu verstehen, dass ein solches Verfahren ein Prozess zur Ausführung durch einen Computer ist, d. h. ein computer-implementierbares Verfahren. Die verschiedenen Schritte des Verfahrens entsprechen daher verschiedenen Teilen eines Computerprogramms, z. B. verschiedenen Teilen eines oder mehrerer Algorithmen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailstufe der Integration handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit computerlesbaren Programmanweisungen darauf enthalten, die bewirken, dass ein Prozessor Aspekte der vorliegenden Erfindung ausführt.
  • Das computerlesbare Speichermedium kann eine materielle Einheit sein, die Anweisungen zur Nutzung durch eine Einheit zur Anweisungsausführung enthalten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich beispielsweise um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine geeignete Kombination aus dem Vorhergehenden handeln, ohne auf diese beschränkt zu sein. Eine nicht umfassende Liste konkreterer Beispiele für das computerlesbare Speichermedium beinhaltet Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flashspeicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine Digital Versatile Disk (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie Lochkarten oder erhabene Strukturen in einer Rille mit darin aufgezeichneten Anweisungen und jede geeignete Kombination aus dem Vorhergehenden. Ein wie im vorliegenden Dokument verwendetes computerlesbares Speichermedium soll nicht als transiente Signale an sich ausgelegt werden, beispielsweise Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die ein Lichtleiterkabel durchlaufen), oder durch eine Leitung übertragene elektrische Signale.
  • Im vorliegenden Dokument beschriebene computerlesbare Programmanweisungen können von einem computerlesbaren Speichermedium auf jeweilige Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk, beispielsweise das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein Funknetz, auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, eine drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzadapterkarte oder Netzschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt aus dem Netzwerk computerlesbare Programmanweisungen und leitet die computerlesbaren Programmanweisungen zum Speichern in einem computerlesbaren Speichermedium in der jeweiligen Datenverarbeitungs/Verarbeitungs-Einheit weiter.
  • Computerlesbare Programmanweisungen zum Ausführen von Funktionen der vorliegenden Erfindung können Assembler-Anweisungen, Anweisungen in einer Befehlssatzarchitektur (instruction set architecture, ISA), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstelldaten, Konfigurationsdaten für integrierte Schaltkreise oder entweder Quellcode oder Objektcode sein, der in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben ist, darunter eine objektorientierte Programmiersprache wie Smalltalk, C++ oder Ähnliches, und herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der ferne Computer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, unter anderem ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer erfolgen (beispielsweise per Internet über einen Internet-Diensteanbieter). In einigen Ausführungsformen können elektronische Schaltungen, darunter beispielsweise programmierbare logische Schaltungen, feldprogrammierbare Gate Arrays (FPGA) oder programmierbare Logik-Arrays (PLA), die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen zum individuellen Gestalten der elektronischen Schaltungen verwenden, damit Aspekte der vorliegenden Erfindung ausgeführt werden.
  • Aspekte der vorliegenden Erfindung sind im vorliegenden Dokument unter Bezug auf Ablaufplandarstellungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplandarstellungen und/oder Blockschaubilder und Kombinationen aus Blöcken in den Ablaufplandarstellungen und/oder Blockschaubildern mit computerlesbaren Programmanweisungen implementiert sein kann bzw. können.
  • Diese computerlesbaren Programmanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Computers für besondere Zwecke oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine bereitgestellt werden, sodass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen/Handlungen erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, sodass das computerlesbare Speichermedium, in dem Anweisungen gespeichert sind, einen Herstellungsgegenstand aufweist, der Anweisungen enthält, die Aspekte der Funktion/Handlung realisieren, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder angegeben ist.
  • Die computerlesbaren Programmanweisungen können auch in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheit geladen werden, um zu bewirken, dass eine Reihe von Arbeitsschritten auf dem Computer, der anderen programmierbaren Vorrichtung oder der anderen Einheit ausgeführt wird, um einen auf einem Computer realisierten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Vorrichtung oder der anderen Einheit ausgeführt werden, die Funktinonen/Handlungen realisieren, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaubilder angegeben sind.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, Segment oder einen Anweisungsbestandteil darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion(en) aufweist. Bei einigen Realisierungsalternativen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren angegeben vorkommen. Zwei hintereinander dargestellte Blöcke können beispielsweise tatsächlich als ein Schritt erfolgen, gleichzeitig, im Wesentlichen gleichzeitig, teilweise oder vollständig zeitlich überlappend ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach entsprechender Funktion. Es sei auch festgehalten, dass jeder Block der Blockschaubilder und/oder Ablaufplandarstellung und Kombinationen aus Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch Systeme auf der Grundlage von Hardware für besondere Zwecke realisiert sein kann bzw. können, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen aus Hardware für besondere Zwecke und Computeranweisungen ausführt bzw. ausführen.
  • Die Beschreibung der verschiedenen Ausführungsformen der vorliegenden Erfindung Ist zur Veranschaulichung dargelegt worden, soll jedoch nicht umfassend oder auf die offenbarten Ausführungsformen beschränkt sein. Für den Fachmann sind ohne Abweichung vom Umfang und Geist der Erfindung viele Abwandlungen und Varianten ersichtlich. Die im vorliegenden Dokument verwendete Terminologie wurde ausgewählt, um die Grundgedanken der Ausführungsform, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt verfügbaren Technologien am besten zu erläutern oder um anderen Fachleuten die im vorliegenden Dokument offenbarten Ausführungsformen verständlich zu machen.
  • Die vorliegende Offenlegung stellt ein Verfahren zur Einstellung einer Container-basierten Anwendung bereit, wobei die Container-basierte Anwendung so angepasst ist, dass sie einen oder mehrere Funktionsaufrufe verarbeitet. Ein solches Verfahren beinhaltet das Empfangen eines oder mehrerer Funktionsaufrufe bei der Container-basierten Anwendung und das Verarbeiten des einen oder der mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung. Auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe werden Leistungsdaten von der Container-basierten Anwendung erhalten, und die Leistungsdaten werden gegenüber einer Leistungsmessungsgrenze analysiert. Eine Ressource oder Funktionalität der Container-basierten Anwendung wird auf Grundlage der Analyse der Leistungsdaten eingestellt.
  • Die vorliegende Offenlegung zielt ferner darauf ab, ein Computerprogrammprodukt bereitzustellen, das einen Computerprogrammcode zur Implementierung der vorgeschlagenen Konzepte bei Ausführung auf einem Prozessor umfasst.
  • Die vorliegende Offenlegung zielt ferner darauf ab, ein System (wie eine Verarbeitungseinheit und/oder eine Netzwerkkomponente) bereitzustellen, das zur Ausführung dieses Computerprogrammcodes geeignet ist.
  • Gemäß weiteren Ausführungsformen der Offenbarung wird hier ein Computerprogrammprodukt zum Einstellen einer Container-basierten Anwendung bereitgestellt, wobei die Container-basierte Anwendung angepasst ist, um einen oder mehrere Funktionsaufrufe zu verarbeiten, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin verkörperten Programmanweisungen umfasst, wobei die Programmanweisungen durch eine Verarbeitungseinheit ausführbar sind, um die Verarbeitungseinheit zu veranlassen, ein Verfahren auszuführen, das Folgendes umfasst: Empfangen eines oder mehrerer Funktionsaufrufe bei der Container-basierten Anwendung; Verarbeiten des einen oder der mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung; Erhalten von Leistungsdaten von der Container-basierten Anwendung auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe; Analysieren der Leistungsdaten gegenüber einer Leistungsmessungsgrenze; und Einstellen einer Ressource und/oder Funktionalität der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten.
  • Gemäß einem weiteren Aspekt wird ein System zum Einstellen einer Container-basierten Anwendung bereitgestellt, wobei die Container-basierte Anwendung so angepasst ist, dass sie einen oder mehrere Funktionsaufrufe verarbeitet, wobei das System umfasst: eine Empfangseinheit, die so angepasst ist, dass sie einen oder mehrere Funktionsaufrufe empfängt; und eine Verarbeitungseinheit, die so angepasst ist, dass sie: den einen oder die mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung verarbeitet; Leistungsdaten von der Container-basierten Anwendung auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe erhält; die Leistungsdaten gegenüber einer Leistungsmessungsgrenze analysiert; und eine Ressource und/oder Funktionalität der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten einstellt.

Claims (21)

  1. Ein computer-implementiertes Verfahren, umfassend: Empfangen eines oder mehrerer Funktionsaufrufe bei einer Container-basierten Anwendung; Verarbeiten des Funktionsaufrufs des einen oder der mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung; Erhalten von Leistungsdaten von der Container-basierten Anwendung auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe; Analysieren der Leistungsdaten gegenüber einer Leistungsmessungsgrenze; und Einstellen eines Aspekts der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten, wobei der Aspekt einer oder mehrere ist, die aus der Gruppe ausgewählt sind, die eine Ressource und eine Funktionalität der Container-basierten Anwendung umfasst.
  2. Computer-implementiertes Verfahren nach Anspruch 1, wobei das Analysieren der Leistungsdaten gegenüber der Leistungsmessungsgrenze das Ermitteln umfasst, ob die Leistungsmessungsgrenze erreicht worden ist.
  3. Computer-implementiertes Verfahren nach Anspruch 1, wobei das Analysieren der Leistungsdaten gegenüber der Leistungsmessungsgrenze das Ermitteln umfasst, ob die Leistungsmessungsgrenze innerhalb einer vorbestimmten Zeitperiode erreicht wird.
  4. Das computer-implementierte Verfahren nach Anspruch 1, wobei das Analysieren der Leistungsdaten umfasst Ermitteln einer Verarbeitungszeit für die Verarbeitung des einen oder der mehreren Funktionsaufrufe; und Erkennen eines Knies der Kurve auf Grundlage der analysierten Leistungsdaten, wobei das Knie der Kurve erkannt wird, wenn die Verarbeitungszeit einen vorbestimmten Schwellenwert überschreitet.
  5. Computer-implementiertes Verfahren nach Anspruch 1, wobei die Leistungsmessungsgrenze aus der Gruppe ausgewählt ist, die umfasst: eine Skalierbarkeitsgrenze, wobei die Skalierbarkeitsgrenze aus der Gruppe ausgewählt ist, die umfasst: eine Grenze für physische Ressourcen; eine Grenze für virtuelle Ressourcen; und eine Container-Ressourcengrenze; und eine vordefinierte Skalierungsgrenze; eine Kostengrenze; einen Rückmeldungsgrenzwert; eine CPU-Auslastung pro Ausführung; eine CPU- Auslastung für einen Container; eine Speicherauslastung; einen Netzwerkdurchsatz; eine Netzwerklatenz; einen Speicherdurchsatz; eine Speicherlatenz; eine Anfragereaktionszeit; eine Anzahl von Transaktionen pro Sekunde; und eine Ausfallrate.
  6. Computer-implementiertes Verfahren nach Anspruch 1, wobei die Ressource aus der Gruppe ausgewählt ist, die umfasst: eine Computer-Ressource; und eine Ausführungsarchitektur-Ressource.
  7. Computer-implementiertes Verfahren nach Anspruch 1, wobei die Ressource eine Ausführungsarchitektur-Ressource ist, die aus der Gruppe ausgewählt ist, die umfasst: eine Software-as-a-Service-Architektur; und eine Function-as-a-Service-Architektur.
  8. Computer-implementiertes Verfahren nach Anspruch 1, wobei die Funktionalität eine Front-End-Funktionalität umfasst, wobei die Front-End-Funktionalität aus der Gruppe ausgewählt ist, die umfasst: eine Menge von angezeigten Daten; eine Anzahl von zulässigen komplexen Transaktionen; und eine Anzahl von verfügbaren Anwendungsoptionen.
  9. Computer-implementiertes Verfahren nach Anspruch 1, wobei die Funktionalität eine Back-End-Funktionalität umfasst, wobei die Back-End-Funktionalität aus der Gruppe ausgewählt ist, die umfasst eine Anzahl von synthetischen Transaktionen; eine Menge von Logging; eine Anzahl von synchronen Transaktionen; und eine Anzahl von asynchronen Transaktionen.
  10. Computer-implementiertes Verfahren nach Anspruch 1, wobei die Einstellung der Funktionalität der container-basierten Anwendung das Ausführen einer Back-End-Funktion unter Verwendung einer Front-End-Funktionalität umfasst.
  11. Computerprogrammprodukt, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin verkörperten Programmanweisungen umfasst, wobei das computerlesbare Speichermedium kein transitorisches Signal an sich ist, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, ein Verfahren auszuführen, das Folgendes umfasst: Empfangen eines oder mehrerer Funktionsaufrufe bei einer Container-basierten Anwendung; Verarbeiten des einen oder der mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung; Erhalten von Leistungsdaten von der Container-basierten Anwendung auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe; Analysieren der Leistungsdaten gegenüber einer Leistungsmessungsgrenze; und Einstellen eines Aspekts der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten, wobei der Aspekt einer oder mehrere ist, die aus der Gruppe ausgewählt sind, die eine Ressource und eine Funktionalität der Container-basierten Anwendung umfasst.
  12. Computerprogrammprodukt nach Anspruch 11, wobei das Analysieren der Leistungsdaten gegenüber der Leistungsmessungsgrenze Folgendes umfasst: Ermitteln, ob die Leistungsmessungsgrenze innerhalb einer vorbestimmten Zeitperiode erreicht werden wird.
  13. Computerprogrammprodukt nach Anspruch 11, wobei das Analysieren der Leistungsdaten umfasst: Ermitteln einer Verarbeitungszeit für die Verarbeitung des einen oder der mehreren Funktionsaufrufe; und Erkennen eines Knies der Kurve auf Grundlage der analysierten Leistungsdaten, wobei das Knie der Kurve erkannt wird, wenn die Verarbeitungszeit einen vorbestimmten Schwellenwert überschreitet.
  14. Computerprogrammprodukt nach Anspruch 11, wobei die Leistungsmessungsgrenze aus der Gruppe ausgewählt ist, die umfasst: eine Skalierbarkeitsgrenze, wobei die Skalierbarkeitsgrenze aus der Gruppe ausgewählt ist, die umfasst: eine Grenze für physische Ressourcen; eine Grenze für virtuelle Ressourcen; und eine Container-Ressourcengrenze; und eine vordefinierte Skalierungsgrenze; eine Kostengrenze; einen Rückmeldungsgrenzwert; eine CPU- Auslastung pro Ausführung; eine CPU- Auslastung für einen Container; eine Speicherauslastung; einen Netzwerkdurchsatz; eine Netzwerklatenz; einen Speicherdurchsatz; eine Speicherlatenz; eine Anfragereaktionszeit; eine Anzahl von Transaktionen pro Sekunde; und eine Ausfallrate.
  15. Ein System, umfassend: einen Prozessor; und ein computerlesbares Speichermedium, das kommunikativ mit dem Prozessor verbunden ist und Programmanweisungen speichert, die, wenn sie von dem Prozessor ausgeführt werden, den Prozessor veranlassen, ein Verfahren auszuführen, das Folgendes umfasst: Empfangen eines oder mehrerer Funktionsaufrufe bei einer Container-basierten Anwendung; Verarbeiten des einen oder der mehreren Funktionsaufrufe unter Verwendung der Container-basierten Anwendung; Erhalten von Leistungsdaten von der Container-basierten Anwendung auf Grundlage der Verarbeitung des einen oder der mehreren Funktionsaufrufe; Analysieren der Leistungsdaten gegenüber einer Leistungsmessungsgrenze; und einen Aspekt der Container-basierten Anwendung auf Grundlage der Analyse der Leistungsdaten, wobei der Aspekt einer oder mehrere ist, die aus der Gruppe ausgewählt sind, die eine Ressource und eine Funktionalität der Container-basierten Anwendung umfasst.
  16. System nach Anspruch 15, wobei das Analysieren der Leistungsdaten gegen die Leistungsmessungsgrenze das Ermitteln umfasst, ob die Leistungsmessungsgrenze erreicht worden ist.
  17. System nach Anspruch 15, wobei das Analysieren der Leistungsdaten gegenüber der Leistungsmessungsgrenze das Ermitteln umfasst, ob die Leistungsmessungsgrenze innerhalb einer gegebenen Zeitperiode erreicht werden wird.
  18. System nach Anspruch 15, wobei das Analysieren der Leistungsdaten gegenüber der Leistungsmessungsgrenze Folgendes umfasst: Ermitteln einer Verarbeitungszeit für die Verarbeitung des einen oder der mehreren Funktionsaufrufe; und Erkennen eines Knies der Kurve auf Grundlage der analysierten Leistungsdaten, wobei das Knie der Kurve erkannt wird, wenn die Verarbeitungszeit einen vorgegebenen Schwellenwert überschreitet.
  19. System nach Anspruch 15, wobei die Funktionalität eine Front-End-Funktionalität umfasst, die aus der Gruppe ausgewählt ist, die umfasst: eine Menge von angezeigten Daten; eine Anzahl von zulässigen komplexen Transaktionen; und eine Anzahl von verfügbaren Anwendungsoptionen.
  20. System nach Anspruch 15, wobei die Funktionalität eine Back-End-Funktionalität umfasst, die aus der Gruppe ausgewählt ist, die umfasst: eine Anzahl von synthetischen Transaktionen; eine Menge von Logging; eine Anzahl von synchronen Transaktionen; und eine Anzahl von asynchronen Transaktionen.
  21. Ein Computerprogramm, das Programmcodemittel umfasst, die geeignet sind, das Verfahren nach einem der Ansprüche 1 bis 10 auszuführen, wenn das Programm auf einem Computer ausgeführt wird.
DE112020002189.0T 2019-07-05 2020-06-30 Container-basierte anwendungen Granted DE112020002189T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/503,879 2019-07-05
US16/503,879 US11150935B2 (en) 2019-07-05 2019-07-05 Container-based applications
PCT/IB2020/056185 WO2021005455A1 (en) 2019-07-05 2020-06-30 Container-based applications

Publications (1)

Publication Number Publication Date
DE112020002189T5 true DE112020002189T5 (de) 2022-04-07

Family

ID=74065755

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020002189.0T Granted DE112020002189T5 (de) 2019-07-05 2020-06-30 Container-basierte anwendungen

Country Status (6)

Country Link
US (1) US11150935B2 (de)
JP (1) JP7497940B2 (de)
CN (1) CN114026542A (de)
DE (1) DE112020002189T5 (de)
GB (1) GB2599062B (de)
WO (1) WO2021005455A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10817346B1 (en) 2019-09-23 2020-10-27 ForgeRock, Inc. Secure service isolation between instances of cloud products using a SaaS model
US11200081B2 (en) * 2019-10-21 2021-12-14 ForgeRock, Inc. Systems and methods for tuning containers in a high availability environment
US11770377B1 (en) * 2020-06-29 2023-09-26 Cyral Inc. Non-in line data monitoring and security services
US20220075795A1 (en) * 2020-09-04 2022-03-10 Capital One Services, Llc In-flight transformations over a data stream
US11606210B1 (en) 2020-12-17 2023-03-14 ForgeRock, Inc. Secure activation, service mode access and usage control of IOT devices using bearer tokens
CN114780170B (zh) * 2022-04-11 2023-07-21 远景智能国际私人投资有限公司 容器资源的配置方法、装置、设备及存储介质
CN114461437B (zh) * 2022-04-11 2022-06-10 中航信移动科技有限公司 一种数据处理方法、电子设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2541895C2 (ru) 2012-12-25 2015-02-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ повышения защищенности данных организации путем создания изолированной среды
US9256467B1 (en) 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US10268514B1 (en) * 2016-03-22 2019-04-23 Amazon Technologies, Inc. Performance analysis of stateless compute functions using function call intercept
CN107733676A (zh) * 2016-08-12 2018-02-23 中国移动通信集团浙江有限公司 一种弹性调度资源的方法及系统
CN107733678B (zh) 2016-08-12 2022-12-13 华为技术有限公司 无线通信系统的服务质量管理方法和系统
CN106776005B (zh) 2016-11-23 2019-12-13 华中科技大学 一种面向容器化应用的资源管理系统及方法
US20180183858A1 (en) 2016-12-28 2018-06-28 BeBop Technology LLC Method and System for Managing Cloud Based Operations
JP6940751B2 (ja) 2017-05-10 2021-09-29 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10956230B2 (en) * 2018-10-01 2021-03-23 Vmware, Inc. Workload placement with forecast

Also Published As

Publication number Publication date
CN114026542A (zh) 2022-02-08
GB2599062A (en) 2022-03-23
GB2599062B (en) 2022-08-17
WO2021005455A1 (en) 2021-01-14
JP2022538897A (ja) 2022-09-06
JP7497940B2 (ja) 2024-06-11
US11150935B2 (en) 2021-10-19
US20210004253A1 (en) 2021-01-07

Similar Documents

Publication Publication Date Title
DE112020002189T5 (de) Container-basierte anwendungen
DE112020000558B4 (de) Dynamisches ändern einer isolierung einer containerisierten arbeitslast in reaktion auf eine erfassung eines auslösenden faktors
DE112012004336B4 (de) System, Verfahren und Programmprodukt für kostenbewusste Auswahl von Vorlagen zum Bereitstellen von gemeinsam genutzten Ressourcen
DE102017217968A1 (de) Generieren eines Verschiebungsprotokolls für virtuelle Maschinen
DE102013204508A1 (de) Dynamisches Neukonfigurieren eines Speichersystems
DE102015105884A1 (de) Zuverlässige und deterministische Live-Migration von virtuellen Maschinen
DE112012004238T5 (de) Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen
DE112012003505T5 (de) Automatisierte Auswahl von Funktionen zum Verringern der Speicherkapazität auf der Grundlage von Leistungsanforderungen
DE112021006130T5 (de) Automatisierte orchestrierung von containern durch bewerten von mikrodiensten
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112019000421B4 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
DE102012215219A1 (de) Ermitteln von Verteilungen von Abbildmustern von virtuellen Maschinen in einer vernetzten Datenverarbeitungsumgebung
DE112021000390T5 (de) Anpassen der leistung eines datenverarbeitungssystems
DE112018005268T5 (de) Priorisieren von anwendungen für eine diagonale skalierung in einer verteilten datenverarbeitungsumgebung
DE112021003276T5 (de) Ressourcenverwaltung einer softwareanwendung mit mehreren softwarekomponenten
DE112021005586T5 (de) Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene
DE102021125182A1 (de) Gemeinsam genutzte unternehmenscloud
DE112021003294T5 (de) Systemverwaltung auf grundlage von leistung und leistungsfähigkeit
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112020003578B4 (de) Mindern von bedrohungen von arbeitslasten auf grundlage von containern
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE112020005306T5 (de) Implementierung von arbeitslasten in einer multi-cloud-umgebung
DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
DE102014116744A1 (de) Management von Informationstechnologieressourcen
DE112018004415B4 (de) Optimierung von cloud-ressourcen bei operationen in mehrstufigem speicher auf richtliniengrundlage

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence
R018 Grant decision by examination section/examining division