DE102017217971A1 - Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting - Google Patents

Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting Download PDF

Info

Publication number
DE102017217971A1
DE102017217971A1 DE102017217971.6A DE102017217971A DE102017217971A1 DE 102017217971 A1 DE102017217971 A1 DE 102017217971A1 DE 102017217971 A DE102017217971 A DE 102017217971A DE 102017217971 A1 DE102017217971 A1 DE 102017217971A1
Authority
DE
Germany
Prior art keywords
serverless
serverless application
application
computing device
data processing
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
DE102017217971.6A
Other languages
English (en)
Other versions
DE102017217971B4 (de
Inventor
Stephen Fink
Nicholas Mitchell
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 DE102017217971A1 publication Critical patent/DE102017217971A1/de
Application granted granted Critical
Publication of DE102017217971B4 publication Critical patent/DE102017217971B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable

Landscapes

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

Abstract

Es werden Techniken bereitgestellt, die ein erneutes Hosten eines Untergruppe einer serverlosen Anwendung ermöglichen. In einem Beispiel enthält ein System eine Schnittstellenkomponente, eine Rewriter-Komponente und eine Broker-Komponente. Die Schnittstellenkomponente empfängt ID-Daten von einer Datenverarbeitungseinheit, die einen Abschnitt einer serverlosen Anwendung identifizieren, der durch die Datenverarbeitungseinheit erneut gehostet werden soll. Die Datenverarbeitungseinheit steht über eine Netzwerkeinheit in Datenaustausch mit dem serverlosen Datenverarbeitungssystem. Die Rewriter-Komponente schreibt die serverlose Anwendung um, um zu gestatten, dass der erste Abschnitt der serverlosen Anwendung durch die Datenverarbeitungseinheit ausgeführt wird und ein anderer Abschnitt der serverlosen Anwendung durch das serverlose Datenverarbeitungssystem ausgeführt wird. Die Schnittstellenkomponente leitet den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit um, um eine Debugging-Sitzung für den ersten Abschnitt der serverlosen Anwendung zu ermöglichen, die durch die Datenverarbeitungseinheit ausgeführt wird.

Description

  • HINTERGRUND
  • Die Offenlegung des Erfindungsgegenstands betrifft serverlose Datenverarbeitungssysteme und insbesondere ein Debugging einer serverlosen Anwendung, die einem serverlosen Datenverarbeitungssystem zugehörig ist.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Das Folgende stellt eine Kurzdarstellung zum Bereitstellen eines grundlegenden Verständnisses von einer oder mehreren Ausführungsformen der Erfindung dar. Diese Kurzdarstellung dient nicht zum Identifizieren von Schlüssel- oder kritischen Elementen oder Abgrenzen eines Schutzumfangs der bestimmten Ausführungsformen oder eines Schutzumfangs der Ansprüche. Der einzige Zweck besteht in der Darstellung von Konzepten in einer vereinfachten Form als Einleitung für die ausführlichere, später angegebene Beschreibung. In einer oder mehreren hierin beschriebenen Ausführungsformen werden Einheiten, Systeme, von einem Computer umgesetzte Verfahren, Vorrichtungen und/oder Computerprogrammprodukte beschrieben, die ein erneutes Hosten einer Untergruppe einer serverlosen Anwendung ermöglichen.
  • Gemäß einer Ausführungsform kann ein System eine Schnittstellenkomponente, eine Rewriter-Komponente und eine Broker-Komponente aufweisen. Die Schnittstellenkomponente kann ID-Daten von einer Datenverarbeitungseinheit empfangen, die einen ersten Abschnitt einer serverlosen Anwendung identifizieren, der durch die Datenverarbeitungseinheit erneut gehostet werden soll. Die Datenverarbeitungseinheit kann über eine Netzwerkeinheit in Datenaustausch mit dem serverlosen Datenverarbeitungssystem stehen. Die Rewriter-Komponente kann die serverlose Anwendung umschreiben, um zu gestatten, dass der erste Abschnitt der serverlosen Anwendung durch die Datenverarbeitungseinheit ausgeführt wird und ein zweiter Abschnitt der serverlosen Anwendung durch das serverlose Datenverarbeitungssystem ausgeführt wird. Die Schnittstellenkomponente kann den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit umleiten, um eine Debugging-Sitzung für den ersten Abschnitt der serverlosen Anwendung zu ermöglichen, die durch die Datenverarbeitungseinheit ausgeführt wird.
  • Gemäß einer weiteren Ausführungsform wird ein von einem Computer umgesetztes Verfahren bereitgestellt. Das von einem Computer umgesetzte Verfahren kann ein Empfangen von ID-Daten von einer Datenverarbeitungseinheit, die einen ersten Abschnitt einer serverlosen Anwendung identifizieren, der durch die Datenverarbeitungseinheit erneut gehostet werden soll, von einem betriebsfähig mit einem Prozessor verbundenen System aufweisen, wobei das System über eine Netzwerkeinheit mit der Datenverarbeitungseinheit in Datenaustausch steht. Das von einem Computer umgesetzte Verfahren kann auch ein Übertragen des ersten Abschnitts der serverlosen Anwendung zu der Datenverarbeitungseinheit durch das System aufweisen. Ferner kann das von einem Computer umgesetzte Verfahren ein Ermöglichen einer Debugging-Sitzung, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, über die Datenverarbeitungseinheit durch das System aufweisen. Das von einem Computer umgesetzte Verfahren kann auch ein Ausführen des zweiten Abschnitts der serverlosen Anwendung durch das System aufweisen.
  • Gemäß noch einer weiteren Ausführungsform wird ein von einem Computer umgesetztes Verfahren bereitgestellt. Das von einem Computer umgesetzte Verfahren kann ein Bestimmen von ID-Daten, die einem ersten Abschnitt einer serverlosen Anwendung zugehörig sind, durch ein betriebsfähig mit einem Prozessor verbundenes System aufweisen. Das von einem Computer umgesetzte Verfahren kann auch ein Übertragen der ID-Daten über eine Netzwerkeinheit zu einem serverlosen Datenverarbeitungssystem durch das System aufweisen. Ferner kann das von einem Computer umgesetzte Verfahren ein Empfangen des ersten Abschnitts der serverlosen Anwendung von dem Datenverarbeitungssystem durch das System aufweisen. Das von einem Computer umgesetzte Verfahren kann auch ein Ausführen einer Debugging-Sitzung, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, durch das System aufweisen, ungefähr gleichzeitig mit einer Ausführung eines zweiten Abschnitts der serverlosen Anwendung durch das serverlose Datenverarbeitungssystem.
  • Gemäß noch einer weiteren Ausführungsform kann ein Computerprogrammprodukt für ein Debugging einer serverlosen Anwendung ein computerlesbares Speichermedium mit darin ausgeführten Programmanweisungen aufweisen. Die Programmanweisungen können durch einen Prozessor ausführbar sein und den Prozessor zum Empfangen von ID-Daten von einer Datenverarbeitungseinheit, die einen ersten Abschnitt einer serverlosen Anwendung identifizieren, die einem serverlosen Datenverarbeitungssystem zugehörig ist, durch den Prozessor veranlassen. Die Programmanweisungen können den Prozessor auch zum Übertragen des ersten Abschnitts der serverlosen Anwendung zu der Datenverarbeitungseinheit durch den Prozessor veranlassen. Die Programmanweisungen können den Prozessor auch zum Ausführen eines zweiten Abschnitts der serverlosen Anwendung durch den Prozessor während einer Debugging-Sitzung durch die Datenverarbeitungseinheit veranlassen, die ein Debugging des ersten Abschnitts der serverlosen Anwendung vornimmt.
  • Gemäß noch einer weiteren Ausführungsform kann ein Computerprogrammprodukt für ein Debugging einer serverlosen Anwendung ein computerlesbares Speichermedium mit darin ausgeführten Programmanweisungen aufweisen. Die Programmanweisungen können durch einen Prozessor ausführbar sein und den Prozessor zum Übertragen von ID-Daten, die einem ersten Abschnitt einer serverlosen Anwendung zugehörig sind, zu einem serverlosen Datenverarbeitungssystem durch den Prozessor veranlassen. Die Programmanweisungen können den Prozessor auch zum Empfangen des ersten Abschnitts der serverlosen Anwendung von dem serverlosen Datenverarbeitungssystem durch den Prozessor veranlassen. Die Programmanweisungen können den Prozessor auch zum Ausführen einer Debugging-Sitzung, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, durch den Prozessor veranlassen.
  • Figurenliste
    • 1 veranschaulicht ein Blockschaubild eines beispielhaften nicht-einschränkenden Systems zum Ermöglichen eines erneuten Hostens einer Untergruppe einer serverlosen Anwendung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
    • 2 veranschaulicht ein Blockschaubild eines weiteren beispielhaften nicht-einschränkenden Systems zum Ermöglichen eines erneuten Hostens einer Untergruppe einer serverlosen Anwendung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
    • 3 veranschaulicht ein Blockschaubild noch eines weiteren beispielhaften nicht-einschränkenden Systems zum Ermöglichen eines erneuten Hostens einer Untergruppe einer serverlosen Anwendung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
    • 4 veranschaulicht ein beispielhaftes nicht-einschränkendes System, das eine Debugging-Sitzung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 5 veranschaulicht ein weiteres beispielhaftes nicht-einschränkendes System, das eine Debugging-Sitzung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht.
    • 6 veranschaulicht einen Ablaufplan eines beispielhaften nicht-einschränkenden, von einem Computer umgesetzten Verfahrens zum Ermöglichen einer Debugging-Sitzung, die einer serverlosen Anwendung zugehörig ist, gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
    • 7 veranschaulicht einen Ablaufplan eines weiteren beispielhaften nicht-einschränkenden, von einem Computer umgesetzten Verfahrens zum Ermöglichen einer Debugging-Sitzung, die einer serverlosen Anwendung zugehörig ist, gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
    • 8 veranschaulicht ein Blockschaubild einer beispielhaften nicht-einschränkenden Betriebsumgebung, in der eine oder mehrere hierin beschriebene Ausführungsformen ermöglicht werden können.
    • 9 veranschaulicht ein Blockschaubild einer beispielhaften nicht-einschränkenden Cloud-Computing-Umgebung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
    • 10 veranschaulicht ein Blockschaubild von beispielhaften nicht-einschränkenden Abstraktionsmodellschichten gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende ausführliche Beschreibung dient nur zur Veranschaulichung und soll weder Ausführungsformen und/oder Anwendung oder Verwendungen von Ausführungsformen einschränken. Ferner ist keine Einschränkung durch ausgedrückte oder implizierte Informationen beabsichtigt, die in den vorhergehenden Hintergrund- oder Kurzdarstellungsabschnitten oder im Abschnitt „Ausführliche Beschreibung“ dargelegt wurden.
  • Im Folgenden werden eine oder mehrere Ausführungsformen unter Bezugnahme auf die Zeichnungen beschrieben, wobei durchgehend gleiche Bezugszeichen verwendet werden, um auf gleiche Elemente zu verweisen. In der folgenden Beschreibung werden zu Erläuterungszwecken zahlreiche spezifische Details dargelegt, um ein gründlicheres Verständnis der einen oder der mehreren Ausführungsformen bereitzustellen. Es ist in verschiedenen Fällen jedoch offensichtlich, dass die eine oder die mehreren Ausführungsformen ohne diese spezifischen Details ausgeübt werden können.
  • Ein Debugging einer Cloud-Anwendung wird im Allgemeinen unter Verwendung von Protokollen vorgenommen, die sich auf die Cloud-Anwendung oder Snapshots beziehen, die einem Zustand der Cloud-Anwendung entsprechen. Zum Beispiel können Protokolle gesammelt und/oder zusammengestellt werden, um ein Debugging einer Cloud-Anwendung zu ermöglichen. Alternativ können Snapshots eines Zustands einer Cloud-Anwendung analysiert werden, um ein Debugging einer Cloud-Anwendung zu ermöglichen. Zum weiteren Ermöglichen eines Debugging einer Cloud-Anwendung kann eine Cloud-Plattform ein Dienstprogramm zum Sammeln und Analysieren von Protokollen bereitstellen, das von einem Benutzer verwendet werden kann. Die Protokollsammlung und -analyse hat jedoch mehrere Nachteile, insbesondere in Bezug auf Debugging. Zum Beispiel können Cloud-Anwendungen mit hohem Datenvolumen große Datenmengen generieren und/oder können Vorausplanung erfordern (z.B. Vorausplanung in Bezug auf einen zu protokollierenden Inhaltstyp). Daher kann ein Dienstprogramm zum Sammeln und Analysieren von Protokollen keine Einzelschritt-Routine bereitstellen, die Debugroutinen gemeinsam ist. Ein Dienstprogramm zum Sammeln und Analysieren von Protokollen kann auch keine Funktion zum Modifizieren eines Programmzustands bereitstellen, wenn ein Benutzer Computercode der Cloud-Anwendung nacheinander aufruft. In bestimmten Fällen kann ein System die Protokollierung durch Sammlung und Visualisierung von Snapshots eines Zustands des Systems erweitern. Zum Beispiel kann eine Debugroutine einem Benutzer gestatten, zu bestimmen, wann Snapshots in Bezug auf einen Zustand einer Cloud-Anwendung gesammelt werden sollen. Der Benutzer kann diese anschließend in einem Werkzeug anzeigen, das eine Untergruppe einer vollständigen Debugroutine emuliert. Das Werkzeug kann Zeitpunkt-Snapshots verwenden und einem Benutzer damit ermöglichen, eine Arbeitsspeicherstruktur sowie die Aufrufstapel der Threads zum Zeitpunkt der Snapshot-Aufnahme anzuzeigen. Allerdings ist im Allgemeinen eine Verschlüsselung von Ablaufsteuerungsinformationen für Zeitpunkt-Snapshots erforderlich (z.B. wann die Zeitpunkt-Snapshots aufgenommen werden sollen), um die Verwendung von Zeitpunkt-Snapshots für Debugging-Zwecke zu ermöglichen. Ferner sind Debugging-Aufgaben wie beispielsweise schrittweises Abrufen von Code und Modifizieren eines Programmzustands nicht möglich, wenn Snapshots eines Zustands des Systems verwendet werden. In einem weiteren Beispiel kann eine vollständige Debugging-Umgebung auf einer lokalen Maschine eines Entwicklers ausgeführt werden. In der vollständigen Debugging-Umgebung muss ein Benutzer jedoch im Allgemeinen eine lokales Entwickeln und Debugging vor dem Bereitstellen von Änderungen für eine Pipeline von Tests und Bereitstellungen vornehmen. Ferner werden Anwendungen, die in diesen Cloud-Plattformen ausgeführt werden, normalerweise durch langlebige Prozesse oder langlebige virtuelle Maschinen (VM) ausgeführt.
  • Eine neueste Ergänzung der Cloud-Computing-Landschaft ist die serverlose Datenverarbeitung. Eine serverlose Datenverarbeitungsplattform kombiniert im Allgemeinen ereignisgesteuerte Programmierung (oder Publish/Subscribe-Programmierung), automatische Skalierung und ein differenziertes Preisgestaltungsmodell. Zum Beispiel kann ein Programmierer ein ereignisgesteuertes Programm als eine Folge von Ereignis-Aktion-Paaren verschlüsseln und kann das ereignisgesteuerte Programm für einen Dienst hochladen. Das System überwacht Ereignisse und verwaltet einen Pool von Worker-Einheiten, die es zum Verarbeiten der Aktionen nach Empfang eines Ereignisses verwendet. Auf diese Weise kann eine begrenzte Gruppe von Ressourcen von vielen gemeinsam genutzt werden, wobei nur die Verwendung berechnet wird, nicht die Verfügbarkeitszeit. Eine serverlose Datenverarbeitungsanwendung, die auf einer serverlosen Datenverarbeitungsplattform ausgeführt wird, nimmt also eine Ressource nur in Anspruch, wenn sie aktiv ist. Im Gegensatz dazu nimmt eine von einer Cloud gehostete Anwendung die wertvolle Ressource (z.B. eine bestimmte Anzahl von Zentraleinheit-Zyklen) für die Dauer ihres Einsatzes in Anspruch. Ein Debugging einer serverlosen Datenverarbeitungsanwendung ist in vielfacher Hinsicht eine Herausforderung. Zum Beispiel gehört zum Debugging einer serverlosen Datenverarbeitungsanwendung im Allgemeinen eine Anbindung an eine Funktion, die die Ausführung der serverlosen Datenverarbeitungsanwendung anhält und einem Benutzer der Debugroutine gestattet, einen Bewertungstakt dieser Funktion zu steuern. Dies erfordert jedoch im Allgemeinen, dass eine oder mehrere kritische Worker-Ressourcen für eine unbegrenzte Zeit monopolisiert werden. Ferner kann ein Benutzer die Debug-Sitzung vergessen und erst Stunden oder Tage später wieder beginnen.
  • Ein Debugging einer Cloud-Anwendung kann auch insofern problematisch sein, als die Cloud-Anwendung von einer Datenverarbeitungseinheit entfernt angeordnet und auf einer Plattform ausgeführt wird, die im Allgemeinen keinen direkten Zugriff durch eine Datenverarbeitungseinheit zulässt. Eine Debugroutine des Typs „anhängen und prüfen“ kann verwendet werden, um sie an eine Cloud-Anwendung und/oder einen Prüfcode der Cloud-Anwendung anzuhängen, da Cloud-Anwendungen im Allgemeinen von Prozessen mit langer Laufzeit bedient werden. Außerdem verkompliziert ein Debugging von serverlosen Anwendungen ferner Debugging-Prozesse, da serverlose Anwendungen im Allgemeinen keinen Prozessen mit langer Laufzeit zugehörig sind. Des Weiteren kann sich ein Anhängen und somit Anhalten einer serverlosen Anwendung negativ auf die Leistung einer serverlosen Umgebung auswirken. Zum Beispiel verwenden Laufzeiten oft einen Pool mit begrenzter Größe von Threads und/oder Containern, mit denen Anforderungen bedient werden. Eine Debugroutine kann durch Anbindung an einen Prozess mit langer Laufzeit arbeiten, wobei dessen Ausführung angehalten wird und einem Benutzer gestattet, den Zustand des Prozesses zu prüfen. Ein Anhänge-und-Anhalte-Debugging muss oft Betriebssystemmerkmale wie beispielsweise Abfangpunkte nutzen. Oft korrigiert ein Anhänge-und-Anhalte-Debugging auch die ausführbare Funktion, um differenzierte Unterbrechungspunkte zu unterstützen. Daher würde die Verwendung von Anhängen-und-Halten für ein Debugging einer serverlosen Anwendung die Leistung einer serverlosen Umgebung, die der serverlosen Anwendung zugehörig ist, schnell verringern. Schließlich ist es angesichts der Komplexität einer serverlosen Plattform äußerst wünschenswert, Entwicklungs- und/oder Debugging-Aufgaben aus einem Laufzeitprozess heraus zu verschieben, der einer serverlosen Anwendung zugehörig ist.
  • Um diese und/oder andere Problemstellungen anzugehen, enthalten hierin beschriebene Ausführungsformen Systeme, die ein erneutes Hosten einer Untergruppe einer serverlosen Anwendung ermöglichen. Zum Beispiel kann eine Untergruppe einer serverlosen Anwendung, die durch eine serverlose Cloud-Plattform gehostet wird, durch eine Datenverarbeitungseinheit erneut gehostet werden, die über ein Netzwerk mit der serverlosen Cloud-Plattform in Datenaustausch steht. Ein erneutes Hosten der Untergruppe der serverlosen Anwendung kann ein verbessertes Debugging der serverlosen Anwendung ermöglichen. Zum Beispiel kann ein Abschnitt eines Computercodes, der der serverlosen Anwendung zugehörig ist, die auf einer serverlosen Cloud-Plattform ausgeführt wird, erneut gehostet werden (z.B. von der serverlosen Cloud-Plattform ausgelagert werden) und/oder unter Verwendung eines Debug-Programms auf einer lokalen Datenverarbeitungseinheit einem Debugging unterzogen werden. Zusätzlich oder alternativ kann ein erneutes Hosten der Untergruppe der serverlosen Anwendung eine Ausführung der Untergruppe der serverlosen Anwendung durch eine Datenverarbeitungseinheit ermöglichen, die sich von der serverlosen Cloud-Plattform unterscheidet. Daher kann die Leistung der serverlosen Anwendung verbessert werden. Ferner kann eine geringere Anzahl von Fehlern erreicht werden, die einer serverlosen Anwendung zugehörig sind. Außerdem kann eine Debugroutine für eine serverlose Anwendung ohne Modifizieren einer Kernlaufzeit der serverlosen Anwendung verwendet werden.
  • 1 veranschaulicht ein Blockschaubild eines beispielhaften nicht-einschränkenden Systems 100, das ein erneutes Hosten einer Untergruppe einer serverlosen Anwendung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht. Eine wiederholte Beschreibung von ähnlichen Elementen, die in anderen hierin beschriebenen Ausführungsformen verwendet werden, wird der Kürze halber weggelassen.
  • In verschiedenen Ausführungsformen kann ein System 100 ein serverloses Cloud-Plattformsystem sein. In einem Aspekt kann das System 100 ein System zum erneuten Hosten einer Untergruppe einer serverlosen Anwendung sein. Außerdem kann das System 100 einem Debugging-System, einem serverlosen Datenverarbeitungssystem, einem Protokollanalysesystem (z.B. einem Echtzeitprotokoll-Analysesystem), einem Protokollverwaltungssystem, einem Überwachungssystem, einem operationellen Analysesystem, einen Datenverarbeitungseinheitssystem, einem Anwendungsverwaltungssystem, einem Serversystem, einem Netzwerksystem, einem Websystem, einem On-Premise-System, einem Maschinenlernsystem, einem System künstlicher Intelligenz und/oder einem anderen Typ von System zugehörig sein, mit einem solchen verwendet werden oder in einem solchen enthalten sein. Das System 100 kann Hardware und/oder Software zum Lösen von Problemen hochtechnischer Natur verwenden, die nicht abstrakt sind und die nicht als ein Satz geistiger Tätigkeiten durch einen Menschen ausgeführt werden können. Ferner können einige der ausgeführten Prozesse durch einen speziellen Computer (z.B. einen speziellen Computer mit einer serverlosen Datenverarbeitungskomponente) zum Ausführen definierter Aufgaben, die in Bezug zu Arbeitsspeicheroperationen stehen, ausgeführt werden. Das System 100 und/oder Komponenten des Systems können verwendet werden, um neue Probleme zu lösen, die durch technologische Fortschritte, Verwendung von Datenverarbeitungseinheiten, Verwendung einer Cloud-Plattform, Debugging von serverlosen Anwendungen, Ausführung von serverlosen Anwendungen und/oder Computerarchitektur und dergleichen auftreten. Eine oder mehrere Ausführungsformen des Systems 100 können technische Verbesserungen für serverlose Cloud-Plattformsysteme, Debugging-Systeme, Protokollanalysesysteme (z.B. Echtzeitprotokoll-Analysesysteme), Protokollverwaltungssysteme, Überwachungssysteme, operationelle Analysesysteme, Datenverarbeitungseinheitssysteme, Anwendungsverwaltungssysteme, Serversysteme, Netzwerksysteme, Websysteme, On-Premise-Systeme, Maschinenlernsysteme, Systeme künstlicher Intelligenz usw. bereitstellen. Eine oder mehrere Ausführungsformen des Systems 100 können auch technische Verbesserungen für eine Datenverarbeitungseinheit durch Verbessern der Debugging-Fähigkeiten der Datenverarbeitungseinheit bereitstellen.
  • In der in 1 gezeigten Ausführungsform kann das System 100 eine serverlose Datenverarbeitungskomponente 102 enthalten. Die serverlose Datenverarbeitungskomponente 102 kann einem serverlosen Datenverarbeitungssystem zugehörig sein. Zum Beispiel kann ein Server in bestimmten Ausführungsformen die serverlose Datenverarbeitungskomponente 102 hosten. Wie in 1 gezeigt, kann die serverlose Datenverarbeitungskomponente 102 eine Schnittstellenkomponente 104, eine Rewriter-Komponente 106 und eine Broker-Komponente 108 enthalten. Aspekte der serverlosen Datenverarbeitungskomponente 102 können eine oder mehrere durch eine Maschine ausführbare Komponenten bilden, die in der oder den Maschinen verkörpert sind, z.B. in einem oder mehreren computerlesbaren Medien verkörpert sind, die einer oder mehreren Maschinen zugehörig sind. Wenn eine bzw. mehrere derartige Komponenten durch die eine oder die mehreren Maschinen, Datenverarbeitungseinheit(en), virtuelle(n) Maschine(n) usw. ausgeführt werden, können sie die Maschine bzw. Maschinen veranlassen, die beschriebenen Operationen auszuführen. In einem Aspekt kann die serverlose Datenverarbeitungskomponente 102 auch einen Arbeitsspeicher 110 enthalten, der vom Computer ausführbare Komponenten und Anweisungen speichert. Des Weiteren kann die serverlose Datenverarbeitungskomponente 102 einen Prozessor 112 zum Ermöglichen der Ausführung der Anweisungen (z.B. vom Computer ausführbare Komponenten und entsprechende Anweisungen) durch die serverlose Datenverarbeitungskomponente 102 enthalten. Wie gezeigt, können die Schnittstellenkomponente 104, die Rewriter-Komponente 106, die Broker-Komponente 108, der Arbeitsspeicher 110 und/oder der Prozessor 112 elektrisch und/oder in Datenaustausch miteinander in einer oder mehreren Ausführungsformen verbunden sein.
  • Die serverlose Datenverarbeitungskomponente 102 kann über eine Netzwerkeinheit 116 in Datenaustausch mit einer Datenverarbeitungseinheit 114 stehen. Die Datenverarbeitungseinheit 114 kann eine Hardware-Einheit sein, die einen oder mehrere Prozessoren enthält. Zum Beispiel kann die Datenverarbeitungseinheit eine elektronische Einheit (z.B. eine Unterhaltungselektronikeinheit), eine Netzwerkeinheit, eine Cloud-Einheit (z.B. eine Cloud-Komponente) und/oder ein anderer Typ einer Einheit sein, die mindestens einen Abschnitt einer serverlosen Anwendung ausführen kann. Das Netzwerk 116 kann ein oder mehrere Netzwerke enthalten. Zum Beispiel kann das Netzwerk 116 ein oder mehrere drahtlose Netzwerke und/oder ein oder mehrere drahtgebundene Netzwerke enthalten, einschließlich ein Weitverkehrsnetzwerk (WAN, z.B. das Internet), ein lokales Netzwerk (LAN) und/oder ein Mobilfunknetzwerk. Das Netzwerk 116 kann auch eine oder mehrere Netzwerkeinheiten (z.B. Netzwerk-Hardware, Netzwerkausrüstung, Computervernetzungseinheiten usw.) zum Ermöglichen eines Datenaustauschs und/oder einer Interaktion zwischen mindestens der Datenverarbeitungseinheit 114 und der serverlosen Datenverarbeitungskomponente 102 enthalten.
  • In einer Ausführungsform kann die Schnittstellenkomponente 104 ID-Daten (z.B. ID-DATEN, gezeigt in 1) von einer Datenverarbeitungseinheit 114 empfangen. Zum Beispiel kann die Datenverarbeitungseinheit 114 einen ersten Abschnitt einer serverlosen Anwendung identifizieren, der durch die Datenverarbeitungseinheit 114 erneut gehostet werden soll. Die serverlose Anwendung kann mit einer Funktion als Dienst (FaaS) für einen Benutzer zugeordnet werden, sodass der Benutzer die serverlose Anwendung ohne Kauf oder Anmietung eines Servers oder eine virtuelle Maschine zum Ausführen von Computercode verwenden kann, der der serverlosen Anwendung zugehörig ist. In einem Beispiel kann die serverlose Anwendung durch die serverlose Datenverarbeitungskomponente 102 gespeichert werden (z.B. vom Arbeitsspeicher 110). In einem weiteren Beispiel kann die serverlose Anwendung auf einem Server gespeichert werden, der die serverlose Datenverarbeitungskomponente 102 und/oder eine virtuelle Maschine hostet, die die serverlose Datenverarbeitungskomponente 102 hostet. Die Datenverarbeitungseinheit 114 kann den ersten Abschnitt der serverlosen Anwendung durch Ausführen des Abschnitts der serverlosen Anwendung auf der Datenverarbeitungseinheit 114 erneut hosten, während ein zweiter Abschnitt der serverlosen Anwendung durch die serverlose Datenverarbeitungskomponente 102 (z.B. der Server und/oder die der serverlosen Datenverarbeitungskomponente 102 zugehörige virtuelle Maschine) ausgeführt wird. In einem Aspekt kann die Rewriter-Komponente 106 die serverlose Anwendung umschreiben, um zu gestatten, dass der erste Abschnitt der serverlosen Anwendung durch die Datenverarbeitungseinheit 114 ausgeführt wird und der zweite Abschnitt der serverlosen Anwendung durch die serverlose Datenverarbeitungskomponente 102 ausgeführt wird. Zum Beispiel kann die Rewriter-Komponente 106 die serverlose Anwendung als einen Graph verbundener Aktionen umschreiben (z.B. ein Graph von durch einen Computer ausführbaren Funktionen), die einen Debugging-Prozess für die serverlose Anwendung ohne Kernlaufzeit der serverlosen Anwendung ermöglichen.
  • In einer Ausführungsform kann die Schnittstellenkomponente 104 den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit 114 umleiten, um eine Debugging-Sitzung für den Abschnitt der serverlosen Anwendung zu ermöglichen, die durch die Datenverarbeitungseinheit 114 ausgeführt wird, und/oder um eine Ausführung des Abschnitts der serverlosen Anwendung durch die Datenverarbeitungseinheit 114 zu ermöglichen. Zum Beispiel kann die Schnittstellenkomponente 104 in Reaktion auf eine Bestimmung, dass ein direkter Datenaustausch mit der Datenverarbeitungseinheit 114 möglich ist (z.B. wenn die Datenverarbeitungseinheit 114 eine separate Cloud-Einheit ist, die zum Ausführen von Berechnungen mit langer Laufzeit, die dem ersten Abschnitt der serverlosen Anwendung zugehörig sind, besser geeignet ist), den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit 114 umleiten.
  • In einer anderen Ausführungsform kann die Broker-Komponente 108 den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit 114 umleiten, um eine Debugging-Sitzung für den ersten Abschnitt der serverlosen Anwendung zu ermöglichen, die durch die Datenverarbeitungseinheit 114 ausgeführt wird. Zusätzlich oder alternativ kann die Broker-Komponente 108 den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit 114 umleiten, um die Ausführung des ersten Abschnitts der serverlosen Anwendung durch die Datenverarbeitungseinheit 114 zu ermöglichen. Zum Beispiel kann die Schnittstellenkomponente 104 in Reaktion auf eine Bestimmung, dass eine serverlose Datenverarbeitungsplattform in keinem direkten Datenaustausch mit der Datenverarbeitungseinheit 114 stehen kann (die Datenverarbeitungseinheit 114 ist z.B. keiner Internet-Verbindung zugehörig, über die die serverlose Datenverarbeitungsplattform Daten austauschen kann), den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit 114 umleiten. In einem Aspekt kann ein Benutzer ein Debug-Programm auf der Datenverarbeitungseinheit 114 verwenden, um ein Debugging des ersten Abschnitts der serverlosen Anwendung während der Debugging-Sitzung zu ermöglichen. Nach dem Debugging der ersten Abschnitts der serverlosen Anwendung kann die Datenverarbeitungseinheit 114 eine modifizierte Version des ersten Abschnitts der serverlosen Anwendung (z.B. eine von Fehlern befreite Version des ersten Abschnitts der serverlosen Anwendung) zu der serverlosen Datenverarbeitungskomponente 102 übertragen. Zum Beispiel kann die Schnittstellenkomponente 104 die modifizierte Version des ersten Abschnitts der serverlosen Anwendung von der Datenverarbeitungseinheit 114 empfangen. In einem anderen Aspekt kann die Rewriter-Komponente 106 die modifizierte Version des ersten Abschnitts der serverlosen Anwendung mit dem zweiten Abschnitt der serverlosen Anwendung kombinieren, der durch die serverlose Datenverarbeitungseinheit 102 während der Debugging-Sitzung ausgeführt wird. Daher kann eine aktualisierte serverlose Anwendung mit verbesserter Stabilität, verbesserter Zuverlässigkeit, verbesserter Genauigkeit und/oder verbesserter Qualität bereitgestellt werden.
  • In einer anderen Ausführungsform kann die Datenverarbeitungseinheit 114 den ersten Abschnitt der serverlosen Anwendung während eines Debugging-Prozesses ohne Modifizieren von Kernlaufzeit der serverlosen Anwendung ausführen. Zum Beispiel kann die serverlose Anwendung fortfahren, eine Gruppe von Verarbeitungs-Threads auszuführen, die dem zweiten Abschnitt der serverlosen Anwendung zugehörig sind, während die Datenverarbeitungseinheit 114 den ersten Abschnitt der serverlosen Anwendung ausführt (beispielsweise während die Datenverarbeitungseinheit eine Debugging-Sitzung ausführt, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist). In einem Aspekt kann die serverlose Anwendung eine Gruppe von primitiven Code-Segmenten enthalten, die zum Erstellen von Funktionalität für mindestens das serverlose Programm verwendet werden können. Die Gruppe von primitiven Code-Segmenten kann zum Beispiel eine Gruppe von aufrufbaren Aktionen, die durch das serverlose Programm bereitgestellt werden, ein ausgelöstes Aufrufen von Aktionen durch das serverlose Programm und/oder eine zielgerichtete Bewertung von Aktionen durch das serverlose Programm enthalten. In einem Aspekt kann die serverlose Anwendung als Graph von verbundenen Aktionen behandelt werden, wobei der Graph so umgeschrieben wird, dass Debugging unterstützt wird. In einem Aspekt kann ein Debug-Programm, das von der Datenverarbeitungseinheit 114 ausgeführt wird, eine Kombination einer trampolinartigen Instrumentierung im Stil einer fortgesetzten Übergabe von Funktionsaufruf zur funktionalen Programmierung verwenden. In bestimmten Ausführungsformen kann der erste Abschnitt der serverlosen Anwendung eine erste Funktion in einer Abfolge von Funktionen sein. Die Schnittstellenkomponente 104 kann zum Beispiel die erste Funktion zu der Datenverarbeitungseinheit 114 umleiten. Des Weiteren kann die Rewriter-Komponente 106 eine zweite Funktion vor der ersten Funktion in der Abfolge von Anweisungen generieren. Die Rewriter-Komponente 106 kann auch eine dritte Funktion nach der ersten Funktion in der Abfolge von Anweisungen generieren. Die Rewriter-Komponente 106 kann die zweite Funktion und die dritte Funktion ausführen, nachdem die erste Funktion zu der Datenverarbeitungseinheit umgeleitet wurde (beispielsweise kann die Rewriter-Komponente 106 die zweite Funktion und die dritte Funktion ausführen, während die Datenverarbeitungseinheit 114 eine Debugging-Sitzung ausführt, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist). In bestimmten Ausführungsformen kann die Schnittstellenkomponente 104 Echtzeitdaten empfangen, die auf Grundlage einer Debugging-Sitzung generiert wurden, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist. Ferner kann die Rewriter-Komponente 106 den zweiten Abschnitt der serverlosen Anwendung auf Grundlage der Echtzeitdaten ausführen, die der Debugging-Sitzung zugehörig sind.
  • In noch einer anderen Ausführungsform kann die serverlose Datenverarbeitungskomponente 102 in Kombination mit der Datenverarbeitungseinheit 114 verschiedene Betriebsmodi für ein Debugging der serverlosen Anwendung bereitstellen. Zum Beispiel kann ein erster Modus für ein Debugging der serverlosen Anwendung auf Grundlage von Benutzerdaten ausgeführt werden, die für die Datenverarbeitungseinheit 114 oder eine andere Einheit bereitgestellt werden, die mit der Datenverarbeitungseinheit 114 und/oder der serverlosen Datenverarbeitungskomponente 102 in Datenaustausch steht. Die Benutzerdaten können eine Gruppe von Aktionen enthalten, die dem einen oder den mehreren Verarbeitungspunkten zugehörig sind, die in Beziehung zur serverlosen Anwendung stehen. Zusätzlich oder alternativ können die Benutzerdaten ein manuelles Aufrufen ermöglichen, um einen programmierbaren Operator im Computercode der serverlosen Anwendung aufzurufen. In einem Aspekt kann der erste Modus einen Trampolin-Datenverarbeitungsprozess verwendet, der ein Aufrufsignal von der Datenverarbeitungseinheit 114 zu der serverlosen Datenverarbeitungskomponente 102 weiterleitet (z.B. zu der Broker-Komponente 108). Das Aufrufsignal kann zum Beispiel eine Gruppe von Parametern für einen Aufruf enthalten, um einen programmierbaren Operator im Computercode der serverlosen Anwendung aufzurufen. Das Aufrufsignal kann zusammen mit einem Trigger übertragen werden, der aufgerufen wird, wenn ein von der Datenverarbeitungseinheit 114 ausgeführter Debugging-Prozess abgeschlossen ist. In einem Aspekt kann die Datenverarbeitungseinheit 114 als Debug-Client verwendet werden, der überprüft, dass der Trigger mit Daten (z.B. einem Rückgabewert) für eine von Fehlern befreite Aktion in Reaktion auf eine Bestimmung generiert wird, dass ein von der Datenverarbeitungseinheit 114 ausgeführter Debugging-Prozess abgeschlossen ist. In bestimmten Ausführungsformen kann die Datenverarbeitungseinheit 114 in Reaktion auf eine Bestimmung, dass ein von der Datenverarbeitungseinheit 114 ausgeführter Debugging-Prozess einem Fehler zugehörig ist (z.B. wird ein von der Datenverarbeitungseinheit 114 ausgeführter Debugging-Prozess abnormal beendet), den Trigger mit Daten (z.B. einem Rückgabewert) für eine vorher ausgeführte Aktion (z.B. eine ursprüngliche Aktion) generieren, die dem Debugging-Prozess zugehörig ist.
  • Zusätzlich oder alternativ kann ein zweiter Modus für ein Debugging der serverlosen Anwendung auf Grundlage der Benutzerdaten und Analysedaten ausgeführt werden, die auf Grundlage einer Analyse des ersten Abschnitts der serverlosen Anwendung und/oder der Benutzerdaten generiert wurden. Zum Beispiel kann der zweite Modus eine Gruppe von Aktionen bereitstellen, die dem einen oder den mehreren Verarbeitungspunkten zugehörig sind, die in Beziehung zur serverlosen Anwendung stehen. Ferner kann der zweite Modus auch einen oder mehrere Abschnitte des ersten Abschnitts der serverlosen Anwendung umschreiben, die sich mit der Gruppe von Aktionen überschneiden. In einem Beispiel können die Benutzerdaten mit dem zweiten Modus zum Aufnehmen von Verwendungen gescannt werden, die mit der Gruppe von Aktionen in Beziehung stehen. Wenn eine Verwendungsaufnahme eine Abfolge von Aktionen A1, ..., Ak, ... An ist, wobei Ak die Aktion ist, für die ein Debugging vorgenommen werden soll, kann die Abfolge von Aktionen in eine Abfolge S1 und eine zweite Abfolge S2 geteilt werden. Die erste Abfolge S1 kann A1, ..., T sein, wobei T das Trampolin für Ak ist. Die zweite Abfolge S2 kann C, ..., An sein, wobei C die Fortsetzung für Ak ist.
  • Zusätzlich oder alternativ kann ein dritter Modus für ein Debugging der serverlosen Anwendung auf Grundlage von Echtzeitdaten ausgeführt werden, die der serverlosen Anwendung zugehörig sind. Zum Beispiel können die Echtzeitdaten auf Grundlage einer Ausführung des ersten Abschnitts der serverlosen Anwendung und/oder des zweiten Abschnitts der serverlosen Anwendung generiert werden. Die Echtzeitdaten können zum Beispiel Echtzeitaktivierungen von einem oder mehreren Datenströmen enthalten. In einem Aspekt können ein oder mehrere Datenströme des von der Datenverarbeitungseinheit 114 ausgeführten Debugging-Prozesses auf Grundlage der Echtzeitdaten aktualisiert werden. Zum Beispiel kann ein Abschnitt der serverlosen Anwendung durch unterschiedlichen Computercode ersetzt werden. Desgleichen kann auch eine Abfolge für ein Verbindungspaar (z.B. S1 in dem vorhergehenden Beispiel) ersetzt werden.
  • Zusätzlich oder alternativ kann ein vierter Modus für ein Debugging der serverlosen Anwendung auf Grundlage einer erhöhten Verarbeitungsgeschwindigkeit ausgeführt werden. Zum Beispiel kann der vierte Modus gestatten, dass ein oder mehrere Datenströme des von der Datenverarbeitungseinheit 114 ausgeführten Debugging-Prozesses mit einer erhöhten Verarbeitungsgeschwindigkeit ausgeführt werden (z.B. mit einer annähernd vollen Verarbeitungsgeschwindigkeit für den Debugging-Prozess), währen eine oder mehrere Aktionen so ausgeführt werden, dass alle ausgehenden Anforderungen von dem ersten Abschnitt der serverlosen Anwendung begrenzt werden. Mit dem vierten Modus kann eine Zuteilerroutine D erstellt werden, und die Zuteilerroutine D kann an Stelle von einem oder mehreren Abschnitten der ersten serverlosen Anwendung verwendet werden. Die Zuteilerroutine D kann durch „Abzweigen“ des Aufrufs auf beides, die ursprüngliche Aktion (z.B. oben Ak) und Aufrufen einer anderen Aktion arbeiten, die der ersten serverlosen Anwendung zugehörig ist.
  • Es sollte klar sein, dass die serverlose Datenverarbeitungskomponente 102 (z.B. die Schnittstellenkomponente 104, die Rewriter-Komponente 106 und/oder die Broker-Komponente 108) einen oder mehrere Prozesse ausführt, die der serverlosen Anwendung zugehörig sind, die nicht von einem Menschen ausgeführt werden können (die z.B. die geistigen Fähigkeiten eines einzelnen Menschen übersteigen). Zum Beispiel kann eine Menge von verarbeiteten Daten beim Ausführen von mindestens einem Abschnitt einer serverlosen Anwendung, eine Datenverarbeitungsgeschwindigkeit beim Ausführen von mindestens einem Abschnitt einer serverlosen Anwendung und/oder Typen von Daten, die durch die serverlose Datenverarbeitungskomponente 102 verarbeitet werden (z.B. die Schnittstellenkomponente 104, die Rewriter-Komponente 106 und/oder die Broker-Komponente 108) über einen bestimmten Zeitraum größer, schneller und verschieden von einer Menge, einer Geschwindigkeit und einem Datentyp sein, die von den geistigen Fähigkeiten eines einzelnen Menschen über denselben Zeitraum verarbeitet werden können. Die serverlose Datenverarbeitungskomponente 102 (z.B. die Schnittstellenkomponente 104, die Rewriter-Komponente 106 und/oder die Broker-Komponente 108) kann auch vollständig betriebsfähig für ein Ausführen von einer oder mehreren anderen Funktionen sein (z.B. vollständig eingeschaltet, vollständig ausgeführt usw.), während auch der eine bzw. die oben genannten mehreren Prozesse ausgeführt werden, die einer serverlosen Anwendung zugehörig sind. Des Weiteren kann die von der serverlosen Datenverarbeitungskomponente 102 (z.B. die Schnittstellenkomponente 104, die Rewriter-Komponente 106 und/oder die Broker-Komponente 108) generierte Ausgabe Informationen enthalten, die von einem Benutzer manuell unmöglich erhalten werden können. Zum Beispiel kann eine Menge von Informationen, die durch eine serverlose Anwendung generiert wurden und/oder eine Vielfalt von Informationen, die durch eine serverlose Anwendung generiert wurden, komplexer sein als Informationen, die manuell von einem Benutzer erhalten werden.
  • 2 veranschaulicht ein Blockschaubild eines beispielhaften nicht-einschränkenden Systems 200, das ein erneutes Hosten einer Untergruppe einer serverlosen Anwendung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht. Eine wiederholte Beschreibung von ähnlichen Elementen, die in anderen hierin beschriebenen Ausführungsformen verwendet werden, wird der Kürze halber weggelassen.
  • In verschiedenen Ausführungsformen kann ein System 200 ein serverloses Cloud-Plattformsystem sein. In einem Aspekt kann das System 200 ein System zum erneuten Hosten einer Untergruppe einer serverlosen Anwendung sein. Außerdem kann das System 200 einem Debugging-System, einem serverlosen Datenverarbeitungssystem, einem Protokollanalysesystem (z.B. einem Echtzeitprotokoll-Analysesystem), einem Protokollverwaltungssystem, einem Überwachungssystem, einem operationellen Analysesystem, einem Datenverarbeitungseinheitssystem, einem Anwendungsverwaltungssystem, einem Serversystem, einem Netzwerksystem, einem Websystem, einem On-Premise-System, einem Maschinenlernsystem, einem System künstlicher Intelligenz und/oder einem anderen Typ von System zugehörig sein, mit einem solchen verwendet werden oder in einem solchen enthalten sein. Das System 200 kann Hardware und/oder Software zum Lösen von Problemen hochtechnischer Natur verwenden, die nicht abstrakt sind und die nicht als ein Satz geistiger Tätigkeiten durch einen Menschen ausgeführt werden können. Ferner können einige der ausgeführten Prozesse durch einen speziellen Computer (z.B. einen speziellen Computer mit einer serverlosen Datenverarbeitungskomponente) zum Ausführen definierter Aufgaben, die in Bezug zu Arbeitsspeicheroperationen stehen, ausgeführt werden. Das System 200 und/oder Komponenten des Systems können verwendet werden, um neue Probleme zu lösen, die durch technologische Fortschritte, Verwendung von Datenverarbeitungseinheiten, Verwendung einer Cloud-Plattform, Debugging von serverlosen Anwendungen, Ausführung von serverlosen Anwendungen und/oder Computerarchitektur und dergleichen auftreten. Eine oder mehrere Ausführungsformen des Systems 200 können technische Verbesserungen für serverlose Cloud-Plattformsysteme, Debugging-Systeme, Protokollanalysesysteme (z.B. Echtzeitprotokoll-Analysesysteme), Protokollverwaltungssysteme, Überwachungssysteme, operationelle Analysesysteme, Datenverarbeitungseinheitssysteme, Anwendungsverwaltungssysteme, Serversysteme, Netzwerksysteme, Websysteme, On-Premise-Systeme, Maschinenlernsysteme, Systeme künstlicher Intelligenz usw. bereitstellen. Eine oder mehrere Ausführungsformen des Systems 200 können auch technische Verbesserungen für eine Datenverarbeitungseinheit durch Verbessern der Debugging-Fähigkeiten der Datenverarbeitungseinheit bereitstellen.
  • In der in 2 gezeigten Ausführungsform kann das System 200 die serverlose Datenverarbeitungskomponente 102 und die Datenverarbeitungseinheit 114 enthalten. Wie in 2 gezeigt, kann die Datenverarbeitungseinheit 114 eine Identifizierungskomponente 202 und eine Debugging-Komponente 204 enthalten. Außerdem kann die serverlose Datenverarbeitungskomponente 102 in bestimmten Ausführungsformen die Schnittstellenkomponente 104, die Rewriter-Komponente 106 und die Broker-Komponente 108 enthalten. Aspekte der Datenverarbeitungseinheit 114 können eine oder mehrere durch eine Maschine ausführbare Komponenten bilden, die in der oder den Maschinen verkörpert sind, z.B. in einem oder mehreren computerlesbaren Medien verkörpert, die einer oder mehreren Maschinen zugehörig sind. Wenn eine oder mehrere derartige Komponenten durch die eine oder die mehreren Maschinen, z.B. Computer, Datenverarbeitungseinheiten, virtuellen Maschinen usw. ausgeführt werden, können sie die Maschine bzw. Maschinen veranlassen, die beschriebenen Operationen auszuführen. In einem Aspekt kann die Datenverarbeitungseinheit 114 auch einen Arbeitsspeicher 206 enthalten, der vom Computer ausführbare Komponenten und Anweisungen speichert. Des Weiteren kann die Datenverarbeitungseinheit 114 einen Prozessor 208 zum Ermöglichen der Ausführung der Anweisungen (z.B. vom Computer ausführbare Komponenten und entsprechende Anweisungen) durch die Datenverarbeitungseinheit 114 enthalten. Wie gezeigt, können die Identifizierungskomponente 202, die Debugging-Komponente 204, der Arbeitsspeicher 206 und/oder der Prozessor 208 elektrisch und/oder in Datenaustausch in einer oder mehreren Ausführungsformen miteinander verbunden sein.
  • Die Identifizierungskomponente 202 kann die ID-Daten generieren, die den ersten Abschnitt der serverlosen Anwendung identifizieren, der durch die Datenverarbeitungseinheit 114 erneute gehostet werden soll. Zum Beispiel kann die Identifizierungskomponente 202 den ersten Abschnitt der serverlosen Anwendung auf Grundlage von historischen Daten identifizieren, die für vorher durch die serverlose Anwendung generierte Ausgabedaten indikativ sind. Zusätzlich oder alternativ kann die Identifizierungskomponente 202 den ersten Abschnitt der serverlosen Anwendung auf Grundlage von Metadaten identifizieren, die der serverlosen Anwendung zugehörig sind. Zusätzlich oder alternativ kann die Identifizierungskomponente 202 den ersten Abschnitt der serverlosen Anwendung auf Grundlage von Benutzerdaten identifizieren, die durch einen Benutzer bereitgestellt werden, der der Datenverarbeitungseinheit 114 oder einer anderen Einheit zugehörig ist.
  • Die Debugging-Komponente 204 kann einen Debugging-Prozess ausführen, der dem ersten Abschnitt der serverlosen Anwendung zugehörig ist. Zum Beispiel kann die Debugging-Komponente 204 den ersten Abschnitt der serverlosen Anwendung auf Grundlage einer Debug-Anwendung ausführen. In einer Ausführungsform kann die Debugging-Komponente 204 den ersten Abschnitt der serverlosen Anwendung über das Netzwerk 116 von der serverlosen Datenverarbeitungseinheit 102 empfangen. Zusätzlich oder alternativ kann die Debugging-Komponente 204 eine modifizierte Version des ersten Abschnitts der serverlosen Anwendung auf Grundlage des Debugging-Prozesses generieren. Die Debugging-Komponente 204 kann auch die modifizierte Version des ersten Abschnitts der serverlosen Anwendung über das Netzwerk 116 zu der serverlosen Datenverarbeitungskomponente 102 übertragen. Zusätzlich oder alternativ kann die Debugging-Komponente 204 Echtzeitdaten generieren, die der Debugging-Sitzung zugehörig sind. Die Echtzeitdaten können Ausgabedaten sein, die durch den Debugging-Prozess generiert wurden und/oder statistische Daten, die dem Debugging-Prozess zugehörig sind. Die Echtzeitdaten können auch einen oder mehrere Fehler identifizieren, die dem ersten Abschnitt der serverlosen Anwendung zugehörig sind. Die Debugging-Komponente 204 kann auch die Echtzeitdaten über das Netzwerk 116 zu der serverlosen Datenverarbeitungskomponente 102 übertragen. In einem Aspekt kann die Debugging-Komponente 204 die Debugging-Sitzung, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, ungefähr gleichzeitig mit einer Ausführung des zweiten Abschnitts der serverlosen Anwendung durch die serverlose Datenverarbeitungskomponente 102 ausführen (z.B. ein Server oder ein serverloses Datenverarbeitungssystem, das der serverlosen Datenverarbeitungskomponente 102 zugehörig ist).
  • Es sollte klar sein, dass die Datenverarbeitungseinheit 114 (z.B. die Identifizierungskomponente 202 und/oder die Debugging-Komponente 204) einen Debugging-Prozess ausführt, der mindestens einem Abschnitt einer serverlosen Anwendung zugehörig sind, die nicht von einem Menschen ausgeführt werden kann (der z.B. die geistigen Fähigkeiten eines einzelnen Menschen übersteigt). Zum Beispiel kann eine Menge von Daten, die beim Ausführen eines Debugging-Prozesses verarbeitet werden, der mindestens einem Abschnitt einer serverlosen Anwendung zugehörig ist, eine Datenverarbeitungsgeschwindigkeit beim Ausführen eines Debugging-Prozesses, der mindestens einem Abschnitt einer serverlosen Anwendung zugehörig ist, und/oder Typen von Daten, die durch die Datenverarbeitungseinheit 114 verarbeitet werden (z.B. die Identifizierungskomponente 104 und/oder die Debugging-Komponente 204) über einen bestimmten Zeitraum größer, schneller und verschieden von einer Menge, einer Geschwindigkeit und einem Datentyp sein, als von den geistigen Fähigkeiten eines einzelnen Menschen über denselben Zeitraum verarbeitet werden können. Die Datenverarbeitungseinheit 114 (z.B. die Identifizierungskomponente 202 und/oder die Debugging-Komponente 204) kann auch vollständig betriebsfähig für ein Ausführen von einer oder mehreren anderen Funktionen sein (z.B. vollständig eingeschaltet, vollständig ausgeführt usw.), während auch der eine bzw. die mehreren oben genannten Prozesse ausgeführt werden, die einer serverlosen Anwendung zugehörig sind. Des Weiteren kann die von der Datenverarbeitungseinheit 114 (z.B. die Identifizierungskomponente 202 und/oder die Debugging-Komponente 204) generierte Ausgabe Informationen enthalten, die von einem Benutzer manuell unmöglich erhalten werden können. Zum Beispiel kann eine Menge von Informationen, die durch einen Debugging-Prozess generiert wurden und/oder eine Vielfalt von Informationen, die durch einen Debugging-Prozess generiert wurden, komplexer sein als Informationen, die von einem Benutzer manuell erhalten wurden.
  • 3 veranschaulicht ein Blockschaubild eines beispielhaften nicht-einschränkenden Systems 300, das ein erneutes Hosten einer Untergruppe einer serverlosen Anwendung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht. Eine wiederholte Beschreibung von ähnlichen Elementen, die in anderen hierin beschriebenen Ausführungsformen verwendet werden, wird der Kürze halber weggelassen.
  • Das System 300 kann die Datenverarbeitungseinheit 114 und einen Server 302 enthalten. Die Datenverarbeitungseinheit 114 kann über die Netzwerkeinheit 116 in Datenaustausch mit dem Server 302 stehen. In einer Ausführungsform kann der Server 302 die serverlose Datenverarbeitungskomponente 102 enthalten. In einer alternativen Ausführungsform kann die serverlose Datenverarbeitungskomponente 102 auf einem anderen Server umgesetzt werden, der mit dem Server 302 in Datenaustausch steht.
  • Das System 300 kann eine serverlose Plattform sein, die ein hybrides Ausführungsmodell aktivieren kann, in dem nur Abschnitte einer serverlosen Anwendung, für die ein Debugging ausgeführt werden soll, über Debug-Pfade bereitgestellt werden, die der Datenverarbeitungseinheit 114 zugehörig sind, während ein Rest der serverlosen Anwendung durch eine Cloud-Plattform ausgeführt wird, die dem Server 302 zugehörig ist. Es ist daher möglich, Eigenschaften einer serverlosen Plattform zu verwenden (z.B. Eigenschaften, die normalerweise zum Schreiben von serverlosen Anwendungen verwendet würden), um eine oder mehrere Funktionen der serverlosen Anwendung auszuschneiden und zum Debugging in die Datenverarbeitungseinheit 114 auszulagern. Die Datenverarbeitungseinheit 114 kann zum Beispiel ein Auslagerungsziel für eine serverlose Anwendung sein. Wie hierin verwendet, kann ein „Auslagerungsziel“ eine Maschine sein, auf der eine Debugging-Sitzung für eine serverlose Anwendung ausgeführt wird. In bestimmten Ausführungsformen kann eine serverlose Debugroutine als serverlose Anwendung geschrieben werden. Außerdem kann einem Benutzer durch Auslagerung von einer oder mehreren Funktionen einer serverlosen Anwendung aus einer Cloud-Plattform, die dem Server 302 zugehörig ist, eine native Debugging-Praxis über die Datenverarbeitungseinheit 114 angeboten werden. Wenn zum Beispiel eine Funktion einer dem Server 302 zugehörigen serverlosen Anwendung in einer bestimmten Programmiersprache geschrieben ist, kann ein Benutzer einer der Datenverarbeitungseinheit 114 zugehörigen Debugroutine eine native Debugroutine oder eine andere vom Benutzer bevorzugte Debugroutine verwenden. Wie hierin verwendet, kann eine „Funktion“ Computercode sein, der in Reaktion auf ein Ereignis ausgeführt wird. In bestimmten Ausführungsformen kann eine Funktion eine Eingabe in Form eines Argumenttupels (x1,...,xn) empfangen und ein Ergebnistupel (r1,...,rm) zurückgeben. Die Ausführung einer Funktion kann auch eine Abfolge von Protokolldatensätzen (l1,...,lt) erzeugen, die von dem Rückgabewert getrennt ist, der durch die Funktion generiert wird. Wenn eine serverlose Anwendung in einem nicht-einschränkenden Beispiel eine Ausgabe einer bestimmten Funktion a für f bereitstellt und eine Ausgabe von f für eine andere Funktion b bereitstellt, kann eine Funktionsabfolge a→f→b als Funktionsabfolge betrachtet werden. Ferner kann ein Ergebnis einer Abfolge als Ergebnis der abschließenden Funktion in der Funktionsabfolge betrachtet werden. Wenn in einem anderen nicht-einschränkenden Beispiel die Ausführung von f so programmiert ist, dass sie durch ein Ereignis e ausgelöst wird, kann e↦f als eine Regel betrachtet werden, und f kann als eine durch ein Ereignis ausgelöste Aktion betrachtet werden.
  • In bestimmten Ausführungsformen kann eine Untergruppe einer serverlosen Anwendung einer serverlosen Plattform auf der Datenverarbeitungseinheit 114 erneut gehostet werden. Zum Beispiel kann ein erster Abschnitt 304a einer serverlosen Anwendung 304 durch die Datenverarbeitungseinheit 114 ausgeführt werden, und ein zweiter Abschnitt 304b der serverlosen Anwendung 304 kann durch den Server 302 und/oder die serverlose Datenverarbeitungskomponente 102 ausgeführt werden. Der erste Abschnitt 304a der serverlosen Anwendung 304 kann zum Beispiel ein Abschnitt der serverlosen Anwendung 304 sein, für den durch die Datenverarbeitungseinheit 114 ein Debugging vorgenommen werden soll. Zum Beispiel kann der erste Abschnitt 304a der serverlosen Anwendung 304 zu Debugging-Zwecken verwendet werden. Außerdem kann der erste Abschnitt 304a der serverlosen Anwendung 304 in einer alternativen Datenverarbeitungsumgebung ausgeführt werden (z.B. kann der erste Abschnitt 304a der serverlosen Anwendung 304 durch die Datenverarbeitungseinheit 114 ausgeführt werden, und der zweite Abschnitt 304b der serverlosen Anwendung 304 kann durch den Server 302 ausgeführt werden) in Reaktion auf eine Bestimmung, dass der erste Abschnitt 304a der serverlosen Anwendung 304 nicht für eine Ausführung durch eine bestimmte serverlose Plattform geeignet ist (z.B. der Server 302).
  • In einem nicht-einschränkenden Beispiel kann die Datenverarbeitungseinheit 114 eine Funktion f als von Fehlern befreit identifizieren. Beim Debugging der Funktion f über die Datenverarbeitungseinheit 114 können grundlegende Eingabe-Ausgabe-Erwartungen des Servers 302 beibehalten werden. Wenn die Funktion f daher (r1,...,rm) zurückgibt und ein Protokoll (l1,...,lt) generiert, wenn sie durch den Server 302 ausgeführt wird, kann die von Fehlern befreite Version der Funktion f, die durch die Datenverarbeitungseinheit 114 ausgeführt wird, fähig sein, identische Ergebnisse zu erzeugen. Wenn die Funktion f ferner zu anderen Konstrukten beiträgt, die durch den Server 302 ausgeführt werden, können die anderen Konstrukte die Ausführung über den Server 302 so fortsetzen, als ob keine Debugging-Sitzung in Bearbeitung wäre. Wenn die Funktion f zum Beispiel als Teil einer Abfolge von Funktionsbewertungen ausgeführt wirda→f→b, oder wenn die Funktion f eine durch ein Ereignis ausgelöste Aktion ist (z.B. e↦f), können beide Konstrukte so oft und mit denselben Ergebnissen ausgeführt werden, als ob für die Funktion f kein Debugging vorgenommen würde.
  • In einer Ausführungsform können die Datenverarbeitungseinheit 114 und der Server 302 zusammen als eine serverlose Ausführungsumgebung umgesetzt werden. In einem Aspekt kann die serverlose Ausführungsumgebung eine Gruppe von primitiven Operationen unterstützen, die einer Erstellung einer eigenständigen Funktion zugehörig sind (z.B. einer Subroutine, die nicht mit einem Auslöseereignis verknüpft ist). Des Weiteren kann die serverlose Ausführungsumgebung die Erstellung eines durch eine Anwendung definierten parametrisierten Triggers ermöglichen. Die serverlose Ausführungsumgebung kann auch eine programmgestützte Erstellung und Zerstörung einer Ereignisquelle ermöglichen. Daher kann eine Gruppe von Themen ad hoc erweitert oder verkleinert werden. Außerdem kann die serverlose Plattform ein programmgestütztes Initialisieren dieser Trigger unterstützen. Parameter, die an die programmgestützte Initialisierung eines Ereignisses übergeben werden, können als Eingabe in eine Gruppe von durch ein Ereignis ausgelöste Aktionen übergeben werden, die dem Trigger zugehörig sind. Außerdem kann die serverlose Ausführungsumgebung die Erstellung einer benutzerdefinierten Regel ermöglichen, die einen derartigen durch eine Anwendung definierter Trigger mit der Ausführung einer Funktion verknüpft. Die serverlose Ausführungsumgebung kann auch ein Einbinden einer Unterstützungsfunktion ermöglichen, um ein Klonen von Code zu vermeiden. In einem Aspekt kann die serverlose Ausführungsumgebung eine zielgerichtete Form einer teilweisen Bewertung unterstützen, wobei eine Funktion f(x1,x2,...,xn) an einen neuen Namen g gebunden werden kann, sodass g(x2,...,xn) = f(x1). Daher können Gefahren wie beispielsweise Code-Abweichung minimiert und/oder die Leistung einer serverlosen Anwendung kann erhöht werden.
  • In einer anderen Ausführungsform kann die Datenverarbeitungseinheit 114 einen Anbindungsprozess während der Ausführung des ersten Abschnitts 304a der serverlosen Anwendung 304 verwenden, um die Ausführung der Funktion f in einem Kontext zu gestatten, dem nur x2,...,xn bekannt ist. Wenn zum Beispiel ein Debugging-Prozess, der dem ersten Abschnitt 304a der serverlose Anwendung 304 zugehörig ist, einen zusätzlichen Parameter x1 erfordert, um den Abschluss des Debugging-Prozesses zu ermöglichen, kann eine Anbindung die Erstellung einer Funktion g gestatten, die sich als die Funktion f maskieren kann, ohne den ersten Abschnitt 304a der serverlosen Anwendung 304 klonen und modifizieren zu müssen. In einer anderen Ausführungsform kann der erste Abschnitt 304a der serverlosen Anwendung 304 eine einzelne Funktion der serverlosen Anwendung 304 sein. Daher kann die einzelne Funktion der serverlosen Anwendung 304 aus dem Server 302 extrahiert werden und kann auf der Datenverarbeitungseinheit 114 ausgeführt werden (z.B. kann die einzelne Funktion der serverlosen Anwendung 304 auf einer Maschine ausgeführt werden, die von einer serverlosen Ausführungsplattform getrennt ist). In einem Beispiel kann eine Gruppe von Konstrukten aus der einzelnen Funktion erstellt werden. Die Gruppe von Konstrukten kann die einzelne Funktion unter Verwendung einer fortgesetzten Übergabe umsetzen. Dies kann einen Debugging-Prozess gestatten, der durch die Datenverarbeitungseinheit 114 ausgeführt wird, um die Ausführung der einzelnen Funktion ohne eine oder mehrere andere Verarbeitungsfunktionalitäten in der serverlosen Ausführungsplattform auszusetzen.
  • 4 veranschaulicht ein beispielhaftes nicht-einschränkendes System 400, das eine Debugging-Sitzung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht. Eine wiederholte Beschreibung von ähnlichen Elementen, die in anderen hierin beschriebenen Ausführungsformen verwendet werden, wird der Kürze halber weggelassen.
  • Das System 400 enthält die Schnittstellenkomponente 104, die Rewriter-Komponente 106, die Broker-Komponente 108 und die Datenverarbeitungseinheit 114. Die Schnittstellenkomponente 104, die Rewriter-Komponente 106 und die Broker-Komponente 108 können einer serverlosen Cloud-Computing-Plattform zugehörig sein. Die Datenverarbeitungseinheit 114 kann einer Client-Plattform zugehörig sein. Die Rewriter-Komponente 106 kann eine Trigger-Komponente 402, eine Proxy-Komponente 404, eine Protokollkomponente 406 und/oder eine Fehlerbedingungskomponente 408 enthalten. Die Trigger-Komponente 402, die Proxy-Komponente 404, die Protokollkomponente 406 und/oder die Fehlerbedingungskomponente 408 können die Ausführung einer Debugging-Sitzung 410 ermöglichen, die durch die Datenverarbeitungseinheit 114 ausgeführt wird. In der in 4 gezeigten Ausführungsform kann das System 400 einen Prozessablauf für eine erfolgreiche Debug-Sitzung in Bezug auf die serverlose Cloud-Computing-Plattform gemäß einer oder mehreren hierin beschriebenen Ausführungsformen veranschaulichen. In einer in 4 gezeigten alternativen Ausführungsform kann das System 400 einen Prozessablauf für einen Abbruch einer Debug-Sitzung in Bezug auf die serverlose Cloud-Computing-Plattform veranschaulichen.
  • In einer Ausführungsform kann die Datenverarbeitungseinheit 114 mit der Rewriter-Komponente 106 über einen Vermittlungsdatenaustausch in Datenaustausch stehen, der über die Schnittstellenkomponente 104 und/oder die Broker-Komponente 108 ermöglicht wird. Zum Beispiel kann die Rewriter-Komponente 106 indirekt mit der Datenverarbeitungseinheit 114 in Datenaustausch stehen. In einem Aspekt kann die Debugging-Sitzung 410 auf der Datenverarbeitungseinheit 114 über eine Debug-Anwendung ausgeführt werden, die auf der Datenverarbeitungseinheit 114 umgesetzt ist. Die Debugging-Sitzung 410 kann zum Beispiel den ersten Abschnitt 304a der serverlosen Anwendung 304 ausführen. In einem anderen Aspekt kann die Broker-Komponente 108 ein Dienst-Broker zum Ermöglichen eines Datenaustauschs zwischen der Rewriter-Komponente 106 und der Datenverarbeitungseinheit 114 sein. In einem Beispiel kann die Broker-Komponente 108 ein Tunnelungsservice eines virtuellen privaten Netzes (VPN) (z.B. ein Commodity-VPN-Dienst) zum Ermöglichen eines Datenaustauschs zwischen der Rewriter-Komponente 106 und der Datenverarbeitungseinheit 114 sein. Daher kann ein sicherer Tunnel zwischen der Rewriter-Komponente 106 und der Datenverarbeitungseinheit 114 bereitgestellt werden. Ein Installationsschritt kann auf der Datenverarbeitungseinheit 114 zum Erlangen von einer oder mehreren VPN-Berechtigungen für den sicheren Tunnel zwischen der Rewriter-Komponente 106 und der Datenverarbeitungseinheit 114 ausgeführt werden. In bestimmten Ausführungsformen kann das Erlangen der einen oder der mehreren VPN-Berechtigungen über einen Cloud-Dienst erreicht werden, der Anforderungen überwacht, zum Beispiel Auslagerungsziel-Registrierungsanforderungen, Debug-Initiierungsanforderungen mit vorausgehendem Verbindungswechsel usw. Die Anforderungen können beispielsweise mit vorher vorhandenen Berechtigungen für eine serverlosen Plattform einer Benutzeridentität einhergehen, die der Datenverarbeitungseinheit 114 zugehörig ist. Des Weiteren kann die Broker-Komponente 108 die eine oder die mehreren VPN-Berechtigungen verwenden, um die Rewriter-Komponente 106 und die Datenverarbeitungseinheit 114 sicher miteinander zu verbinden. In bestimmten Ausführungsformen, in denen auf die Datenverarbeitungseinheit 114 von der Rewriter-Komponente 106 direkt zugegriffen werden kann, kann die Datenverarbeitungseinheit 114 jedoch den Datenaustausch direkt mit der Rewriter-Komponente 106 initiieren (z.B. ohne die Broker-Komponente 108 zu verwenden).
  • In einer Ausführungsform kann eine Gruppe von Artefakten (z.B. eine Gruppe von Ressourcen) von der Rewriter-Komponente 106 auf Grundlage des ersten Abschnitts 304a der serverlosen Anwendung 304 generiert werden (z.B. eine oder mehrere Funktionen der serverlosen Anwendung), für die ein Debugging durch die Datenverarbeitungseinheit 114 erfolgt. Die Gruppe von Artefakten kann zum Beispiel ein erstes Artefakt enthalten, das von der Trigger-Komponente 402 generiert wurde. Das erste Artefakt kann sich auf einen Trigger „Bei Abschluss“ T beziehen, der von der Trigger-Komponente 402 generiert wird. Zum Beispiel kann eine fehlerbefreite Funktion (z.B. wenn eine Debugging-Sitzung abgeschlossen ist) auf Grundlage des Triggers „Bei Abschluss“ T generiert werden, der von der Trigger-Komponente 402 generiert wird. Die fehlerbefreite Funktion kann Protokolldatensätze (l1,...,lt) enthalten und kann ein Ergebnis (r1,...,rm) zurückgeben. Der Trigger „Bei Abschluss“ T, der von der Trigger-Komponente 402 generiert wird, kann als T(r1,...,rt,l1,...,lt) generiert und ausgeführt werden.
  • Zusätzlich oder alternativ kann die Gruppe von Artefakten ein zweites Artefakt enthalten, das von der Proxy-Komponente 404 generiert wird. Das zweite Artefakt kann sich auf eine vorausgehende Verbindungswechselfunktion U beziehen, die von der Proxy-Komponente 404 generiert wird. Die vorausgehende Verbindungswechselfunktion U kann als Proxy zwischen dem Server 302 und der Datenverarbeitungseinheit 114 wirken. Wenn zum Beispiel eine einzelne Funktion f den Typ (x1,...,xn)↦(r1,...,rm) aufweist, kann die vorausgehende Verbindungswechselfunktion U den Typ (T,f,x1,...,xn)↦(r1,...,rm) aufweisen. Die vorausgehende Verbindungswechselfunktion U kann eine serverlose Funktion sein, die auf Grundlage des Triggers „Bei Abschluss“ T und des ersten Abschnitts 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) eine Quelle für den ersten Abschnitt 304a der serverlosen Anwendung 304 erlangen kann. Die vorausgehende Verbindungswechselfunktion U kann auch Computercode, den Trigger „Bei Abschluss“ T und oder eine Gruppe von Parametern (x1,...,xn) an die Datenverarbeitungseinheit 114 senden. In einem Aspekt kann die vorausgehende Verbindungswechselfunktion U für die Datenverarbeitungseinheit 114 so dargestellt werden, als wäre sie die einzelne Funktion f, indem ein Grenzformat Uf= U(T,f) erstellt wird. Auf diese Weise kann das Grenzformat Uf der vorausgehenden Verbindungswechselfunktion U und des ersten Abschnitts 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) eine Signatur entsprechenden Typs enthalten und kann somit als eine Gruppe von Konstrukten verwendet werden (z.B. eine Abfolge oder eine Gruppe von Regeln), die den ersten Abschnitt 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) verwenden.
  • Zusätzlich oder alternativ kann die Gruppe von Artefakten ein drittes Artefakt enthalten, das von der Protokollkomponente 406 generiert wird. Das dritte Artefakt kann sich auf eine nachfolgende Verbindungswechselfunktion D beziehen, die von der Protokollkomponente 406 generiert wird. Um zu gestatten, dass der zweite Abschnitt 304b der serverlosen Anwendung 304 so ausgeführt wird, als würde für den ersten Abschnitt 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) von der Datenverarbeitungseinheit 114 kein Debugging ausgeführt, kann das dritte Artefakt durch die Protokollkomponente 406 generiert werden. Das dritte Artefakt kann den Abschluss der Ausführung des ersten Abschnitts 304a der serverlosen Anwendung 304 (z.B. der einzelnen Funktion f) darstellen. Somit können alle nachfolgenden Abfragen von Ergebnissen oder Protokolldatensätzen für Aufrufe des ersten Abschnitts 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) sachgemäß bedient werden. Wenn von dem ersten Abschnitt 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) (r1,...,rm) zurückgegeben wird und Protokolldatensätze (l1,...,lt) erstellt werden, kann die nachfolgende Verbindungswechselfunktion D gleich D(r1,...,rm,l1,...,ft) sein. Des Weiteren kann die nachfolgende Verbindungswechselfunktion D Werte zurückgeben oder protokollieren. die (r1,...,rm,l1,...,lt) zugehörig sind. Zusätzlich oder alternativ kann die Gruppe von Artefakten ein viertes Artefakt enthalten, das von der Protokollkomponente 406 generiert wird. Das vierte Artefakt kann sich auf eine Fortsetzungsregel R beziehen, die von der Protokollkomponente 406 generiert wird.
  • Die Fortsetzungsregel R kann den Server 302 anweisen, die nachfolgende Verbindungswechselfunktion D über T↦D in eine durch ein Ereignis ausgelöste Aktion zu verwandeln, wobei die durch ein Ereignis ausgelöste Aktion einem Ereignis zugehörig ist, das in Beziehung zur Debugging-Sitzung 140 steht.
  • Zusätzlich oder alternativ kann die Gruppe von Artefakten ein fünftes Artefakt enthalten, das von der Fehlerbedingungskomponente 408 generiert wird. Das fünfte Artefakt kann sich auf eine Trennschalterfunktion C beziehen, die von der Fehlerbedingungskomponente 408 generiert wird. In bestimmten Ausführungsformen kann das fünfte Artefakt für einen Ausführungspfad erstellt werden, der einem Fehler zugehörig ist, der in Beziehung zur Debugging-Sitzung 410 steht. Zum Beispiel kann die Datenverarbeitungseinheit 114 die Debugging-Sitzung 410 vorzeitig verlassen, bevor der erste Abschnitt 304a der serverlosen Anwendung 304, für den ein Debugging vorgenommen wird, abgeschlossen wurde. In einem anderen Beispiel kann die Datenverarbeitungseinheit 114 in einer Debugroutine, die der Debugging-Sitzung 410 zugehörig ist, den ersten Abschnitt 304a der serverlosen Anwendung 304 so modifizieren, dass die Debugging-Sitzung die Ausführung des ersten Abschnitts 304a der serverlosen Anwendung 304 nicht erfolgreich abschließt. In noch einem weiteren Beispiel kann ein Fehler in einem Auslagerungsprozess vorliegen, der der Debugging-Sitzung 410 zugehörig ist, die den ersten Abschnitt 304a der serverlosen Anwendung 304 ausführt. In jedem derartigen Fall kann die Datenverarbeitungseinheit 114 eine oder mehrere Aktionen ausführen, um einen Anschein einer korrekten Ausführung des ersten Abschnitts 304a der serverlosen Anwendung 304 zu wahren, dergestalt, dass die serverlose Cloud-Computing-Plattform bestimmt, dass der erste Abschnitt 304a der serverlosen Anwendung 304 sachgemäß ausgeführt wurde. Zum Beispiel kann die Trennschalterfunktion C erstellt werden, die analog zu der vorausgehenden Verbindungswechselfunktion U als Eingabe den Trigger „Bei Abschluss“ T, den ersten Abschnitt 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) und eine Gruppe von Argumenten (x1,...,xn) nimmt. Die Trennschalterfunktion C kann programmgestützt den ersten Abschnitt 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion) f) gegen die Gruppe von Argumenten (x1,...,xn) aufrufen. Die Trennschalterfunktion C kann auch den Trigger „Bei Abschluss“ T mit der Ausgabe des ersten Abschnitts 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) ausführen. In Reaktion auf die Erkennung einer Fehlerbedingung kann die Datenverarbeitungseinheit 114 das fünfte Artefakt aufrufen, das in Beziehung zu der Trennschalterfunktion C steht.
  • In bestimmten Ausführungsformen kann die vorausgehende Verbindungswechselfunktion U die Datenverarbeitungseinheit 114 über eine angeforderte Debugging-Sitzung benachrichtigen. Die Datenverarbeitungseinheit 114 kann den Trigger „Bei Abschluss“ T in eine Funktionsquelle für den ersten Abschnitt 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) einfügen. Die Datenverarbeitungseinheit 114 kann auch eine Debug-Anwendung für die Debugging-Sitzung 410 bestimmen und/oder kompilieren, die fähig ist, den ersten Abschnitt 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) zu bearbeiten. Zum Einfügen des Triggers „Bei Abschluss“ T in den ersten Abschnitt 304a der serverlosen Anwendung 304 (z.B. die einzelne Funktion f) kann die Datenverarbeitungseinheit 114 einen Algorithmus für einen Trigger „Bei Abschluss“ ausführen. In einem Beispiel, in dem eine dem ersten Abschnitt 304a der serverlosen Anwendung zugehörige Funktion f aufgerufen wird, der Trigger „Bei Abschluss“ T aufgerufen wird, und die Funktion f in einer bestimmten Programmiersprache geschrieben ist, kann der Algorithmus des Auslagerungsziels den folgenden Computercode generieren:
       // intercept logging calls
       var logs = [];
       var log = console.log;
       console.log = message => logs.push(message);
       var result = f(x_1, ..., x_n);
       fire(T, { result: result, logs: logs });
  • Der Initialisierungsbefehl „fire()“ kann den Datenaustausch mit dem Server 302 ermöglichen, um einen bestimmten Trigger mit einem bestimmten Datensatz zu initialisieren. Die nachfolgende Verbindungswechselfunktion D kann generiert werden, um die Interpretation eines bestimmten Ergebnisses und einer Gruppe von Protokolldatensätzen zu ermöglichen. Nach dem Einfügen können der Trigger „Bei Abschluss“ T, ein Compiler und eine Debugroutine, die der Debugging-Sitzung 410 auf der Datenverarbeitungseinheit 114 zugehörig ist, einen Aufruf der Funktion f bestimmen. Wenn zum Beispiel der erste Abschnitt 304a der serverlosen Anwendung 304 in einer bestimmten Programmiersprache geschrieben ist, kann die Datenverarbeitungseinheit 114 einen Compiler für die bestimmte Programmiersprache verwenden, um den ersten Abschnitt 304a der serverlosen Anwendung 304 zu kompilieren und anschließend eine Debugroutine für die bestimmte Programmiersprache aufzurufen. Um zu bestimmen, ob die Trennschalterfunktion C aufgerufen werden soll, kann die Datenverarbeitungseinheit 114 den Compiler und die der Debugging-Sitzung 410 zugehörige Debugroutine auf bestimmte Aktivitäten überwachen (z.B. unerwartetes Verlassen eines Debugging-Prozesses, vorzeitiges Verlassen eines Debugging-Prozesses usw.).
  • 5 veranschaulicht ein beispielhaftes nicht-einschränkendes System 500, das eine Debugging-Sitzung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ermöglicht. Eine wiederholte Beschreibung von ähnlichen Elementen, die in anderen hierin beschriebenen Ausführungsformen verwendet werden, wird der Kürze halber weggelassen.
  • In der in 5 gezeigten Ausführungsform veranschaulicht das System 500 ein Debugging in Bezug auf eine Funktionsabfolge A→B→C. Zum Beispiel können die von der Datenverarbeitungseinheit 114 generierten ID-Daten eine Funktion B identifizieren, für die über die Debugging-Sitzung 410 der Datenverarbeitungseinheit 114 ein Debugging vorgenommen werden soll. Die Funktion B kann mindestens einer Funktion A und einer Funktion C zugehörig sein. Zum Beispiel kann die Funktion B in einer Funktionsabfolge vorhanden sein, wobei Funktion A Informationen für Funktion B bereitstellt und Funktion B Daten für Funktion C bereitstellt. Daher kann die Rewriter-Komponente 106 die Funktion B für die Datenverarbeitungseinheit 114 bereitstellen, damit sie durch die Datenverarbeitungseinheit 114 ausgeführt wird, während die Funktion A und die Funktion B von der serverlosen Cloud-Computing-Plattform ausgeführt werden (z.B. die serverlose Cloud-Computing-Plattform, die dem Server 302 zugehörig ist).
  • Ein Begrenzen der Auslagerung, die der Datenverarbeitungseinheit 114 zugehörig ist, auf die Funktion B statt einer Auslagerung der Funktion A, der Funktion B und der Funktion C auf die Datenverarbeitungseinheit kann ein Minimieren einer verringerten Datenverarbeitungsleistung einer der Funktion A, der Funktion B und der Funktion C zugehörigen serverlosen Anwendung ermöglichen. Des Weiteren können in bestimmten Ausführungsformen die Funktion A und die Funktion C in einer Programmiersprache geschrieben sein, die durch die Debugging-Sitzung 410 nicht unterstützt wird. Zum Beispiel kann die Funktion B in einer ersten Programmiersprache geschrieben werden, und die Funktion A und die Funktion C können in mindestens einer zweiten Programmiersprache geschrieben werden, die sich von der ersten Programmiersprache unterscheidet.
  • Um die Auslagerung der Funktion B in die Datenverarbeitungseinheit 114 zu ermöglichen, kann eine Gruppe von Artefakten von der Rewriter-Komponente 106 generiert werden. Zum Beispiel kann die Rewriter-Komponente 106 eine erste Abfolge S1 , die der Funktion A zugehörig ist, und eine zweite Abfolge S2 generieren, die der Funktion B zugehörig ist. Die erste Abfolge S1 kann gleich S1 = a→Ub sein, wobei Ub eine vorausgehende Verbindungswechselfunktion ist, die der Proxy-Komponente 404 zugehörig ist, die für die Funktion B erstellt wird. Die zweite Abfolge S2 kann gleich S2 = Db→c sein, wobei Db eine nachfolgende Verbindungswechselabfolge ist, die der Protokollkomponente 406 zugehörig ist, die für die Funktion B erstellt wird.
  • Beim Debugging der Funktion B kann eine Fortsetzungsregel ein Aufrufen der nachfolgenden Verbindungswechselfunktion Db auslösen. Beim Zusammenfügen einer Abfolge, die der Funktion B zugehörig ist, kann die Fortsetzungsregel alternativ die zweite Abfolge S2 aufrufen. Daher kann ein Reineffekt des Aufrufens der ersten Abfolge S1 und der zweiten Abfolge S2 derselbe sein, als ob eine ursprüngliche Abfolge S aufgerufen worden wäre. Eine Ausgabe der zweiten Abfolge S2 kann daher mit der Ausgabe der ursprünglichen Abfolge S übereinstimmen, und alle zwischengeschalteten Protokolle und Datensätze zum Aufrufen der einen Bestandteil bildenden Aktionen können beibehalten werden.
  • In einer Ausführungsform kann die Debugging-Sitzung 410 ferner durch ein Verringern von Protokolldatensätzen und/oder Aufrufdatensätzen optimiert werden. Zum Beispiel kann die Debugging-Sitzung 410 ohne die nachfolgende Verbindungswechselfunktion Db ausgeführt werden. Protokolle und Ergebnisdatensätze für die Funktion B können minimiert werden, und die zweite Abfolge S2 kann mit der Funktion C beginnen, da der nachfolgende Verbindungswechsel Db erstellt werden kann, um Protokoll- und Ergebnisdatensätze bereitzustellen, die einen Abschluss eines Aufrufs widerspiegeln, der der Funktion B zugehörig ist. Die zweite Abfolge S2 kann verwendet werden, um die Generierung einer Ausgabe durch die ursprüngliche Abfolge S zu ermöglichen. Daher kann die Debugging-Sitzung 410 in bestimmten Ausführungsformen ohne die nachfolgende Verbindungswechselfunktion Db ausgeführt werden. In bestimmten Ausführungsformen kann für die Funktion B ein Debugging über die Debugging-Sitzung 410 auf Grundlage einer Gruppe von Regeln vorgenommen werden. Zum Beispiel kann die Funktion B eine durch ein Ereignis gesteuerte Funktion sein, für die ein Debugging auf Grundlage einer Gruppe von Regeln vorgenommen wird. Wenn in einem nicht-einschränkenden Beispiel die Funktion B, für die ein Debugging vorgenommen werden soll, Teil einer Regel r = t↦B ist, kann eine Gruppe von Artefakten erstellt werden. Eine neue Regel kann ebenfalls erstellt werden, wobei r' = t↦Uf ist, wobei Uf ein vorausgehender Verbindungswechsel ist, der für die Funktion B erstellt wurde. Ferner kann die Datenverarbeitungseinheit 114 in bestimmten Ausführungsformen beim Erstellen einer Funktion, für die ein Debugging vorgenommen werden kann, bestimmen, ob eine Funktion, für die ein Debugging vorgenommen werden kann, einen Namen der ursprünglichen Funktion nutzt. Bei einem Debugging der Funktion B bestimmt die Datenverarbeitungseinheit 114 zum Beispiel, ob die Funktion B vorübergehend in Funktion B' umbenannt werden soll und eine vorausgehende Verbindungswechselfunktion Uf als Funktion B benannt werden soll. In einem Aspekt können vorhandene Schnittstellen zum Interagieren mit der Funktion B die Funktion B' verwenden. In einem Aspekt kann die Debugging-Sitzung 410 initiiert werden, indem man die vorausgehende Verbindungswechselfunktion Uf einen Namen der Funktion B nutzen lässt. In einem anderen Aspekt kann die Debugging-Sitzung 410 eine interne Zuordnung von der Funktion B zu der vorausgehenden Verbindungswechselfunktion Uf verwalten.
  • 6 veranschaulicht einen Ablaufplan eines beispielhaften nicht-einschränkenden, von einem Computer umgesetzten Verfahrens 600 zum Ermöglichen einer Debugging-Sitzung, die einer serverlosen Anwendung zugehörig ist, gemäß einer oder mehreren hierin beschriebenen Ausführungsformen. In einer Ausführungsform kann das Verfahren 600 der serverlosen Datenverarbeitungskomponente 102 zugeordnet werden. In Schritt 602 werden ID-Daten, die einen ersten Abschnitt einer serverlosen Anwendung, der durch eine Datenverarbeitungseinheit erneut gehostet werden soll, von einem betriebsfähig mit einem Prozessor verbundenen System (z.B. durch die Schnittstellenkomponente 104), von der Datenverarbeitungseinheit empfangen, wobei das System mit der Datenverarbeitungseinheit über eine Netzwerkeinheit in Datenaustausch steht. In Schritt 604 wird der erste Abschnitt der serverlosen Anwendung durch das System (z.B. durch die Schnittstellenkomponente 104 oder die Broker-Komponente 108) zu der Datenverarbeitungseinheit übertragen. In Schritt 606 wird die Ausführung einer Debugging-Sitzung, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, durch das System (z.B. durch die Rewriter-Komponente 106) über die Datenverarbeitungseinheit ermöglicht. In Schritt 608 wird ein zweiter Abschnitt der serverlosen Anwendung durch das System (z.B. durch die Rewriter-Komponente 106) ausgeführt. Zusätzlich oder alternativ kann der zweite Abschnitt der serverlosen Anwendung durch einen Server und/oder eine dem System zugehörige serverlose Cloud-Computing-Plattform ausgeführt werden. In einer Ausführungsform kann das Verfahren 600 ferner ein Empfangen einer modifizierten Version des ersten Abschnitts der serverlosen Anwendung von der Datenverarbeitungseinheit durch das System (z.B. durch die Schnittstellenkomponente 104) enthalten. Zusätzlich kann das Verfahren 600 des Weiteren ein Kombinieren der modifizierten Version des ersten Abschnitts der serverlosen Anwendung mit dem zweiten Abschnitt der serverlosen Anwendung durch das System (z.B. durch die Rewriter-Komponente 106) enthalten. In bestimmten Ausführungsformen kann das Verfahren 600 ferner ein Ausführen des zweiten Abschnitts der serverlosen Anwendung auf Grundlage von Echtzeitdaten, die der Debugging-Sitzung zugehörig sind, durch das System (z.B. durch die Rewriter-Komponente 106) enthalten. Des Weiteren kann das Verfahren 600 in bestimmten Ausführungsformen ein Ausführen des zweiten Abschnitts der serverlosen Anwendung enthalten, während die Datenverarbeitungseinheit die Debugging-Sitzung ausführt, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, (um z.B. eine verringerte Anzahl von Fehlern zu ermöglichen, die der serverlosen Anwendung zugehörig sind und/oder eine verbesserte Leistung der serverlosen Anwendung zu ermöglichen).
  • 7 veranschaulicht einen Ablaufplan eines beispielhaften nicht-einschränkenden, von einem Computer umgesetzten Verfahrens 700 zum Ermöglichen einer Debugging-Sitzung, die einer serverlosen Anwendung gemäß einer oder mehreren hierin beschriebenen Ausführungsformen zugehörig ist. In einer Ausführungsform kann das Verfahren 700 der Datenverarbeitungseinheit 114 zugeordnet werden. In Schritt 702 werden ID-Daten, die einem ersten Abschnitt einer serverlosen Anwendung zugehörig sind, durch ein betriebsfähig mit einem Prozessor verbundenes System (z.B. durch die Identifizierungskomponente 202) bestimmt. In Schritt 704 werden die ID-Daten durch das System (z.B. durch die Identifizierungskomponente 202) über eine Netzwerkeinheit zu einem serverlosen Datenverarbeitungssystem übertragen. In Schritt 706 wird der erste Abschnitt der serverlosen Anwendung durch das System (z.B. durch die Debugging-Komponente 204) von dem serverlosen Datenverarbeitungssystem übertragen. In Schritt 708 wird eine Debugging-Sitzung, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, ungefähr gleichzeitig mit einer Ausführung eines zweiten Abschnitts der serverlosen Anwendung durch das serverlose Datenverarbeitungssystem von dem System (z.B. der Debugging-Komponente 204) ausgeführt. In einer Ausführungsform kann das Verfahren 700 ferner einen Datenaustausch mit dem serverlosen Datenverarbeitungssystem über eine Netzwerkeinheit durch das System (z.B. durch die Identifizierungskomponente 202 oder die Debugging-Komponente 204) enthalten. In einer weiteren Ausführungsform kann das Verfahren 700 ferner ein Übertragen einer modifizierten Version des ersten Abschnitts der serverlosen Anwendung zu dem serverlosen Datenverarbeitungssystem durch das System (z.B. durch die Debugging-Komponente 204) enthalten. In noch einer weiteren Ausführungsform kann das Verfahren 700 ferner ein Übertragen von Echtzeitdaten, die der Debugging-Sitzung zugehörig sind, zu dem serverlosen Datenverarbeitungssystem durch das System (z.B. durch die Debugging-Komponente 204) enthalten. In bestimmten Ausführungsformen kann das Verfahren 700 ein Verwenden einer Debug-Anwendung über eine Datenverarbeitungseinheit enthalten, die mit dem serverlosen Datenverarbeitungssystem über eine Netzwerkeinheit in Datenaustausch steht.
  • Aus Gründen einer einfacheren Erklärung werden die von einem Computer umgesetzten Methoden als eine Reihe von Tätigkeiten dargestellt und beschrieben. Es sollte klar sein, dass die Innovation des Erfindungsgegenstands nicht durch die veranschaulichten Tätigkeiten und/oder die Reihenfolge der Tätigkeiten eingeschränkt wird, beispielsweise können Tätigkeiten in verschiedenen Reihenfolgen und/oder gleichzeitig und mit anderen Tätigkeiten auftreten, die hierin nicht dargestellt und beschrieben werden. Ferner können nicht alle veranschaulichten Tätigkeiten erforderlich sein, um die von einem Computer umgesetzten Methoden gemäß dem offenbarten Erfindungsgegenstand umzusetzen. Außerdem versteht der Fachmann und weiß zu würdigen, dass die von einem Computer umgesetzten Methoden alternativ als eine Reihe von in Wechselbeziehung zueinander stehenden Zuständen über ein Zustandsdiagramm oder Ereignisse dargestellt werden könnten. Außerdem sollte ferner klar sein, dass die hierin im Folgenden und durchgehend in dieser Spezifikation offenbarten, von einem Computer umgesetzten Methoden fähig sind, auf einem Fertigungsartikel gespeichert zu werden, um Transport und Übertragung derartiger, von einem Computer umgesetzten Methoden auf Computer zu ermöglichen. Der Begriff „Fertigungsartikel“, wie hierin verwendet, soll ein Computerprogramm umfassen, auf das von jeder computerlesbaren Einheit oder jedem computerlesbaren Medium aus zugegriffen werden kann.
  • Des Weiteren, da mindestens das Ausführen einer serverlosen Anwendung und die Übertragung eines Abschnitts einer serverlosen Anwendung über ein Netzwerk (z.B. Datenaustausch zwischen einer Datenverarbeitungseinheit und einem Server) über eine Kombination aus elektrischen und mechanischen Komponenten und Schaltungen vorgenommen werden, ist ein Mensch nicht fähig, eine Verarbeitung zu replizieren oder auszuführen, die von einer serverlosen Datenverarbeitungskomponente (z.B. der serverlosen Datenverarbeitungskomponente 102) und/oder einer Datenverarbeitungseinheit (z.B. der Datenverarbeitungseinheit 114) ausgeführt wird, die hierin offenbart werden. Zum Beispiel ist ein Mensch nicht fähig, eine serverlose Datenverarbeitungskomponente auszuführen, ein Mensch ist nicht fähig, Daten und/oder paketierte Daten, die einer serverlosen Anwendung zugehörig sind, zwischen einer Datenverarbeitungseinheit und einem Server zu übertragen usw.
  • Um einen Kontext für die verschiedenen Aspekte des offenbarten Erfindungsgegenstands bereitzustellen, sollen 8 sowie die nachfolgende Erörterung eine allgemeine Beschreibung einer geeigneten Umgebung bereitstellen, in der die verschiedenen Aspekte des offenbarten Erfindungsgegenstands umgesetzt werden können. 8 veranschaulicht ein Blockschaubild einer beispielhaften nicht-einschränkenden Betriebsumgebung, in der eine oder mehrere hierin beschriebene Ausführungsformen ermöglicht werden können. Eine wiederholte Beschreibung von ähnlichen Elementen, die in anderen hierin beschriebenen Ausführungsformen verwendet werden, wird der Kürze halber weggelassen.
  • Unter Bezugnahme auf 8 kann eine geeignete Betriebsumgebung 800 zum Umsetzen verschiedener Aspekte dieser Offenbarung auch einen Computer 812 enthalten. Der Computer 812 kann auch eine Verarbeitungseinheit 814, einen Systemarbeitsspeicher 816 und einen Systembus 818 enthalten. Der Systembus 818 verbindet Systemkomponenten unter anderem mit dem Systemarbeitsspeicher 816 der Verarbeitungseinheit 814, ist aber nicht darauf beschränkt. Die Verarbeitungseinheit 814 kann jeder von verschiedenen verfügbaren Prozessoren sein. Duale Mikroprozessoren und andere Mehrfachprozessor-Architekturen können ebenfalls als die Verarbeitungseinheit 814 verwendet werden. Der Systembus 818 kann jeder von mehreren Typen von Busstrukturen sein, einschließlich der Arbeitsspeicherbus oder Arbeitsspeicher-Controller, ein Peripheriebus oder externer Bus und/oder ein lokaler Bus unter Verwendung einer Vielfalt von verfügbaren Busarchitekturen, einschließlich Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus (USB), Advanced Graphics Port (AGP), Firewire (IEEE 1394) und Small Computer Systems Interface (SCSI), ist aber nicht darauf beschränkt. Der Systemarbeitsspeicher 816 kann auch flüchtigen Arbeitsspeicher 820 und nichtflüchtigen Arbeitsspeicher 822 enthalten. Das Basic Input/Output System (BIOS), das die grundlegenden Routinen zum Übertragen von Informationen zwischen Elementen in dem Computer 812 enthält, wie beispielsweise während des Hochfahrens, ist im nichtflüchtigen Arbeitsspeicher 822 gespeichert. Der Computer 812 kann auch entfernbare/nicht-entfernbare, flüchtige/nicht-flüchtige Computerspeichermedien enthalten. 8 veranschaulicht zum Beispiel einen Plattenspeicher 824. Der Plattenspeicher 824 kann auch Einheiten wie ein Magnetplattenlaufwerk, Diskettenlaufwerk, Bandlaufwerk, Jaz-Laufwerk, Zip-Laufwerk, LS-100-Laufwerk. eine Flash-Speicherkarte oder einen Speicher-Stick enthalten, ist aber nicht darauf beschränkt. Der Plattenspeicher 824 kann auch Speichermedien getrennt von oder in Kombination mit anderen Speichermedien enthalten. Um eine Verbindung des Plattenspeichers 824 mit dem Systembus 818 zu ermöglichen, wird normalerweise eine entfernbare oder nicht-entfernbare Schnittstelle verwendet, wie beispielsweise eine Schnittstelle 826. 8 stellt auch Software dar, die als Vermittler zwischen Benutzern und den grundlegenden Computerressourcen wirkt, die in der geeigneten Betriebsumgebung 800 beschrieben wurden. Derartige Software kann zum Beispiel auch ein Betriebssystem 828 enthalten. Das Betriebssystem 828, das auf dem Plattenspeicher 824 gespeichert werden kann, wirkt zum Kontrollieren und Zuweisen von Ressourcen des Computers 812.
  • Systemanwendungen 830 nutzen die Ressourcenverwaltung durch das Betriebssystem 828 über Programmmodule 832 und Programmdaten 834, die z.B. entweder im Systemarbeitsspeicher 816 oder auf dem Plattenspeicher 824 gespeichert sind. Es sollte klar sein, dass diese Offenbarung mit verschiedenen Betriebssystemen oder Kombinationen von Betriebssystemen umgesetzt werden kann. Ein Benutzer gibt Befehle oder Informationen über eine bzw. mehrere Eingabeeinheiten 836 in den Computer 812 ein. Die Eingabeeinheiten 836 enthalten unter anderem eine Zeigeeinheit wie eine Maus, einen Trackball, einen Stift, ein Touch-Pad, eine Tastatur, ein Mikrofon, einen Joystick, ein Game-Pad, eine Satellitenschüssel, einen Scanner, eine TV-Tunerkarte, eine Digitalkamera, eine digitale Videokamera, eine Web-Kamera und dergleichen, sind aber nicht darauf beschränkt. Diese und weitere Eingabeeinheiten sind mit der Verarbeitungseinheit 814 durch den Systembus 818 über einen oder mehrere Schnittstellenanschlüsse 838 verbunden. Der Schnittstellenanschluss bzw. die Schnittstellenanschlüsse 838 enthalten zum Beispiel einen seriellen Anschluss, einen Parallelanschluss, einen Spiele-Anschluss und einen Universal Serial Bus (USB). Ausgabeeinheit(en) 840 verwenden einige Anschlüsse desselben Typs wie Eingabeeinheit(en) 836. Somit kann zum Beispiel ein USB-Anschluss zum Bereitstellen einer Eingabe in den Computer 812 und zum Ausgeben von Informationen von dem Computer 812 an eine Ausgabeeinheit 840 verwendet werden. Ein Ausgabeadapter 842 wird bereitgestellt, um zu veranschaulichen, dass einige Ausgabeeinheiten 840 neben anderen Ausgabeeinheiten 840 wie Monitore, Lautsprecher und Drucker vorhanden sind, für die spezielle Adapter erforderlich sind. Zu Veranschaulichungszwecken und nicht zur Einschränkung enthalten die Ausgabeadapter 842 Video- und Sound-Karten, die ein Verbindungsmittel zwischen der Ausgabeeinheit 840 und dem Systembus 818 bereitstellen. Es ist anzumerken, dass andere Einheiten und/oder Systeme von Einheiten sowohl Eingabe- als auch Ausgabefähigkeiten bereitstellen, wie beispielsweise ein bzw. mehrere entfernt angeordnete Computer 844.
  • Der Computer 812 kann in einer vernetzten Umgebung unter Verwendung von logischen Verbindungen mit einem oder mehreren entfernt angeordneten Computern arbeiten, wie beispielsweise ein bzw. mehrere entfernt angeordnete Computer 844. Der bzw. die entfernt angeordneten Computer 844 können ein Computer, ein Server, ein Router, ein Netzwerk-PC, eine Workstation, eine Einrichtung auf Grundlage eines Mikroprozessors, eine gleichgeordnete Einheit oder ein anderer gemeinsamer Netzwerkknoten und dergleichen sein, und typischerweise können sie viele oder alle der in Bezug auf den Computer 812 beschriebenen Elemente sein. Der Kürze halber ist nur eine Arbeitsspeichereinheit 846 mit einem bzw. mehreren Computern 844 veranschaulicht. Der bzw. die entfernt angeordneten Computer 844 sind über eine Netzwerkschnittstelle 848 logisch mit dem Computer 812 verbunden und sind anschließend über eine Datenaustauschverbindung 850 physisch verbunden. Die Netzwerkschnittstelle 848 umfasst drahtgebundene und/oder drahtlose Datenübertragungsnetzwerke wie lokale Netzwerke (LAN), Weitverkehrsnetzwerke (WAN), Mobilfunknetzwerke usw. Zu LAN-Technologien zählen Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token Ring und dergleichen. Zu WAN-Technologien zählen unter anderen Punkt-zu-Punkt-Verbindungen, Leitungsvermittlungsnetzwerke wie Integrated Services Digital Networks (ISDN) und Variationen davon, Paketvermittlungsnetzwerke und Digital Subscriber Lines (DSL). Datenaustauschverbindung(en) 850 beziehen sich auf die Hardware/Software, die zum Verbinden der Netzwerkschnittstelle 848 mit dem Systembus 818 verwendet wird. Zwar ist die Datenaustauschverbindung 850 zur deutlicheren Veranschaulichung in dem Computer 812 gezeigt, sie kann sich aber auch außerhalb des Computers 812 befinden. Die Hardware/Software zur Verbindung mit der Netzwerkschnittstelle 848 kann, nur zu Beispielzwecken, auch interne und externe Technologien enthalten wie beispielsweise Modems, einschließlich normale Telefonmodems, Kabelmodems und DSL-Modems, ISDN-Adapter und Ethernet-Karten.
  • Es sollte klar sein, obwohl diese Offenbarung eine ausführliche Beschreibung zu Cloud-Computing enthält, dass die Umsetzung der hierin zitierten Lehren nicht auf eine Cloud-Computing-Umgebung begrenzt ist. Die Ausführungsformen der vorliegenden Erfindung sind stattdessen fähig, in Verbindung mit jedem anderen Typ einer jetzt bekannten oder später entwickelten Datenverarbeitungsumgebung umgesetzt zu werden.
  • Cloud-Computing ist ein Modell einer Dienstleistung zum Ermöglichen eines bequemen bedarfsabhängigen Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand oder Interaktion mit einem Anbieter des Diensts rasch bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Merkmale, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle enthalten.
  • Die Merkmale sind wie folgt:
    • On-Demand-Selfservice: Ein Cloud-Nutzer kann sich einseitig und je nach Bedarf automatisch Datenverarbeitungs-Ressourcen, wie z.B. Serverzeit und Netzwerkspeicher, ohne erforderliche menschliche Interaktion mit dem Anbieter des Diensts bereitstellen.
  • Breiter Netzwerkzugriff: Funktionen stehen über ein Netzwerk zur Verfügung, und auf sie wird über Standardmechanismen zugegriffen, die eine Verwendung über heterogene Thin Client- oder Thick Client-Plattformen unterstützen (z.B. Mobiltelefone, Laptops und PDAs).
  • Ressourcen-Pooling: Die Datenverarbeitungsressourcen des Anbieters sind in einem Pool zusammengeschlossen, um unter Verwendung eines Multi-Tenant-Modells mehreren Nutzern mit unterschiedlichen physischen und virtuellen Ressourcen zu dienen, deren Zuweisung oder Zuweisungsaufhebung je nach Bedarf dynamisch erfolgt. Es herrscht insofern ein Gefühl der Standortunabhängigkeit, als der Nutzer im Allgemeinen keine Kontrolle oder Kenntnis in Bezug auf den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene anzugeben (z.B. Land, Bundesstaat oder Rechenzentrum).
  • Schnelle Elastizität: Funktionen können rasch und flexibel, in einigen Fällen automatisch für eine schnelle Erweiterung bereitgestellt und für eine schnelle Reduzierung rasch freigegeben werden. Für den Nutzer scheinen die zur Bereitstellung verfügbaren Funktionen oft unbegrenzt zu sein und können jederzeit in beliebiger Menge erworben werden.
  • Richtig bemessener Dienst: Cloud-Systeme kontrollieren und optimieren Ressourcen automatisch durch die Nutzung einer Messfunktion auf einer Abstraktionsebene, die dem Diensttyp entspricht (z.B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Eine Inanspruchnahme von Ressourcen kann überwacht, kontrolliert und gemeldet werden, was sowohl für den Anbieter als auch den Nutzer des in Anspruch genommenen Dienstes für Transparenz sorgt.
  • Es gibt folgende Dienstmodelle:
    • Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Auf die Anwendungen kann über eine Thin Client-Schnittstelle, wie beispielsweise einen Web-Browser (z.B. webbasierte eMail), von verschiedenen Client-Geräten aus zugegriffen werden. Weder verwaltet noch kontrolliert der Nutzer die zu Grunde liegende Cloud-Infrastruktur, einschließlich Netzwerk, Server, Betriebssysteme, Speicher oder auch einzelne Anwendungsfunktionen, ausgenommen möglicherweise begrenzte benutzerspezifische Einstellungen einer Anwendungskonfiguration .
  • Platform as a Service (PaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, auf der Cloud-Infrastruktur vom Nutzer erstellte oder erworbene Anwendungen bereitzustellen, die unter Verwendung von Programmiersprachen und Tools erstellt wurden, die von dem Anbieter unterstützt werden. Weder verwaltet noch kontrolliert der Nutzer die zu Grunde liegende Cloud-Infrastruktur, einschließlich Netzwerk, Server, Betriebssysteme oder Speicher, aber er besitzt die Kontrolle über die umgesetzten Anwendungen und möglicherweise die Hosting-Umgebungskonfigurationen von Anwendungen.
  • Infrastructure as a Service (IaaS): Die für den Nutzer bereitgestellte Funktion besteht in der Bereitstellung von Verarbeitung, Speicher, Netzwerken und anderen grundlegenden Datenverarbeitungsressourcen, wobei der Nutzer in der Lage ist, beliebige Software bereitzustellen und auszuführen, zu der auch Betriebssysteme und Anwendungen gehören können. Weder verwaltet noch kontrolliert der Nutzer die zu Grunde liegende Cloud-Infrastruktur, aber er hat die Kontrolle über Betriebssysteme, Speicher, genutzte Anwendungen und möglicherweise eine begrenzte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Es gibt folgende Nutzungsmodelle:
    • Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein. Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und ist im Besitz einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung von zwei oder mehr Clouds (Private, Community oder Public), die eindeutige Entitäten bleiben, aber durch eine standardisierte oder proprietäre Technologie vereinigt sind, die eine Daten- und Anwendungsportabilität ermöglicht (z.B. Cloud Bursting für einen Lastausgleich zwischen Clouds).
  • Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert mit einem Schwerpunkt auf Statusungebundenheit, niedriger Kopplung, Modularität und semantischer Interoperabilität. Das Kernstück des Cloud-Computing ist eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten enthält.
  • Unter folgender Bezugnahme auf 9 wird veranschaulichend eine Cloud-Computing-Umgebung 950 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 950 einen oder mehrere Cloud-Computing-Knoten 910, mit denen lokale Datenverarbeitungseinheiten Daten austauschen können, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 954A, Desktop-Computer 954B, Laptop-Computer 954C und/oder Fahrzeug-Computersystem 954N. Die Knoten 910 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert werden (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder eine Kombination davon sein. Damit hat die Cloud-Computing-Umgebung 950 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es versteht sich, dass die in 9 gezeigten Typen von Datenverarbeitungseinheiten 954A bis N nur zur Veranschaulichung dienen sollen, und dass die Cloud-Computing-Knoten 910 und die Cloud-Computing-Umgebung 950 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
  • Unter folgender Bezugnahme auf 10 wird eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung 950 (9) bereitgestellt werden. Es sollte von vornherein verstanden werden, dass die in 10 gezeigten Komponenten, Schichten und Funktionen nur veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
    • Die Hardware- und Software-Schicht 1060 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 1061; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 1062; Server 1063; Blade-Server 1064; Speichereinheiten 1065; und Netzwerke und vernetzte Komponenten 1066. In einigen Ausführungsformen enthalten die Software-Komponenten Software für Netzwerkanwendungsserver 1067 und Datenbank-Software 1968.
  • Eine Virtualisierungsschicht 1070 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 1071; virtueller Speicher 1072; virtuelle Netzwerke 1073, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 1074; und virtuelle Clients 1075.
  • In einem Beispiel kann die Verwaltungsschicht 1080 die im Folgenden beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung 1081 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und weiteren Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 1082 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware enthalten. Die Sicherheit stellt für Nutzer der Cloud und Aufgaben eine Identitätsüberprüfung sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 1083 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Die Service-Level-(Dienstgüte) Verwaltung 1084 sorgt für die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen, so dass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 1085 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
  • Die Arbeitslastenschicht 1090 stellt Beispiele für die Funktionalität bereit, für die die Cloud-Computing-Umgebung eingesetzt werden kann. Zu nicht-einschränkenden Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 1091; Software-Entwicklung und Lifecycle-Management 1092; Bereitstellung von virtuellen Schulungen 1093; Datenanalyseverarbeitung 1094; Transaktionsverarbeitung 1095; und Mobile Desktop 1096.
  • Die vorliegende Erfindung kann ein System, ein Verfahren, eine Vorrichtung und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Speichermedien) mit einem computerlesbaren Programmcode darauf enthalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen. Das computerlesbare Speichermedium kann eine konkrete Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit beibehalten und speichern kann. Ein computerlesbares Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen für das computerlesbare Speichermedium kann auch Folgendes enthalten: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Arbeitsspeicher (SRAM), einen tragbaren CD-ROM, ein DVD-Laufwerk (DVD), einen Speicherstick, eine Diskette, eine mechanisch verschlüsselte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen und jede geeignete Kombination des Vorgenannten. Ein computerlesbares Speichermedium, wie hierin verwendet, muss nicht als transitorische Signale per se ausgelegt sein, wie beispielsweise Funkwellen oder andere sich frei verbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien verbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch einen Draht übertragen werden.
  • Hierin beschriebene computerlesbare Programmanweisungen können auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten von einem computerlesbaren Speichermedium oder auf einen externen Computer oder eine externe Speichereinheit über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk heruntergeladen werden. Das Netzwerk kann Kupferübertragungsleitungen, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder Netzwerk-Schnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium in der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter. Computerlesbare Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung können Assembler-Anweisungen, Anweisungssatzarchitektur- (Instruction Set Architecture) (ISA) Anweisungen, Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten, Konfigurationsdaten für integrierte Schaltungen oder anderer Quellcode oder Objektcode sein, die in jeder Kombination von einer oder mehreren Programmiersprachen, einschließlich Smalltalk, C++ oder dergleichen, und prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben sind. 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 entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, einschließlich zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen unter Verwendung von Zustandsinformationen der computerlesbaren Programmanweisungen zum Personalisieren der elektronischen Schaltung ausführen, um Aspekte der vorliegenden Erfindung auszuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen des Ablaufplans und/oder der Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen umgesetzt werden können. Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass das computerlesbare Speichermedium mit den darin gespeicherten Anweisungen einen Fertigungsartikel aufweist, einschließlich Anweisungen, welche die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen. Die computerlesbaren Programmanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder eine andere Einheit geladen werden, um die Ausführung einer Serie von Betriebshandlungen auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen /Handlungen umsetzen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. In einigen alternativen Umsetzungen können die in den Blöcken angegebenen Funktionen außerhalb der Reihenfolge auftreten, die in den Figuren angegeben ist. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf Grundlage von Hardware umgesetzt werden können, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von spezieller Hardware und Computeranweisungen ausführen.
  • Obwohl der Erfindungsgegenstand oben im allgemeinen Kontext von durch einen Computer ausführbaren Anweisungen eines Computerprogrammprodukts beschrieben wurde, das auf einem Computer und/oder Computern ausgeführt wird, wird der Fachmann erkennen, dass diese Offenbarung auch mit anderen oder in Kombination mit anderen Programmmodulen umgesetzt werden kann. Im Allgemeinen enthalten Programmmodule Routinen, Programme, Komponenten, Datenstrukturen usw., die bestimmte Aufgaben ausführen und/oder bestimmte abstrakte Datentypen umsetzen. Des Weiteren wird dem Fachmann klar sein, dass die erfinderischen, von einem Computer umgesetzten Verfahren mit anderen Computersystem-Konfigurationen ausgeübt werden können, einschließlich Einzelprozessor- oder Multiprozessor-Computersystemen, Mini-Datenverarbeitungseinheiten, Mainframe-Computer sowie Computer, Handheld-Datenverarbeitungseinheiten (z.B. PDA, Telefon), Unterhaltungs- oder Industrieelektronik auf Mikroprozessor-Grundlage oder programmierbar und dergleichen. Die veranschaulichten Aspekte können auch in verteilten Datenverarbeitungsumgebungen ausgeübt werden, in denen Aufgaben von entfernt angeordneten Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Einige, wenn nicht sogar alle Aspekte dieser Offenbarung können jedoch auf eigenständigen Computern ausgeübt werden. In einer verteilten Datenverarbeitungsumgebung können Programmmodule sich sowohl in lokalen als auch entfernt angeordneten Arbeitsspeichermedien befinden.
  • Wie in dieser Anmeldung verwendet, können die Begriffe „Komponente“, „System“, „Plattform“, „Schnittstelle“ und dergleichen eine computerbezogene Entität enthalten oder sich auf eine solche beziehen, oder auf eine Entität, die in Bezug zu einer operationellen Maschine mit einer oder mehreren spezifischen Funktionalitäten steht. Die hierin offenbarten Entitäten können entweder Hardware, eine Kombination von Hardware und Software, Software oder Software in Ausführung sein. Zum Beispiel kann eine Komponente ein Prozess, der auf einem Prozessor ausgeführt wird, ein Prozessor, ein Objekt, eine ausführbare Funktion/Datei, ein Ausführungs-Thread, ein Programm und/oder ein Computer sein. Zur Veranschaulichung können sowohl eine Anwendung, die auf einem Server ausgeführt wird, und der Server eine Komponente sein. Eine oder mehrere Komponenten können sich in einem Prozess und/oder einem Ausführungs-Thread befinden, und eine Komponente kann sich auf einem Computer und/oder verteilt auf zwei oder mehr Computern befinden. In einem anderen Beispiel können jeweilige Komponenten von verschiedenen computerlesbaren Medien aus ausgeführt werden, auf den verschiedene Datenstrukturen gespeichert sind. Die Komponenten können über lokale und/oder entfernt angeordnete Prozesse Daten austauschen wie beispielsweise in Übereinstimmung mit einem Signal mit einem oder mehreren Datenpaketen (z.B. Daten von einer Komponente, die mit einer anderen Komponente in einem lokalen System, einem verteilten System und/oder über ein Netzwerk über das Signal interagieren, wie beispielsweise das Internet mit anderen System). In einem anderen Beispiel kann eine Komponente eine Vorrichtung mit spezifischer Funktionalität sein, die durch mechanische Teile bereitgestellt werden, die über elektrische oder elektronische Schaltungen betrieben werden, welche durch eine Software- oder Firmware-Anwendung betrieben werden, die von einem Prozessor ausgeführt wird. In einem derartigen Fall kann sich der Prozessor innerhalb oder außerhalb der Vorrichtung befinden und mindestens einen Teil der Software- oder Firmware-Anwendung ausführen. Als noch weiteres Beispiel kann eine Komponente eine Vorrichtung sein, die eine spezifische Funktionalität durch elektronische Komponenten ohne mechanische Teile bereitstellt, wobei die elektronischen Komponenten einen Prozessor oder ein anderes Mittel zum Ausführen von Software oder Firmware enthalten kann, der bzw. das zumindest teilweise die Funktionalität der elektronischen Komponenten übertragen kann. In einem Aspekt kann eine Komponente eine elektronische Komponente über eine virtuelle Maschine emulieren, z.B. in einem Cloud-Computing-System.
  • Außerdem soll der Begriff „oder“ ein einschließendes „oder“ statt eines ausschließenden „oder“ bedeuten. Dies gilt, sofern nichts anderes angegeben wird oder aus dem Kontext klar ist, das „X verwendet A oder B“ jede der natürlichen einschließenden Umsetzungen bedeutet. Das heißt, wenn X A verwendet; X B verwendet; oder X A und B verwendet, ist „X verwendet A oder B“ unter jedem der vorgenannten Beispiele erfüllt. Des Weiteren sollen die Artikel „ein/eine“, wie in der Spezifikation des Erfindungsgegenstands und den Zeichnungen im Anhang verwendet, allgemein so konstruiert sein, dass sie „ein oder mehrere“ bedeuten, sofern nicht anderes angegeben ist oder aus dem Kontext klar ist, dass sie sich auf eine Singularform beziehen. Wie hierin verwendet, werden die Begriffe „Beispiel“ und/oder „beispielhaft“ mit der Bedeutung verwendet, als Beispiel, Fall oder Veranschaulichung zu dienen. Um jeden Zweifel auszuschließen, ist der hierin offenbarte Gegenstand nicht durch solche Beispiele eingeschränkt. Außerdem ist jeder Aspekt oder jede Auslegung, die hierin als „Beispiel“ und/oder „beispielhaft“ beschrieben wird, nicht notwendigerweise als gegenüber anderen Aspekten oder Auslegungen bevorzugt oder vorteilhaft auszulegen, noch ist damit beabsichtigt, gleichwertige beispielhafte Strukturen und Techniken, die dem Fachmann bekannt sind, auszuschließen.
  • Wie in der Spezifikation des Erfindungsgegenstands verwendet, kann sich der Begriff „Prozessor“ im Wesentlichen auf jede Datenverarbeitungseinheit oder eine Einheit beziehen, die Einzelkernprozessoren; Einzelprozessoren mit Software-Multithread-Ausführungsfunktion; Mehrkernprozessoren; Mehrkernprozessoren mit Software-Multithread-Ausführungsfunktion; Mehrkernprozessoren mit Hardware-Multithread-Technologie; parallele Plattformen; und parallel Plattformen mit verteiltem gemeinsam genutzten Arbeitsspeicher aufweisen, ist aber nicht darauf beschränkt. Außerdem kann sich ein Prozessor auf eine integrierte Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), einen digitalen Signalprozessor (DSP), ein feldprogrammierbares Gate-Array (FPGA), eine speicherprogrammierbare Steuerung )SPS), einen komplexen programmierbaren Logikbaustein (CPLD), ein diskretes Gate oder eine Transistorlogik. diskrete Hardware-Komponenten oder jede Kombination davon beziehen, die dafür ausgelegt ist, die hierin beschriebenen Funktionen auszuführen. Ferner können Prozessoren Architekturen im Nanomaßstab nutzen, wie zum Beispiel Transistoren, Schalter und Gates auf molekularer oder Quantenpunkt-Grundlage, um die Raumnutzung zu optimieren oder die Leistung von Benutzerausrüstung zu erhöhen. Ein Prozessor kann auch als Kombination von Datenverarbeitungseinheiten umgesetzt werden. In dieser Offenbarung werden Begriffe wie „Speicher“, „Speicherung“, „Datenspeicher“, „Datenspeicherung“ und „Datenbank“ und im Wesentlichen jede andere Informationsspeicherkomponente, die für Betrieb und Funktionalität einer Komponente relevant ist, dazu verwendet, um auf „Arbeitsspeicherkomponenten“, in einem „Arbeitsspeicher“ verkörperte Entitäten oder Komponenten zu verweisen, die einen Arbeitsspeicher aufweisen. Es sollte klar sein, dass hierin beschriebener Arbeitsspeicher und/oder Arbeitsspeicherkomponenten entweder flüchtiger Arbeitsspeicher oder nichtflüchtiger Arbeitsspeicher sein können oder sowohl flüchtigen als auch nichtflüchtigen Arbeitsspeicher enthalten können. Zur Veranschaulichung und nicht einschränkend kann nichtflüchtiger Arbeitsspeicher Nur-Lese-Speicher (ROM), programmierbaren Nur-Lese-Speicher (PROM), elektrisch programmierbaren Nur-Lese-Speicher (EPROM), elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), Flash-Speicher oder nichtflüchtigen Direktzugriffspeicher (RAM) (z.B. ferroelektrischen RAM (FeRAM)) enthalten. Flüchtiger Speicher kann RAM enthalten, der zum Beispiel als externer Cachespeicher wirken kann. Zur Veranschaulichung und nicht einschränkend steht RAM in vielen Formen zur Verfügung, wie beispielsweise als synchroner RAM (SRAM), dynamischer RAM (DRAM), synchroner DRAM (SDRAM), Doppeldatenrate-DSDRM (DDR SDRAM), erweiterter SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), Direct Rambus RAM (DRRAM) und Rambus Dynamic RAM (RDRAM). Außerdem sollen die hierin offenbarten Arbeitsspeicherkomponenten von Systemen oder von einem Computer umgesetzten Verfahren diese und andere geeignete Typen von Arbeitsspeicher enthalten, wobei sie nicht darauf beschränkt sein sollen.
  • Die obige Beschreibung enthält nur Beispiele für Systeme und von einem Computer umgesetzte Verfahren. Es ist selbstverständlich nicht möglich, jede vorstellbare Kombination von Komponenten oder von einem Computer umgesetzten Verfahren zum Zweck der Beschreibung dieser Offenbarung zu beschreiben, aber der Fachmann kann erkennen, dass viele weitere Kombinationen und Umsetzungen dieser Offenbarung möglich sind. Ferner sollen solche Begriffe in dem Ausmaß, in dem die Begriffe „enthält“, „hat“, „besitzt“ und dergleichen in der ausführlichen Beschreibung, den Ansprüchen, Anhängen und Zeichnungen verwendet werden, auf eine ähnliche Weise einschließend sein wie der Begriff „aufweisend“, wie „aufweisend“ interpretiert wird, wenn es als Übergangswort in einem Anspruch verwendet wird.
  • Die Beschreibungen der verschiedenen Ausführungsformen wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzbereich und dem Erfindungsgedanken der beschrieben Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • Claims (25)

    1. System, aufweisend: einen Arbeitsspeicher, der von einem Computer ausführbare Komponenten speichert; einen Prozessor, der von einem Computer ausführbare Komponenten ausführt, die in dem Arbeitsspeicher gespeichert sind, wobei die von einem Computer ausführbaren Komponenten aufweisen: eine Schnittstellenkomponente, die ID-Daten von einer Datenverarbeitungseinheit empfängt, die einen ersten Abschnitt einer serverlosen Anwendung identifizieren, der durch die Datenverarbeitungseinheit erneut gehostet werden soll, wobei die Datenverarbeitungseinheit über eine Netzwerkeinheit in Datenaustausch mit dem serverlosen Datenverarbeitungssystem steht; und eine Rewriter-Komponente, die die serverlose Anwendung umschreibt, um zu gestatten, dass der erste Abschnitt der serverlosen Anwendung durch die Datenverarbeitungseinheit ausgeführt wird und ein zweiter Abschnitt der serverlosen Anwendung durch das serverlose Datenverarbeitungssystem ausgeführt wird, wobei die Schnittstellenkomponente den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit umleitet, um eine Debugging-Sitzung für den ersten Abschnitt der serverlosen Anwendung zu ermöglichen, die durch die Datenverarbeitungseinheit ausgeführt wird.
    2. System nach Anspruch 1, wobei die Schnittstellenkomponente eine modifizierte Version des ersten Abschnitts der serverlosen Anwendung von der Datenverarbeitungseinheit empfängt.
    3. System nach Anspruch 2, wobei die Rewriter-Komponente die modifizierte Version des ersten Abschnitts der serverlosen Anwendung mit dem zweiten Abschnitt der serverlosen Anwendung kombiniert.
    4. System nach Anspruch 1, wobei das serverlose Datenverarbeitungssystem einen Satz von Verarbeitungs-Threads ausführt, die dem zweiten Abschnitt der serverlosen Anwendung zugehörig sind, während die Datenverarbeitungseinheit die Debugging-Sitzung ausführt, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist.
    5. System nach Anspruch 1, wobei der erste Abschnitt der serverlosen Anwendung eine erste Funktion in einer Abfolge von Funktionen ist, und wobei die Schnittstellenkomponente die erste Funktion zu der Datenverarbeitungseinheit um leitet.
    6. System nach Anspruch 5, wobei die Rewriter-Komponente eine zweite Funktion vor der ersten Funktion in der Abfolge von Anweisungen generiert, wobei die Rewriter-Komponente eine dritte Funktion nach der ersten Funktion in der Abfolge von Anweisungen generiert, und wobei die Rewriter-Komponente die zweite Funktion und die dritte Funktion ausführt, nachdem die erste Funktion zu der Datenverarbeitungseinheit umgeleitet wurde.
    7. System nach Anspruch 1, wobei die Schnittstellenkomponente Echtzeitdaten empfängt, die der Debugging-Sitzung zugehörig sind, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist.
    8. System nach Anspruch 7, wobei die Rewriter-Komponente den zweiten Abschnitt der serverlosen Anwendung auf Grundlage der Echtzeitdaten ausführt, die der Debugging-Sitzung zugehörig sind.
    9. System nach Anspruch 7, wobei die Schnittstellenkomponente den ersten Abschnitt der serverlosen Anwendung zu der Datenverarbeitungseinheit umleitet, um eine verbesserte Ausführung der serverlosen Anwendung zu ermöglichen.
    10. Durch einen Computer umgesetztes Verfahren, aufweisend: Empfangen von ID-Daten von einer Datenverarbeitungseinheit, die einen ersten Abschnitt einer serverlosen Anwendung identifizieren, der durch die Datenverarbeitungseinheit erneut gehostet werden soll, von einem betriebsfähig mit einem Prozessor verbundenen System, wobei das System mit der Datenverarbeitungseinheit über eine Netzwerkeinheit in Datenaustausch steht; Übertragen des ersten Abschnitts der serverlosen Anwendung zu der Datenverarbeitungseinheit durch das System; Ermöglichen einer Ausführung einer Debugging-Sitzung, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, über die Datenverarbeitungseinheit durch das System; und Ausführen eines zweiten Abschnitts der serverlosen Anwendung durch das System.
    11. Durch einen Computer umgesetztes Verfahren nach Anspruch 10, ferner aufweisend: Empfangen einer modifizierten Version des ersten Abschnitts der serverlosen Anwendung von der Datenverarbeitungseinheit durch das System.
    12. Durch einen Computer umgesetztes Verfahren nach Anspruch 11, ferner aufweisend: Kombinieren der modifizierten Version des ersten Abschnitts der serverlosen Anwendung mit dem zweiten Abschnitt der serverlosen Anwendung durch das System.
    13. Durch einen Computer umgesetztes Verfahren nach Anspruch 11, ferner aufweisend: Ausführen des zweiten Abschnitts der serverlosen Anwendung auf Grundlage von Echtzeitdaten, die der Debugging-Sitzung zugehörig sind, durch das System.
    14. Durch einen Computer umgesetztes Verfahren nach Anspruch 13, wobei das Ausführen ein Ausführen des zweiten Abschnitts der serverlosen Anwendung aufweist, während die Datenverarbeitungseinheit die Debugging-Sitzung ausführt, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, um eine verringerte Anzahl von Fehlern zu ermöglichen, die der serverlosen Anwendung zugehörig sind.
    15. Durch einen Computer umgesetztes Verfahren, aufweisend: Bestimmen von ID-Daten, die einem ersten Abschnitt einer serverlosen Anwendung zugehörig sind, durch ein betriebsfähig mit einem Prozessor verbundenes System; Übertragen der ID-Daten zu einem serverlosen Datenverarbeitungssystem über eine Netzwerkeinheit durch das System; Empfangen des ersten Abschnitts der serverlosen Anwendung von dem serverlosen Datenverarbeitungssystem durch das System; und Ausführen einer Debugging-Sitzung durch das System, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, ungefähr gleichzeitig mit einer Ausführung eines zweiten Abschnitts der serverlosen Anwendung durch das serverlose Datenverarbeitungssystem.
    16. Durch einen Computer umgesetztes Verfahren nach Anspruch 15, ferner aufweisend: Datenaustausch mit dem serverlosen Datenverarbeitungssystem über eine Netzwerkeinheit durch das System.
    17. Durch einen Computer umgesetztes Verfahren nach Anspruch 15, ferner aufweisend: Übertragen einer modifizierten Version des ersten Abschnitts der serverlosen Anwendung zu dem serverlosen Datenverarbeitungssystem durch das System.
    18. Durch einen Computer umgesetztes Verfahren nach Anspruch 15, ferner aufweisend: Übertragen von Echtzeitdaten, die der Debugging-Sitzung zugehörig sind, zu dem serverlosen Datenverarbeitungssystem durch das System.
    19. Durch einen Computer umgesetztes Verfahren nach Anspruch 15, wobei das Ausführen der Debugging-Sitzung die Verwendung einer Debug-Anwendung über eine Datenverarbeitungseinheit aufweist, die mit dem serverlosen Datenverarbeitungssystem über eine Netzwerkeinheit in Datenaustausch steht.
    20. Computerprogrammprodukt für ein Debugging einer serverlosen Anwendung, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin ausgeführten Programmanweisungen aufweist, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen zum: Empfangen von ID-Daten von einer Datenverarbeitungseinheit, die einen ersten Abschnitt einer serverlosen Anwendung identifizieren, der einem serverlosen Datenverarbeitungssystem zugehörig ist, durch den Prozessor; Übertragen des ersten Abschnitts der serverlosen Anwendung zu der Datenverarbeitungseinheit durch den Prozessor; Ausführen eines zweiten Abschnitts der serverlosen Anwendung durch den Prozessor während einer Debugging-Sitzung durch die Datenverarbeitungseinheit, die ein Debugging des ersten Abschnitts der serverlosen Anwendung vornimmt.
    21. Computerprogrammprodukt nach Anspruch 20, wobei die Programmanweisungen durch den Prozessor ausführbar sind, um den Prozessor ferner zu veranlassen zum: Empfangen einer modifizierten Version des ersten Abschnitts der serverlosen Anwendung von der Datenverarbeitungseinheit durch den Prozessor.
    22. Computerprogrammprodukt nach Anspruch 21, wobei die Programmanweisungen durch den Prozessor ausführbar sind, um den Prozessor ferner zu veranlassen zum: Kombinieren der modifizierten Version des ersten Abschnitts der serverlosen Anwendung mit dem zweiten Abschnitt der serverlosen Anwendung durch den Prozessor.
    23. Computerprogrammprodukt für ein Debugging einer serverlosen Anwendung, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin ausgeführten Programmanweisungen aufweist, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen zum: Übertragen von ID-Daten durch den Prozessor, die einem ersten Abschnitt einer serverlosen Anwendung zugehörig sind, zu einem serverlosen Datenverarbeitungssystem; Empfangen des ersten Abschnitts der serverlosen Anwendung von dem serverlosen Datenverarbeitungssystem durch den Prozessor; und Ausführen einer Debugging-Sitzung, die dem ersten Abschnitt der serverlosen Anwendung zugehörig ist, durch den Prozessor.
    24. Computerprogrammprodukt nach Anspruch 23, wobei die Programmanweisungen durch den Prozessor ausführbar sind, um den Prozessor ferner zu veranlassen zum: Übertragen einer modifizierten Version des ersten Abschnitts der serverlosen Anwendung zu dem serverlosen Datenverarbeitungssystem durch den Prozessor.
    25. Computerprogrammprodukt nach Anspruch 23, wobei die Programmanweisungen durch den Prozessor ausführbar sind, um den Prozessor ferner zu veranlassen zum: Übertragen von Echtzeitdaten, die der Debugging-Sitzung zugehörig sind, zu dem serverlosen Datenverarbeitungssystem durch den Prozessor.
    DE102017217971.6A 2016-10-25 2017-10-10 Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting Active DE102017217971B4 (de)

    Applications Claiming Priority (4)

    Application Number Priority Date Filing Date Title
    US201662412564P 2016-10-25 2016-10-25
    US62/412,564 2016-10-25
    US15/475,491 US10303582B2 (en) 2016-10-25 2017-03-31 Facilitating debugging serverless applications via graph rewriting
    US15/475,491 2017-03-31

    Publications (2)

    Publication Number Publication Date
    DE102017217971A1 true DE102017217971A1 (de) 2018-04-26
    DE102017217971B4 DE102017217971B4 (de) 2022-08-11

    Family

    ID=61969646

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102017217971.6A Active DE102017217971B4 (de) 2016-10-25 2017-10-10 Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting

    Country Status (4)

    Country Link
    US (4) US10303582B2 (de)
    JP (1) JP6930891B2 (de)
    DE (1) DE102017217971B4 (de)
    GB (1) GB2558045A (de)

    Families Citing this family (23)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    CN109643093A (zh) * 2016-08-30 2019-04-16 三菱电机株式会社 程序编辑装置、程序编辑方法及程序编辑程序
    US10257033B2 (en) * 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
    CN110582750A (zh) * 2017-04-28 2019-12-17 北京嘀嘀无限科技发展有限公司 用于任务调度和设备管理的系统和方法
    US11283694B2 (en) * 2017-07-20 2022-03-22 Movius Interactive Corportion System and method providing usage analytics for a mobile device
    US10394695B2 (en) * 2017-09-25 2019-08-27 Oracle International Corporation Method and system for recording and debugging process flows
    US10951633B1 (en) * 2018-03-30 2021-03-16 Citigroup Technology, Inc. Serverless auto-remediating security systems and methods
    US10990369B2 (en) * 2018-04-30 2021-04-27 EMC IP Holding Company LLC Repurposing serverless application copies
    WO2019228632A1 (en) * 2018-05-30 2019-12-05 Telefonaktiebolaget Lm Ericsson (Publ) Serverless lifecycle management dispatcher
    US11281635B2 (en) * 2018-10-26 2022-03-22 EMC IP Holding Company LLC Serverless solution for optimization of object versioning
    EP3877854A4 (de) * 2018-11-08 2022-08-10 INTEL Corporation Verbesserungen eines function-as-a-service (faas)-systems
    US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
    EP3864514B1 (de) * 2018-12-21 2023-09-06 Huawei Cloud Computing Technologies Co., Ltd. Mechanismus zur verringerung der startlatenzzeit einer serverlosen funktion
    US10986184B1 (en) 2019-03-05 2021-04-20 Edjx, Inc. Systems and methods for it management of distributed computing resources on a peer-to-peer network
    CN112019475B (zh) * 2019-05-28 2021-12-21 阿里巴巴集团控股有限公司 无服务器架构下的资源访问方法、设备、系统及存储介质
    US10769058B1 (en) * 2019-05-30 2020-09-08 Capital One Services, Llc Generic serverless performance testing framework
    US11240045B2 (en) * 2019-10-30 2022-02-01 Red Hat, Inc. Detection and prevention of unauthorized execution of severless functions
    JP7434560B2 (ja) 2019-12-13 2024-02-20 ライブパーソン, インコーポレイテッド 双方向通信システムのためのサービスとしての機能クラウドチャットボット
    US11416273B2 (en) 2020-01-16 2022-08-16 Red Hat, Inc. Adaptive and secure bitecode injection based on comparison with previously stored bytecode
    US11489844B2 (en) * 2020-04-17 2022-11-01 Twistlock Ltd. On-the-fly creation of transient least privileged roles for serverless functions
    US11375042B2 (en) * 2020-07-10 2022-06-28 Kyndryl, Inc. Symphonizing serverless functions of hybrid services
    US11681445B2 (en) 2021-09-30 2023-06-20 Pure Storage, Inc. Storage-aware optimization for serverless functions
    US11947445B2 (en) * 2022-02-18 2024-04-02 Mckinsey & Company, Inc. Adjustment of operating parameters of arranged software assets
    US11614982B1 (en) * 2022-08-29 2023-03-28 Sedai Inc. Autonomous concurrency for serverless functions

    Family Cites Families (22)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US5819093A (en) 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
    JP2003271418A (ja) 2002-03-11 2003-09-26 Empirix Inc ウエブベースのソフトウエアオブジェクトのテスト方法
    JP2007156987A (ja) 2005-12-07 2007-06-21 Toshiba Corp ソフトウェア部品およびソフトウェア部品管理システム
    US7792992B2 (en) * 2008-05-29 2010-09-07 Xerox Corporation Serverless distributed monitoring and anomaly detection for a service oriented architecture
    US20130167123A1 (en) 2008-12-18 2013-06-27 Adobe Systems Incorporated Application debugging
    US8332365B2 (en) * 2009-03-31 2012-12-11 Amazon Technologies, Inc. Cloning and recovery of data volumes
    US8060792B2 (en) * 2009-03-31 2011-11-15 Amazon Technologies, Inc. Monitoring and automated recovery of data instances
    US8819701B2 (en) * 2009-12-12 2014-08-26 Microsoft Corporation Cloud computing monitoring and management system
    US9111035B2 (en) * 2010-10-11 2015-08-18 At&T Intellectual Property I, L.P. Methods, systems, and computer program products for analyzing an occurrence of an error in a computer program by restricting access to data identified as being sensitive information
    US20130144935A1 (en) * 2010-12-13 2013-06-06 Vertical Computer Systems, Inc. System and Method for Running an Internet Server Behind a Closed Firewall
    CN103237082B (zh) 2013-05-06 2016-07-27 百度在线网络技术(北京)有限公司 云测试方法、系统和云端服务器
    US9104432B2 (en) * 2013-06-24 2015-08-11 International Business Machines Corporation Extracting stream graph structure in a computer language by pre-executing a deterministic subset
    US9201759B2 (en) * 2013-07-26 2015-12-01 Sap Se Debugging applications in the cloud
    US8930067B1 (en) * 2014-05-05 2015-01-06 Nmtc, Inc. System and method for a subscription-based diagnostic software service
    US10049033B2 (en) * 2014-06-03 2018-08-14 Sap Se Application gateway for cloud computing systems
    US9378079B2 (en) * 2014-09-02 2016-06-28 Microsoft Technology Licensing, Llc Detection of anomalies in error signals of cloud based service
    US9684502B2 (en) * 2015-06-24 2017-06-20 Cliqr Technologies, Inc. Apparatus, systems, and methods for distributed application orchestration and deployment
    US20170024717A1 (en) * 2015-07-21 2017-01-26 Mitoc Group Inc. Microapplications Software Marketplace for Digital Systems and Method of Use
    CN105117337B (zh) 2015-08-26 2018-09-04 小米科技有限责任公司 应用调试方法、客户端及调试平台
    CN105528288B (zh) 2015-12-01 2018-12-14 深圳市迪菲特科技股份有限公司 一种软件测试方法以及装置
    US10033833B2 (en) * 2016-01-11 2018-07-24 Cisco Technology, Inc. Apparatus, systems and methods for automatic distributed application deployment in heterogeneous environments
    US10768920B2 (en) * 2016-06-15 2020-09-08 Microsoft Technology Licensing, Llc Update coordination in a multi-tenant cloud computing environment

    Also Published As

    Publication number Publication date
    US20180113791A1 (en) 2018-04-26
    DE102017217971B4 (de) 2022-08-11
    GB201717042D0 (en) 2017-11-29
    US10929274B2 (en) 2021-02-23
    US10489277B2 (en) 2019-11-26
    US20190213111A1 (en) 2019-07-11
    US20210117311A1 (en) 2021-04-22
    US10303582B2 (en) 2019-05-28
    JP6930891B2 (ja) 2021-09-01
    JP2018073405A (ja) 2018-05-10
    GB2558045A (en) 2018-07-04
    US20180113793A1 (en) 2018-04-26
    US11301364B2 (en) 2022-04-12

    Similar Documents

    Publication Publication Date Title
    DE102017217971B4 (de) Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting
    DE112017007510T5 (de) Blockchain für offene wissenschaftliche forschung
    DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
    DE112012000444B4 (de) Verfahren, System und Computerprogrammprodukt zum Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes sowie Verfahren zum Implementieren eines entsprechenden Systems
    DE112016003949T5 (de) Webbasierte programmierumgebung für eingebettete geräte
    DE112012004238T5 (de) Auf Erkennung beruhende Identifizierung und Migration von leicht in eine Cloud verlagerbaren Anwendungen
    DE112012002941T5 (de) Anwendungsressourcenverwalter über eine Cloud
    US10394583B2 (en) Automated model generation for a software system
    DE112010003144T5 (de) Erweiterbare Grundstruktur zur Unterstützung verschiedener Einsatzarchitekturen
    DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
    Goetz et al. Storm blueprints: patterns for distributed real-time computation
    DE112013007300T5 (de) Speichersysteme mit adaptiver Löschcode-Generierung
    DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
    DE102021124264A1 (de) Erzeugung von synthetischen Systemfehlern
    DE112021004689T5 (de) Kontextbasierte risikobeurteilung einer schwachstelle in datenverarbeitungsressourcen
    DE112018002954T5 (de) Bereitstellen eines konfigurationsabhängigen arbeitsablaufs
    DE102016103713A1 (de) Erkennung virtueller Maschineneinheiten auf der Grundlage eines Katalogs
    DE112021002820T5 (de) Dynamische automatisierung einer auswahl von pipeline-artefakten
    DE102021130957A1 (de) Empfehlungen zur stabilität von software-aktualisierungen
    DE112019003130T5 (de) Hsm-selbstzerstörung in einer hybriden cloud-kms-lösung
    DE112020005526T5 (de) Reservieren eines oder mehrerer sicherheitsmodule für einen sicheren gast
    DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
    DE112021003402T5 (de) Blockchain-verwaltung von bereitstellungsfehlern
    DE112020004760T5 (de) Steuern von interaktionen mit einer skalierbaren anwendung
    DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen

    Legal Events

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