DE102018207314A1 - Software-definierte mikrodienste - Google Patents

Software-definierte mikrodienste Download PDF

Info

Publication number
DE102018207314A1
DE102018207314A1 DE102018207314.7A DE102018207314A DE102018207314A1 DE 102018207314 A1 DE102018207314 A1 DE 102018207314A1 DE 102018207314 A DE102018207314 A DE 102018207314A DE 102018207314 A1 DE102018207314 A1 DE 102018207314A1
Authority
DE
Germany
Prior art keywords
cima
virtual machine
request
based virtual
endpoint
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018207314.7A
Other languages
English (en)
Inventor
Tim Abels
Mingqiu Sun
Peggy Irelan
Rajesh Poornachandran
Gopinatth Selvaraje
Vincent Zimmer
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE102018207314A1 publication Critical patent/DE102018207314A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

Es wird eine Mikrodienst-Infrastruktur bereitgestellt, die die Aktualität von Rechenplattform-Mikrodiensten, die in einer prozessbasierten virtuellen Maschine implementiert sind, sicher aufrechterhält. Die durch die Infrastruktur gepflegten Rechenplattform-Mikrodienste können geschützte Methoden beinhalten, die den Zugang zu Komponenten der zugrunde liegenden Rechenumgebung bereitstellen und steuern. Diese Komponenten können beispielsweise Speichergeräte, Peripheriegeräte und Netzwerkschnittstellen beinhalten. Durch Bereitstellung eines Software-definierten Microservice-Layers zwischen diesen Hardware-Komponenten und Workflows, die eine störsichere Anwendungslogik spezifizieren, weisen die hier offenbarten Ausführungsformen eine im Vergleich zur herkömmlichen Technologie verbesserte Flexibilität und Skalierbarkeit auf.

Description

  • HINTERGRUND
  • Ein Mikrodienst ist eine Software-Komponente, die eine sehr kohärente Anwendungslogik ausführt und die klar definierte Schnittstellen freilegt, über die andere Systemkomponenten mit dem Mikrodienst zusammenwirken können. Aufgrund dieser Merkmale werden Mikrodienste im Allgemeinen locker mit anderen Systemkomponenten gekoppelt und können unabhängig von diesen geändert und verteilt werden. Mikrodienste sind jedoch in der Regel nicht locker mit der Rechenumgebung gekoppelt, in der sie ausgeführt werden. Vielmehr werden Mikrodienste kompiliert und verknüpft, um in speziellen Rechenumgebungen und unter der Steuerung spezieller Betriebssysteme zu laufen.
  • Figurenliste
    • 1 ist ein Blockschaubild zur Veranschaulichung eines Rechensystems, das eine Mikrodienst-Infrastruktur implementiert, die gemäß einer Ausführungsform der vorliegenden Offenbarung ausgestaltet ist.
    • 2 ist ein Blockschaubild zur Veranschaulichung verschiedener Komponenten der Host-Vorrichtung von 1 gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 3 ist ein Blockschaubild zur Veranschaulichung einer Programm-Build-Pipeline gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 4 ist ein Fließdiagramm zur Veranschaulichung eines Verfahrens zum Bereitstellen einer Mikrodienst-Infrastruktur gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 5 ist ein Blockschaubild zur Veranschaulichung eines Beispiels einer Mikrodienst-Infrastruktur, die einen besonderen Mikrodienst gemäß einer Ausführungsform der vorliegenden Offenbarung beinhaltet.
    • 6 ist ein Blockschaubild einer Rechenvorrichtung, die verwendet werden kann, um verschiedene Komponenten einer Mikrodienst-Infrastruktur gemäß einer Ausführungsform der vorliegenden Offenbarung zu implementieren.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine Mikrodienst-Infrastruktur gemäß vorliegender Offenbarung hält die Aktualität eines oder mehrerer in einer prozessbasierten virtuellen Maschine implementierter Rechenplattform-Mikrodienste sicher aufrecht. In einigen Ausführungsformen beinhaltet diese Infrastruktur einen Quellcode, der Eigenschaften und Methoden der Rechenplattform-Mikrodienste definiert, Compiler, die den Quellcode verarbeiten, um einen von der prozessbasierten virtuellen Maschine auszuführenden Zwischencode zu erzeugen, und vertrauenswürdige Endpunkte, die Mikrodienste und Methoden für die prozessbasierte virtuelle Maschine sicher verteilen. In einigen Ausführungsformen können die durch diese Infrastruktur gepflegten Rechenplattform-Mikrodienste den Zugang zu Komponenten einer zugrunde liegenden Rechenumgebung bereitstellen und steuern. Diese Komponenten können beispielsweise System-Eingabe/AusgabeGeräte, Speichergeräte, Peripheriegeräte und Netzwerkschnittstellen beinhalten. Darüber hinaus können diese Komponenten lokal zu einer Rechenvorrichtung, die die prozessbasierte virtuelle Maschine implementiert, und/oder getrennt und entfernt von dieser sein.
  • Die grundlegende Beschaffenheit der von diesen Mikrodiensten bereitgestellten plattformbasierten Rechendienste und der Methoden, auf die sie zugreifen, gewährleistet wesentliche Sicherheitsmaßnahmen. In einigen Ausführungsformen weist somit die prozessbasierte virtuelle Maschine einen gesteuerten unabänderlichen Methodenbereich (CIMA) zu und legt Methoden ab, die verwendet werden, um auf die zugrunde liegende Rechenumgebung in diesem CIMA zuzugreifen. Diese Methoden werden hier gegebenenfalls als CIMA-Methoden bezeichnet. In einigen Ausführungsformen schützt die prozessbasierte virtuelle Maschine einen im CIMA gespeicherten Zwischencode (zum Beispiel die CIMA-Methoden) vor einer Manipulation durch in der prozessbasierten virtuellen Maschine oder anderswo laufende Programme (zum Beispiel Mikrodienste, die CIMA-Methoden aufrufen).
  • Um bei der Verteilung einzelner Mikrodienste und CIMA-Methoden die Sicherheit zu gewährleisten, empfängt die prozessbasierte virtuelle Maschine in einigen Ausführungsformen darüber hinaus Sicherheitsabfragen von einem vertrauenswürdigen Endpunkt und beantwortet die Sicherheitsabfragen vor dem Ausführen einer Verteilungsaktivität. In diesen Ausführungsformen kann der vertrauenswürdige Endpunkt lokal zu einer Rechenvorrichtung, die die prozessbasierte virtuelle Maschine implementiert, oder getrennt und entfernt von dieser sein. In beiden Fällen können die in den von der prozessbasierten virtuellen Maschine erzeugten und an den vertrauenswürdigen Endpunkt gesendeten Antworten Beglaubigungsdaten beinhalten. Beglaubigungsdaten beschreiben die Konstitution einer oder mehrerer Komponenten der prozessbasierten virtuellen Maschine und können deshalb zum Messen der Integrität der prozessbasierten virtuellen Maschine verwendet werden. Soweit beispielsweise eine der für die Erzeugung der Beglaubigungsdaten untersuchten Komponenten verändert wurde (zum Beispiel über Schadsoftware), zeigen die Beglaubigungsdaten eine Änderung in der Komponente an. Der vertrauenswürdige Endpunkt kann somit beim Verarbeiten einer von der prozessbasierten virtuellen Maschine kommenden Antwort bestimmen, ob sich Komponenten der prozessbasierten virtuellen Maschine in einem erwarteten, vordefinierten Zustand befinden. Ist dies der Fall, sendet der vertrauenswürdige Endpunkt eine positive Bestätigung an die prozessbasierte virtuelle Maschine und baut dadurch eine vertrauenswürdige Kommunikationssitzung mit der prozessbasierten virtuellen Maschine auf. Wenn der vertrauenswürdige Endpunkt feststellt, dass eine oder mehrere Komponenten der prozessbasierten Maschine sich nicht in einem vordefinierten Zustand befinden, sendet der vertrauenswürdige Endpunkt keine positive Bestätigung und signalisiert dadurch der prozessbasierten virtuellen Maschine eine fehlende Vertrauenswürdigkeit. Wie eine prozessbasierte virtuelle Maschine auf eine mangelnde Vertrauenswürdigkeit reagiert, kann variieren, aber solche Reaktionen können die Beendigung der prozessbasierten virtuellen Maschine beinhalten.
  • Wenn eine vertrauenswürdige Kommunikationssitzung zwischen der prozessbasierten virtuellen Maschine und dem vertrauenswürdigen Endpunkt aufgebaut wird, kann der vertrauenswürdige Endpunkt in einigen Ausführungsformen, wie gewünscht, eine oder mehrere Aufforderungen zur Aktualisierung eines Mikrodienstes und/oder einer CIMA-Methode an die prozessbasierte virtuelle Maschine senden. Diese Aufforderungen können beispielsweise eine aktualisierte CIMA-Methode und eine Aufforderung zum Laden der aktualisierten CIMA-Methode beinhalten. In Antwort auf den Empfang einer solchen Aufforderung parst die prozessbasierte virtuelle Maschine die Aufforderung und validiert, ob die Aufforderung innerhalb einer vertrauenswürdigen Kommunikationssitzung empfangen wurde. Falls ja, verteilt die prozessbasierte virtuelle Maschine die in der Aufforderung an den CIMA enthaltene Aktualisierung. Wurde die Aufforderung nicht innerhalb einer vertrauenswürdigen Kommunikationssitzung empfangen, bricht die prozessbasierte virtuelle Maschine die Verteilung der Aktualisierung ab.
  • In einigen Ausführungsformen empfängt ein Compiler einen Quellcode und erzeugt einen Zwischencode zur Ausführung durch die prozessbasierte virtuelle Maschine. In diesen Ausführungsformen ist der Compiler eingerichtet zum Scannen des Quellcodes für einen oder mehrere Sprachkonstrukte, die geschützte Methoden (zum Beispiel CIMA-Methoden), die von einem Software-definierten Mikrodienst aufgerufen werden oder in einem solchem enthalten sind, anzeigen. Wenn der Compiler in diesen Ausführungsformen ein solches Sprachkonstrukt auffindet, erzeugt er zudem einen Zwischencode, der die geschützten Methoden definiert, und legt diesen Zwischencode an einem der prozessbasierten virtuellen Maschine zur Verfügung stehenden Speicherort ab. Bei Ausführung der prozessbasierten virtuellen Maschine dient infolgedessen ein Teil des Initialisierungsprozesses der prozessbasierten virtuellen Maschine zum Laden der neu kompilierten geschützten Methoden in den CIMA der prozessbasierten virtuellen Maschine.
  • In einigen Ausführungsformen werden die hier beschriebenen Software-definierten Rechenplattform-Mikrodienste durch einen lokalen oder Cloud-basierten Ressourcen-Broker als Teil eines Gesamtworkflows bereitgestellt und orchestriert. Innerhalb dieser Workflows können die Rechenplattform-Mikrodienste zur Erreichung eines Gesamtrechenziels mit anderen Ressourcen kommunizieren. Die Software-definierten Rechenplattform-Mikrodienste können beispielsweise Teil eines Peer-to-Peer-Systems sein, in dem lokale Ressourcen-Broker zusammenarbeiten, um einen Leader-Knoten für das Gesamtrechenziel zu identifizieren und zu wählen. Durch Bereitstellung eines Software-definierten Microservice-Layers zwischen dem orchestrierten Workflow und lokalen oder fernen Hardware-Ressourcen weisen die hier offenbarten Ausführungsformen eine im Vergleich zur herkömmlichen Technologie verbesserte Flexibilität und Skalierbarkeit auf.
  • In einigen Ausführungsformen legen die CIMA-Methoden außerdem Schnittstellen zur zugrunde liegenden Rechenumgebung frei, die durch Rechenplattform-Mikrodienste oder andere Mikrodienste aufgerufen werden. Die CIMA-Methoden können beispielsweise Teil einer Klassenbibliothek sein, die, zumindest teilweise, in den CIMA geladen und durch eine vertrauenswürdige Cloud-basierte Konsole konfiguriert und/oder angesteuert wird. Auf diese Weise ermöglichen die hier offenbarten Ausführungsformen eine Software-gesteuerte Ansicht der zugrunde liegenden Rechenumgebung auf einer fein granulierten Methodenebene.
  • Nachstehend werden noch weitere Aspekte, Ausführungsformen und Vorteile dieser beispielhaften Aspekte und Ausführungsformen ausführlich erörtert. Außerdem versteht es sich, dass sowohl die vorgenannten Informationen als auch die folgende ausführliche Beschreibung rein illustrative Beispiele verschiedener Aspekte und Ausführungsformen sind und dazu gedacht sind, einen Überblick oder Rahmen zum Verstehen der Art und des Charakters der beanspruchten Aspekte und Ausführungsformen zu vermitteln. Verweise auf „eine Ausführungsform“, „andere Ausführungsformen“, „ein Beispiel“, „einige Ausführungsformen“, „einige Beispiele“, „eine alternative Ausführungsform“, „verschiedene Ausführungsformen“, „mindestens eine Ausführungsform“, „eine weitere Ausführungsform“, „diese und andere Ausführungsformen“ oder dergleichen schließen einander nicht zwingend aus und sollen anzeigen, dass ein besonderes Merkmal, eine besondere Struktur oder eine besondere Charakteristik, wie im Zusammenhang mit der Ausführungsform oder dem Beispiel beschrieben, in mindestens einer Ausführungsform oder mindestens einem Beispiel enthalten sein kann. Die Erscheinungsformen dieser Begriffe beziehen sich nicht alle zwingend auf die gleiche Ausführungsform oder das gleiche Beispiel. Eine hier offenbarte Ausführungsform oder ein hier offenbartes Beispiel kann mit einer anderen Ausführungsform oder einem anderen Beispiel kombiniert werden.
  • Die hier gebrauchte Phraseologie und Terminologie dient Beschreibungszwecken und sollte nicht als einschränkend betrachtet werden. In der Einzahl vorgenommene Verweise auf Beispiele, Ausführungsformen, Komponenten, Elemente oder Handlungen der hier bezeichneten Systeme und Verfahren können auch Ausführungsformen mit erfassen, die eine Vielzahl beinhalten, und hier in der Mehrzahl vorgenommene Verweise auf eine Ausführungsform, eine Komponente, ein Element oder eine Handlung können auch Ausführungsformen mit erfassen, die nur eine Einzahl beinhalten. Verweise in der sprachlichen Form der Einzahl oder Mehrzahl sind nicht dazu gedacht, die vorliegend offenbarten Systeme oder Verfahren, ihre Komponenten, Handlungen oder Elemente einzuschränken. Der Gebrauch der Begriffe „beinhalten“, „umfassen“, „aufweisen“, „enthalten“, „einbeziehen“ und deren Abwandlungen ist dazu gedacht, die danach aufgelisteten Positionen und deren Äquivalente sowie zusätzliche Positionen in sich zu erfassen. Verweise auf „oder“ können als inkludierend gelesen werden, so dass Aufzählglieder, die mit Hilfe von „oder“ beschrieben werden, einen einzigen, mehrere und sämtliche der beschriebenen Aufzählglieder anzeigen können. Zudem gilt, im Falle eines nicht übereinstimmenden Sprachgebrauchs zwischen dem vorliegenden Dokument und den durch Inbezugnahme hier mit aufgenommenen Dokumenten, der Sprachgebrauch in den aufgenommenen Verweisdokumenten ergänzend zum Sprachgebrauch des vorliegenden Dokuments; bei unauflösbaren Abweichungen hat der Sprachgebrauch des vorliegenden Dokuments Vorrang.
  • Allgemeiner Überblick
  • Computer-implementierte Systeme, die aus eng gekoppelten Komponenten bestehen, sind im Allgemeinen fragil und nicht einfach zu modifizieren. Während es einige Ansätze zur Ermöglichung von lockerer gekoppelten Systemen gab, bleibt die enge Aneinanderkopplung von Systemkomponenten eine problematische Frage in einigen Bereichen. Obwohl beispielsweise viele herkömmliche verwaltete Laufzeitsysteme eine dynamische Aktualisierung von Anwendungen unterstützen, sind Systemschnittstellen wie System-Eingabe/Ausgabe, Netz, Speicherung und Peripherie ein Teil des hart kodierten Systemlayers, der per Programmierschnittstelle nicht änderbar ist. Es gibt viele gute Gründe für diesen Ansatz, insbesondere die Frage der Sicherheit, aber dieser Ansatz verhindert auch die Flexibilität von Systemen in Bezug darauf, wie diese Systemlayer-Dienste bereitgestellt werden. Während Virtualisierungstechniken in dieser Frage hilfreich sein können, können einige herkömmliche Virtualisierungstechniken eine Herausforderung bei der Granularität des Dienstes darstellen. Obwohl systembasierte oder betriebssystembasierte virtuelle Maschinen gute Tools für die Orchestrierung auf der Workloadebene sind (install-start-stop-resume), eignet sich beispielsweise eine prozessbasierte virtuelle Maschine am besten für eine fein granulierte Orchestrierung auf der Ebene der Anwendungsmethode.
  • Gemäß mindestens einigen hier offenbarten Ausführungsformen wird somit eine Mikrodienst-Infrastruktur bereitgestellt, in der virtualisierte Systemschnittstellen als Methoden und/oder Mikrodienste in einer prozessbasierten virtuellen Maschine, wie etwa der Java® Virtual Machine, implementiert sind. In einigen Ausführungsformen beinhaltet die Mikrodienst-Infrastruktur zumindest einen vertrauenswürdigen Endpunkt und ein Hostgerät. Die Mikrodienst-Infrastruktur stellt einen sicheren Mechanismus zur Pflege (zum Beispiel Upgrade oder sonstige Modifizierung) von Mikrodiensten und/oder Methoden bereit. Diese Mikrodienste und/oder Methoden bilden eine Software-basierte, virtualisierte Rechenplattform, die sicher modifiziert und ausgeführt werden kann.
  • Systemarchitektur
  • 1 veranschaulicht ein verteiltes Rechensystem 100, das eine Mikrodienst-Infrastruktur gemäß mindestens einer Ausführungsform implementiert. Wie zu sehen, beinhaltet das Rechensystem 100 ein Hostgerät 102, einen Remote-Ressourcen-Broker 106, Remote-Ressourcen 108, einen Workflow 118 und ein Kommunikationsnetz 110. Das Hostgerät 102 beinhaltet lokale Hardware-Ressourcen 114, die nachstehend unter Bezugnahme auf 6 näher beschrieben werden, und eine prozessbasierte virtuelle Maschine 112. Die lokalen Hardware-Ressourcen 114 können beispielsweise eine oder mehrere Netzwerkschnittstellen (zum Beispiel Netzwerkschnittstellenkarten), Datenspeichervorrichtungen (zum Beispiel fester oder flüchtiger Speicher) und Peripheriegeräte (zum Beispiel Anzeigen, Drucker, Lautsprecher und dergleichen) beinhalten. Wie dargestellt, implementiert und/oder steuert die prozessbasierte virtuelle Maschine 112 einen CIMA 104 und einen Mikrodienst 116.
  • Das in 1 dargestellte Kommunikationsnetz 110 kann eines aus einer Vielzahl verschiedener Netze beinhalten, über welches Rechenvorrichtungen Daten austauschen (zum Beispiel senden oder empfangen) können. Beispiele solcher Netze sind unter anderem Weitverkehrsnetze, lokale Netze, Mobilfunknetze, normale Telefonnetze und dergleichen. Während die über das Netz 110 ausgetauschten Daten nach einer Vielzahl von Normen wie beispielsweise TCP/IP (Transmission Control Protocol/Internet Protocol) kodiert werden können, sind die hier offenbarten Ausführungsformen nicht auf eine besondere Netznorm oder ein besonderes Normenwerk beschränkt.
  • In einigen durch 1 veranschaulichten Ausführungsformen werden das Hostgerät 102, der Remote-Ressourcen-Broker 106 und die Remote-Ressourcen 108 jeweils mit Hilfe von einem oder mehreren Rechenvorrichtungen, wie der weiter unten in Bezug auf 6 beschriebenen Rechenvorrichtung, implementiert. In diesen Ausführungsformen sind das Hostgerät 102, der Remote-Ressourcen-Broker 106 und die Remote-Ressourcen 108 jeweils für den Austausch von Informationen über das Netz 110 eingerichtet.
  • In einigen Ausführungsformen ist der Remote-Ressourcen-Broker 106 zur Bereitstellung und Orchestrierung des Workflows 118 ausgestaltet. Bei Ausführung gemäß dieser Ausgestaltung kann der Remote-Ressourcen-Broker 106 die Remote-Ressourcen 108 und/oder den durch das Hostgerät 102 implementierten Mikrodienst 116 bereitstellen und orchestrieren. Die auf diese Weise bereitgestellten und orchestrierten Remote-Ressourcen 108 können eine Vielzahl verschiedener realer und/oder virtueller Rechenressourcen bereitstellen und orchestrieren, die sich auf verschiedenen Abstraktionsebenen zur zugrunde liegenden Rechenhardware befinden. Die Remote-Ressourcen 108 können beispielsweise Datenspeichervorrichtungen wie Speicher, Rechenressourcen wie Prozessoren, Netzressourcen wie Router und dergleichen beinhalten. Zusätzlich oder alternativ dazu können die Remote-Ressourcen 108 reale und/oder virtuelle Server wie Anwendungsserver, Datenbankserver und dergleichen beinhalten. Diese realen und/oder virtuellen Server können in Rastern oder Clustern organisiert sein, die den Workflow 118 im Zusammenwirken implementieren. Beispiele für handelsübliche Remote-Ressourcen-Broker, die zur Implementierung des Remote-Ressourcen-Brokers 106 und zur Orchestrierung des Workflows 118 verwendet werden können, sind Amazon Web Services, Microsoft Azure, Google Compute Engine und IBM Softlayer.
  • In einigen Ausführungsformen ist der Remote-Ressourcen-Broker 106 auch ein vertrauenswürdiger Endpunkt und als solcher ausgestaltet zum Pflegen der Aktualität von auf verschiedenen anderen Rechenvorrichtungen residenten Methoden und Mikrodiensten, wie den im CIMA 104 abgelegten Methoden und/oder dem auf dem Hostgerät 102 residenten Mikrodienst 116. Bei Ausführung gemäß dieser Ausgestaltung pflegt der Remote-Ressourcen-Broker 106 die Aktualität der im CIMA 104 gespeicherten Methoden und/oder des Mikrodienstes 116 dadurch, dass er im Rahmen einer vertrauenswürdigen Kommunikationssitzung aktualisierte Versionen einer oder mehrerer Methoden an den CIMA 104 und/oder eine aktualisierte Version des Mikrodienstes 116 an das Hostgerät 102 ausreicht. Diese aktualisierten Versionen können eine oder mehrere Klassen beinhalten, die verschiedene Eigenschaften und Methoden beinhalten. Die Methoden können sowohl herkömmlich gespeicherte Methoden als auch CIMA-Methoden beinhalten.
  • Zur Herstellung und Aufrechterhaltung der vertrauenswürdigen Kommunikationssitzung mit dem Hostgerät 102 sendet der Remote-Ressourcen-Broker 106 in einigen Ausführungsformen periodisch und/oder aperiodisch eine oder mehrere Abfragen an die auf dem Hostgerät 102 residente prozessbasierte virtuelle Maschine 112 und empfängt eine oder mehrere Antworten von dieser. Die eine Antwort oder die mehreren Antworten können von der prozessbasierten virtuellen Maschine 112 erzeugte Beglaubigungsdaten beinhalten. In einigen Ausführungsformen beschreiben diese Beglaubigungsdaten die Konstitution verschiedener Komponenten des Hostgeräts 102. In diesen Ausführungsformen verarbeitet der Remote-Ressourcen-Broker 106 die eine Antwort oder die mehreren Antworten gemeinsam mit etwaig enthaltenen Beglaubigungsdaten, um sicherzustellen, dass nicht eine oder mehrere Komponenten des Hostgeräts 102 ersetzt, verändert oder anderweitig (zum Beispiel durch Schadsoftware) beeinträchtigt wurden. In einigen Ausführungsformen führt der Remote-Ressourcen-Broker 106 beispielsweise einen bitweisen Vergleich von Beglaubigungsdaten gegen Referenzdaten aus, die vom Remote-Ressourcen-Broker 106 anhand einer als an das Hostgerät 102 letztverteilten aufgezeichneten Kopie der Komponenten lokal erzeugt werden. Wenn der bitweise Vergleich einen Match ergibt (d. h., wenn die Beglaubigungsdaten mit den Referenzdaten übereinstimmen), ist der Remote-Ressourcen-Broker 106 in der Lage, die Integrität des Hostgerätes 102 zu überprüfen und dadurch mit diesem weiter in Sicherheit zu interagieren.
  • In einigen Ausführungsformen ist die prozessbasierte virtuelle Maschine 112 eine Hardware- und/oder eine Software-Komponente, die eine hardwareunabhängige und/oder betriebssystemunabhängige Rechenplattform zur Ausführung von Anwendungslogik bereitstellt. Diese Anwendungslogik kann die Form eines Softwareprogramms annehmen, das beispielsweise in einem von der prozessbasierten virtuellen Maschine 112 unterstützten Zwischencode kodiert ist. In einigen Ausführungsformen sind die prozessbasierte virtuelle Maschine 112 und ihre Komponenten ausgestaltet, um den gesamten im CIMA 104 abgelegten Zwischencode zu schützen und unveränderlich zu machen, außer soweit ein vertrauenswürdiger Endpunkt im Rahmen einer vertrauenswürdigen Kommunikationssitzung Änderungen am Zwischencode verlangt. In einer dieser Ausführungsformen speichert die prozessbasierte virtuelle Maschine 112 beispielsweise deskriptive Informationen zu den im CIMA 104 befindlichen Speicheradressen und bricht die Ausführung jeglicher Anweisung ab, die das Schreiben in eine abgelegte Speicheradresse bezweckt und nicht von einem vertrauenswürdigen Endpunkt im Rahmen einer vertrauenswürdigen Kommunikationssitzung gesendet wird. Beispiele prozessbasierter virtueller Maschinen, die zur Implementierung der prozessbasierten virtuellen Maschine 112 verwendet werden können, sind die Java Virtual Machine, Microsoft .Net Framework und dergleichen. Die hierin beschriebene prozessbasierte virtuelle Maschine kann zudem in einer durch einen Prozessor (zum Beispiel den weiter unten in Bezugnahme auf 6 beschriebenen Prozessor 604) gesteuerten Hardware oder in einer durch einen solchen Prozessor ausgeführten Software implementiert werden.
  • In einigen Ausführungsformen ist der Mikrodienst 116 ein durch die prozessbasierte virtuelle Maschine 112 ausführbares Programm zum Bereitstellen anderer durch die prozessbasierte virtuelle Maschine 112 ausführbarer Programme mit einem oder mehreren hardware- und/oder betriebssystemunabhängigen Rechenplattform-Diensten. Beispiele der Rechenplattform-Dienste, zu deren Bereitstellung der Mikrodienst 116 ausgestaltet sein kann, sind Netz-, Speicher- und/oder Peripheriedienste. In einer Ausführungsform ist der Mikrodienst 116 beispielsweise ausgestaltet zum Empfangen und Verarbeiten von Aufforderungen zum Senden von Informationen über eine virtualisierte Netzwerkschnittstellenkarte. In einer anderen Ausführungsform ist der Mikrodienst 116 ausgestaltet zum Empfangen und Verarbeiten von Aufforderungen zum Speichern von Daten in einer virtualisierten Datenspeichervorrichtung. In einer anderen Ausführungsform ist der Mikrodienst 116 ausgestaltet zum Empfangen und Verarbeiten von Aufforderungen zum Anzeigen von Informationen auf einer virtualisierten Anzeige. In diesen Ausführungsformen ist der Mikrodienst 116 somit ausgelegt zum Implementieren eines Rechenplattform-Dienstes durch Freilegen einer Systemschnittstelle zu einer virtualisierten Rechenplattformkomponente, Empfangen von Aufforderungen zur Nutzung der virtualisierten Rechenplattformkomponente über die Systemschnittstelle und Verarbeiten dieser Nutzungsaufforderungen. Bei der Verarbeitung der Nutzeraufforderungen kann der Mikrodienst 116 auf die lokalen Hardware-Ressourcen 114 (zum Beispiel über die prozessbasierte virtuelle Maschine 112) zugreifen und diese verwenden, Aufforderungen an den Remote-Ressourcen-Broker 106 zur Bereitstellung und/oder Nutzung der Remote-Ressourcen 108 senden, und/oder Aufforderungen an die Remote-Ressourcen 108 zum Zugreifen auf zuvor bereitgestellte Remote-Ressourcen und Verwenden dieser senden. Zusätzlich oder alternativ dazu kann der Mikrodienst 116 bei der Verarbeitung von Nutzungsaufforderungen im CIMA 104 abgelegte CIMA-Methoden aufrufen, die den Zugriff auf Komponenten der zugrunde liegenden Rechenumgebung steuern und gewährleisten. Besondere Beispiele der durch einige Ausführungsformen des Mikrodienstes 116 ausgeführten Prozesse sind weiter unten unter Bezugnahme auf die 4 und 5 beschrieben.
  • 2 stellt das Hostgerät 102 näher dar. Wie in 2 gezeigt, beinhaltet das Hostgerät 102 die prozessbasierte virtuelle Maschine 112, die lokalen Hardware-Ressourcen 114 und einen zum Hostgerät 102 lokalen vertrauenswürdigen Endpunkt 210. Die prozessbasierte virtuelle Maschine 112 beinhaltet einen Lader 202, einen Methodenbereich 206 und einen Measurer 214. Der Methodenbereich 206 beinhaltet den CIMA 104. Der CIMA 104 speichert CIMA-Methoden (zum Beispiel Methode3 und Methode4). Der Methodenbereich 206 speichert herkömmliche Methoden (zum Beispiel Methode1 und Methode2). Eine oder mehrere dieser Methoden können durch den Mikrodienst 116 oder andere Mikrodienste/Programme implementiert und/oder aufgerufen werden.
  • In einigen durch 2 veranschaulichten Ausführungsformen implementieren die lokalen Hardware-Ressourcen 114 sowohl die prozessbasierte virtuelle Maschine 112 als auch den vertrauenswürdigen Endpunkt 210. Die prozessbasierte virtuelle Maschine 112 und der vertrauenswürdige Endpunkt 210 können beispielsweise durch gemeinsam genutzte Komponenten (zum Beispiel durch einen oder mehrere Prozessoren) der lokalen Hardware-Ressourcen implementiert werden. In anderen Ausführungsformen kann der vertrauenswürdige Endpunkt 210 mit Hilfe von Komponenten der lokalen Hardware-Ressourcen implementiert werden, die am vertrauenswürdigen Endpunkt 210 gesichert und/oder diesem zugeordnet sind. Die prozessbasierte virtuelle Maschine 112 und der vertrauenswürdige Endpunkt 210 können in ähnlicher Weise jeweils als ein oder mehrere Prozesse implementiert werden, die unter der Steuerung eines einzigen Betriebssystems ablaufen, oder können jeweils als ein oder mehrere Prozesse implementiert werden, die unter der Steuerung unterschiedlicher Betriebssysteme ablaufen. In diesen Ausführungsformen und anderen Ausführungsformen, in denen der vertrauenswürdige Endpunkt und die prozessbasierte virtuelle Maschine beide innerhalb einer einzelnen Rechenvorrichtung implementiert werden, kann der vertrauenswürdige Endpunkt 210 mit der prozessbasierten virtuellen Maschine 112 (zum Beispiel über CIMA-Methoden-Ladeaufforderungen, Sicherheitsabfragen und Bestätigungen) mit Hilfe einer zum Hostgerät 102 lokalen Verbindung (d. h. einer Verbindung, die kein Netz, wie etwa das Netz 110, durchläuft) kommunizieren. In einigen Ausführungsformen ist der vertrauenswürdige Endpunkt 210 so ausgestaltet, dass er ein lokaler Ressourcen-Broker ist, der Workflows orchestriert, die durch mehrere in der prozessbasierten virtuellen Maschine 112 ausgeführten Mikrodienste implementiert werden.
  • In einigen Ausführungsformen ist der vertrauenswürdige Endpunkt 210 ausgestaltet zum Pflegen der Aktualität von auf dem Hostgerät 102 residenten Mikrodiensten. In diesen Ausführungsformen kann der vertrauenswürdige Endpunkt 210 beispielsweise vertrauenswürdige Kommunikationssitzungen mit der prozessbasierten virtuellen Maschine 112 aufbauen und die Aktualität des Mikrodienstes 116 in diesen vertrauenswürdigen Kommunikationssitzungen aufrechterhalten. Bei Ausführung gemäß dieser Ausgestaltung in der in 2 dargestellten Ausführungsform erzeugt der vertrauenswürdige Endpunkt 210 zum Aufbauen einer vertrauenswürdigen Kommunikationssitzung die Sicherheitsabfrage 216 und sendet diese an den Measurer 214. Der Measurer 214 ist ausgestaltet zum Empfangen und Parsen der Sicherheitsabfrage und, in Beantwortung, Erzeugen und Senden der Sicherheitsantwort 218 an den vertrauenswürdigen Endpunkt 210. Die Sicherheitsantwort 218 kann Beglaubigungsdaten beinhalten, die die Konstitution einer oder mehrerer Komponenten der prozessbasierten virtuellen Maschine 112 beschreiben. Diese Beglaubigungsdaten können beispielsweise einen oder mehrere für den Lader 202 berechnete Hashwerte beinhalten. Der vertrauenswürdige Endpunkt 210 empfängt und verarbeitet die Sicherheitsantwort 218. Soweit der vertrauenswürdige Endpunkt 210 die Beglaubigungsdaten mit vom vertrauenswürdigen Endpunkt 210 generierten Referenzdaten erfolgreich abgleicht, sendet der vertrauenswürdige Endpunkt 210 eine Bestätigung 220 an die prozessbasierte virtuelle Maschine 112 und baut dadurch eine vertrauenswürdige Kommunikationssitzung auf.
  • In einigen Ausführungsformen ist der vertrauenswürdige Endpunkt 210 dazu ausgelegt, eine Mikrodienst-Aktualisierungsaufforderung, die eine CIMA-Methoden-Ladeaufforderung 212 beinhaltet, zu erzeugen und innerhalb der vertrauenswürdigen Kommunikationssitzung zu senden. Alternativ oder zusätzlich dazu ist in einigen Ausführungsformen der vertrauenswürdige Endpunkt 210 dazu ausgelegt, die CIMA-Methoden-Ladeaufforderung 212 unabhängig von einer Mikrodienst-Aktualisierungsaufforderung zu erzeugen und innerhalb der vertrauenswürdigen Kommunikationssitzung zu senden. Die CIMA-Methoden-Ladeaufforderung 212 kann beispielsweise mindestens einen Teil des Mikrodienstes 116 (zum Beispiel Methode3 und/oder Methode4) oder eine als Zwischencode kodierte andere CIMA-Methode beinhalten, kann Unterschiede zwischen einer früheren Version eines Teils des Mikrodienstes oder der CIMA-Methode und einer neuen Version des Mikrodienstes oder der CIMA-Methode beinhalten, und/oder kann andere Informationen beinhalten, die eine aktualisierte Version des Mikrodienstes, im Mikrodienst enthaltene oder von diesem verwendete Methoden und/oder eine andere CIMA-Methode angeben.
  • In einigen Ausführungsformen ist der Lader 202 ausgestaltet zum Verwalten des Abrufens und Speicherns eines Zwischencodes vor seiner Ausführung durch die prozessbasierte virtuelle Maschine 112. Bei Ausführung gemäß dieser Ausgestaltung in einigen durch 2 veranschaulichten Ausführungsformen ruft der Lader 202 einen Zwischencode aus einer in den lokalen Hardware-Ressourcen 114 enthaltenen Datenspeichervorrichtung ab und speichert den Zwischencode entweder im CIMA 104 oder im Methodenbereich 206. Der Lader 202 reserviert den CIMA 104 für das Speichern eines Zwischencodes (zum Beispiel Methode3 und/oder Methode4), der Rechenplattform-Dienste bereitstellt. Der Lader 202 speichert einen anderen von der prozessbasierten virtuellen Maschine 112 auszuführenden Zwischencode (zum Beispiel Methode1 und Methode2) im Methodenbereich 206.
  • In einigen Ausführungsformen ist der Lader 202 ausgestaltet zum Empfangen, Verarbeiten und Beantworten von Sicherheitsabfragen, die von vertrauenswürdigen Endpunkten wie vom Remote-Ressourcen-Broker 106 und/oder vom lokalen vertrauenswürdigen Endpunkt 210 erzeugt werden. In anderen Ausführungsformen ist der Lader 202 ausgelegt zum Empfangen, Verarbeiten und Beantworten von Mikrodienst-Aktualisierungsaufforderungen, die CIMA-Methoden-Ladeaufforderungen beinhalten können oder auch nicht, wie die CIMA-Methoden-Ladeaufforderung 212. Beispiele für durch den Lader 202 im Rahmen dieser Ausgestaltungen ausgeführten Aktionen werden weiter unten unter Bezugnahme auf die 4 und 5 beschrieben.
  • Programm-Build-Pipeline
  • 3 veranschaulicht ein Beispiel einer Programm-Build-Pipeline gemäß verschiedener hier offenbarter Ausführungsformen. Wie dargestellt, beinhaltet 3 einen CIMA-Methoden-Quellcode 300, einen Compiler 302, einen CIMA-Methoden-Zwischencode 304 und die prozessbasierte virtuelle Maschine 112. Der CIMA-Methoden-Quellcode 300 kann in einer der verschiedenen menschenlesbaren Sprachen wie Java geschrieben sein. Es folgt ein Beispiel für eine CIMA-Methodendeklaration in menschenlesbarem Quellcode.
# software-definable

  public static void writeFlashData(file fileName,
          byte[] src,
          int srcOff,
          int srcLen)
              throws UtilException;
Wie von dieser CIMA-Methodendeklaration dargestellt, kann in einigen Ausführungsformen eine Annotation (zum Beispiel „software-definable“) verwendet werden, um eine Methode (writeFlashData()) als CIMA-Methode zu identifizieren. In anderen Ausführungsformen kann eine CIMA-Methode in ähnlicher Weise mit Hilfe eines Schlüsselwortes (zum Beispiel „software-definable“) identifiziert werden. Obwohl diese besonderen Quellcode-Sprachkonstrukte als Beispiele vorgebracht werden, sind die hier offenbarten Ausführungsformen nicht auf ein spezielles Quellcode-Sprachkonstrukt beschränkt.
  • In einigen Ausführungsformen beinhaltet der Compiler 302 einen prozessbasierten virtuellen Maschinencompiler, der zum Identifizieren und Verarbeiten eines beliebigen eines oder mehrerer zur Identifizierung von CIMA-Methoden verwendeter Sprachkonstrukte ausgestaltet ist. Bei Empfang eines Befehls zum Kompilieren des CIMA-Methoden-Quellcodes 300 kompiliert der Compiler 302 den CIMA-Methoden-Quellcode 300, um den CIMA-Methoden-Zwischencode 304 zu erzeugen. Als Teil dieses Kompilierungsprozesses identifiziert der Compiler 302 deklarierte CIMA-Methoden und erzeugt einen Zwischencode innerhalb des CIMA-Methoden-Zwischencodes 304, der so ausgestaltet ist, dass er einen Lader der prozessbasierten virtuellen Maschine (zum Beispiel den Lader 202) veranlasst, den Zwischencode in einem CIMA (zum Beispiel im CIMA 104) zu speichern. Auf diese Weise wird der CIMA-Methoden-Zwischencode 304 als durch einen vertrauenswürdigen Endpunkt (zum Beispiel den Remote-Ressourcen-Broker 106 oder den vertrauenswürdigen Endpunkt 210) ansteuerbar und upgradefähig identifiziert. Der CIMA-Methoden-Zwischencode 304 wird dann an die prozessbasierte virtuelle Maschine 112 (zum Beispiel über den Lader 202) zwecks Speicherung und Ausführung geliefert.
  • Methodik
  • Gemäß einigen Ausführungsformen führt eine in einem Rechensystem, wie dem verteilten Rechensystem 100, implementierte Mikrodienst-Infrastruktur Prozesse aus, die rechenplattformbasierte Mikrodienste und/oder CIMA-Methoden an Hostgeräte sicher verteilt. 4 illustriert einen CIMA-Wartungsprozess 400 gemäß diesen Ausführungsformen. Wie in 4 gezeigt, beinhaltet der CIMA-Wartungsprozess 400 mehrere Aktionen, die zusammen ein Hostgerät, wie etwa das Hostgerät 102, in die Lage versetzen, eine vertrauenswürdige Kommunikationssitzung mit einem vertrauenswürdigen Endpunkt aufzubauen, Aktualisierungen zu einer oder mehreren CIMA-Methoden innerhalb der vertrauenswürdigen Kommunikationssitzung zu empfangen, diese Aktualisierungen zu verteilen und einen oder mehrere Mikrodienste, die die CIMA-Methoden implementieren und/oder mit diesen interagieren, in einer prozessbasierten virtuellen Maschine auszuführen.
  • Wie in 4 dargestellt, beginnt der CIMA-Wartungsprozess 400 bei Aktion 402 damit, dass das Hostgerät eine prozessbasierte virtuelle Maschine, wie die prozessbasierte virtuelle Maschine 112, initialisiert. In einigen Ausführungsformen beinhalten die vom Hostgerät in Aktion 402 ausgeführten Handlungen: Instanziieren eines Laders wie des Laders 202, Zuweisen eines CIMA wie des CIMA 104 und Zuweisen eines Methodenbereichs wie des Methodenbereichs 206. Die vom Hostgerät in Aktion 402 ausgeführten Aktionen können ferner beinhalten: Laden einer oder mehrerer Methoden, wie der unter Bezugnahme auf 2 oben beschriebenen Methode1 und/oder Methode2, über den Lader in den Methodenbereich; Laden einer oder mehrerer CIMA-Methoden, wie der Methode3 und/oder Methode4, über den Lader in den CIMA; Laden von Eigenschaften und anderen Komponenten des Mikrodienstes 116 über den Lader und Ausführen des Mikrodienstes 116 und/oder seiner Komponenten.
  • In der Aktion 418 bestimmt die prozessbasierte virtuelle Maschine, ob eine Mikrodienst-Aktualisierungsaufforderung, die eine CIMA-Methoden-Ladeaufforderung wie die CIMA-Methoden-Ladeaufforderung 212 beinhaltet, von einem vertrauenswürdigen Endpunkt wie dem Remote-Ressourcen-Broker 106 oder dem vertrauenswürdigen Endpunkt 210 empfangen wurde. In Aktion 420 bestimmt die prozessbasierte virtuelle Maschine, ob die Mikrodienst-Aktualisierungsaufforderung während einer vertrauenswürdigen Kommunikationssitzung empfangen wurde. Die prozessbasierte virtuelle Maschine kann beispielsweise die Empfangszeit der Mikrodienst-Aktualisierungsaufforderung mit der Zeit der letzten erfolgreichen Sicherheitsantwort vergleichen. Wenn die Mikrodienst-Aktualisierungsaufforderung während einer vertrauenswürdigen Kommunikationssitzung empfangen wurde (zum Beispiel wenn der Empfangszeitpunkt der Mikrodienst-Aktualisierungsaufforderung in einem vorbestimmten Zeitbereich der letzten erfolgreichen Sicherheitsantwort liegt), führt die prozessbasierte virtuelle Maschine Aktion 422 aus. Wenn die Mikrodienst-Aktualisierungsaufforderung nicht während einer vertrauenswürdigen Kommunikationssitzung empfangen wurde (zum Beispiel wenn der Empfangszeitpunkt der Mikrodienst-Aktualisierungsaufforderung nicht in einem vorbestimmten Zeitbereich der letzten erfolgreich empfangenen Sicherheitsantwort liegt), führt die prozessbasierte virtuelle Maschine den Mikrodienst und/oder seine Komponenten in Aktion 410 aus.
  • In der Aktion 422 verteilt die prozessbasierte virtuelle Maschine eine in der CIMA-Methoden-Ladeaufforderung enthaltene CIMA-Methode an den CIMA im Hostgerät. Beim Verteilen der CIMA-Methode speichert die prozessbasierte virtuelle Maschine (zum Beispiel über den Lader) einen in der CIMA-Methoden-Ladeaufforderung enthaltenen und/oder dargestellten Zwischencode im CIMA. Diese Verteilungsaktivität kann das Kopieren von Daten beinhalten oder kann eine aufwändigere Bearbeitung der Daten (zum Beispiel Entschlüsseln, Dekomprimieren oder dergleichen) beinhalten.
  • In Aktion 408 bestimmt die prozessbasierte virtuelle Maschine, ob alle in der prozessbasierten virtuellen Maschine ablaufenden Prozesse einen sicheren Punkt erreicht haben. Falls nicht, fährt die prozessbasierte virtuelle Maschine mit der Ausführung der Mikrodienste in Aktion 410 fort. Falls alle Prozesse einen sicheren Punkt erreicht haben, führt die prozessbasierte virtuelle Maschine Aktion 404 aus. In Aktion 404 bestimmt die prozessbasierte virtuelle Maschine, ob eine Sicherheitsabfrage wie die Sicherheitsabfrage 216 vom vertrauenswürdigen Endpunkt empfangen worden ist. Falls ja, führt die prozessbasierte virtuelle Maschine Aktion 412 aus. Ansonsten führt die prozessbasierte virtuelle Maschine Aktion 410 aus.
  • In Aktion 412 misst die prozessbasierte virtuelle Maschine, beispielsweise durch Ausführen des Measurers 214, die Integrität verschiedener Komponenten des Hostgerätes zum Erzeugen von Beglaubigungsdaten, die die Konstitution der Komponenten beschreiben. Die Komponenten, für die Beglaubigungsdaten generiert werden, können beispielsweise Komponenten der eigentlichen prozessbasierten virtuellen Maschine, wie den Lader, die Anwendungslogik, die Mikrodienste sowie Treiber, oder andere Komponenten, die von der prozessbasierten virtuellen Maschine verwendet werden, um mit zum Hostgerät lokalen Hardware-Komponenten, wie etwa den lokalen Hardware-Ressourcen 114, zu kommunizieren, beinhalten. In Aktion 414 sendet die prozessbasierte virtuelle Maschine eine Antwort, wie etwa die Sicherheitsantwort 218, auf die Sicherheitsabfrage. Diese Antwort kann die in Aktion 412 erzeugten Beglaubigungsdaten beinhalten.
  • In Aktion 416 bestimmt die prozessbasierte virtuelle Maschine, ob die Antwort erfolgreich war. Die prozessbasierte virtuelle Maschine kann diese Bestimmung beispielsweise ausgehend davon durchführen, ob eine positive Bestätigung, wie etwa die Bestätigung 220, vom vertrauenswürdigen Endpunkt innerhalb einer vorbestimmten Zeitdauer empfangen wird. Wenn ja, wird eine vertrauenswürdige Kommunikationssitzung aufgebaut und die prozessbasierte virtuelle Maschine setzt mit Aktion 418 fort. In einigen Ausführungsformen speichert die prozessbasierte virtuelle Maschine in der Aktion 416 einen Zeitstempel, der anzeigt, wann die vertrauenswürdige Kommunikationssitzung aufgebaut wurde. Bei nicht erfolgreicher Antwort (zum Beispiel bei Nichteingang der positive Bestätigung innerhalb der vorbestimmten Zeitdauer) wird keine vertrauenswürdige Kommunikationssitzung aufgebaut, und die prozessbasierte virtuelle Maschine beendet den CIMA-Wartungsprozess 400 und beendet in einigen Ausführungsformen als zusätzliche Sicherheitsmaßnahme alle Prozesse, sich selbst inbegriffen.
  • Jeder der hier offenbarten Prozesse stellt eine bestimmte Sequenz von Aktionen in einem bestimmten Beispiel dar. Die in diesen Prozessen enthaltenen Aktionen können von, oder mit Hilfe von, einer oder mehreren gemäß der vorliegenden Erörterung speziell ausgestalteten Rechenvorrichtungen ausgeführt werden. Einige Aktionen sind optional und können gemäß einem oder mehreren Beispielen weggelassen werden. Darüber hinaus kann die Reihenfolge der Aktionen verändert oder können weitere Aktionen hinzugefügt werden, ohne den Schutzumfang der hier erörterten Systeme und Verfahren zu verlassen.
  • Beispiel Flash-Speicher-Mikrodienst
  • 5 veranschaulicht ein verteiltes Rechensystem 500, das eine Mikrodienst-Infrastruktur gemäß mindestens einer Ausführungsform implementiert. Wie gezeigt, beinhaltet das Rechensystem 500 das Hostgerät 102, den Remote-Ressourcen-Broker 106, einen Remote-Datenspeicher 506, einen Remote-Datenspeicher 508, einen Workflow 118 und das Kommunikationsnetz 110. Wie in 5 dargestellt, werden der Remote-Datenspeicher 506 und der Remote-Datenspeicher 508 mit Hilfe einer oder mehrerer Rechenvorrichtungen, wie etwa der weiter unten unter Bezugnahme auf 6 beschriebenen Rechenvorrichtung, implementiert. In diesen Ausführungsformen sind der Remote-Datenspeicher 506 und der Remote-Datenspeicher 508 für einen Austausch von Informationen über das Netz 110 ausgestaltet.
  • Wie in 5 dargestellt, beinhaltet das Hostgerät 102 eine lokale Flash-Speicherhardware 504. Wie gezeigt, implementiert und/oder steuert die prozessbasierte virtuelle Maschine 112 einen Flash-Speicher-Mikrodienst 502. In einigen Ausführungsformen ist der Flash-Speicher-Mikrodienst 502 ein von der prozessbasierten virtuellen Maschine 112 ausführbares Programm zum Bereitstellen anderer gemäß dem Workflow 118 ausgeführten Programme mit Zugriff auf die Flash-Speicherablage. Bei der Verarbeitung der Aufforderungen zum Ablegen von Daten im Flash-Speicher kann der Flash-Speicher-Mikrodienst 502 auf den lokalen Flash-Speicher 504 zugreifen und diesen nutzen sowie Aufforderungen an den Remote-Ressourcen-Broker 106 zur Bereitstellung und/oder Nutzung des Remote-Datenspeichers 506 oder Remote-Datenspeichers 508 senden.
  • In einigen Ausführungsformen ist der Flash-Speicher-Mikrodienst 502 beispielsweise so ausgestaltet, dass er Aufforderungen zum Speichern von Daten verarbeitet, indem er die Daten im Flash-Speicher 504 und im Remote-Datenspeicher 506 speichert. Falls der Remote-Datenspeicher 506 nicht verfügbar oder gefährdet ist, kann der Remote-Ressourcen-Broker 106 gemäß dieser Ausführungsformen in einem Beispiel eine Mikrodienst-Aktualisierungsaufforderung, die eine CIMA-Methoden-Ladeaufforderung beinhaltet, an das Hostgerät 102 senden. Die CIMA-Methoden-Ladeaufforderung kann einen Zwischencode beinhalten, der bei Verteilung bewirkt, dass der Flash-Speicher-Mikrodienst 502 Aufforderungen zum Speichern von Daten verarbeitet, indem er die Daten im Remote-Datenspeicher 508 speichert.
  • Rechenvorrichtung
  • 6 veranschaulicht eine Rechenvorrichtung 600, die verwendet werden kann, um verschiedene Komponenten einer Mikrodienst-Infrastruktur wie hierin beschrieben zu implementieren. Wie gezeigt, beinhaltet die Rechenvorrichtung 600 einen Speicher 602, mindestens einen Prozessor 604 und mindestens eine Schnittstelle 606. Obwohl die besonderen Arten und Modelle dieser Komponenten von Rechenvorrichtung zu Rechenvorrichtung variieren können, wird davon ausgegangen, dass jede Rechenvorrichtung einen Prozessor, einen Speicher und eine Schnittstelle beinhaltet.
  • Die Schnittstelle 606 beinhaltet ein oder mehrere physische Schnittstellengeräte wie Eingabegeräte, Ausgabegeräte und kombinierte Eingabe/Ausgabe-Geräte sowie einen Softwarestack, der zum Steuern des Gerätebetriebs ausgestaltet ist. Schnittstellengeräte können Eingaben empfangen oder Ausgaben bereitstellen. Insbesondere können Ausgabegeräte Informationen für eine externe Darstellung ausgeben und Eingabegeräte können Informationen aus externen Quellen annehmen oder generieren. Beispiele von Schnittstellengeräten sind Tastaturen, Mäuse, Trackballs, Mikrofone, berührungsempfindliche Bildschirme, Druckgeräte, Anzeigebildschirme, Lautsprecher, Netzwerkschnittstellenkarten, Umgebungssensoren und dergleichen. Schnittstellengeräte ermöglichen programmierbaren Geräten den Informationsaustausch und die Kommunikation mit externen Entitäten wie Nutzern und anderen Systemen.
  • Der Speicher 602 beinhaltet einen flüchtigen und/oder nichtflüchtigen (nichttransienten) Datenspeicher, der vom Prozessor 602 lesbar und/oder beschreibbar ist. Der Speicher 602 speichert Programme und Daten, die während des Betriebs der Rechenvorrichtung 600 verwendet oder bearbeitet werden. Die im Speicher 602 gespeicherten Programme sind eine Abfolge von Anweisungen, die durch den mindestens einen Prozessor 602 ausgeführt werden können. Der Speicher 602 kann relativ leistungsstarken Datenspeicher wie Register, Zwischenspeicher, dynamischen Arbeitsspeicher (DRAM) und statischen Speicher beinhalten. Der Speicher 602 kann ferner ein relativ leistungsarmes, nichtflüchtiges, computerlesbares und/oder beschreibbares Datenspeichermedium wie Flash-Speicher oder eine optische oder magnetische Platte beinhalten. Verschiedene Ausführungsformen können den Speicher 602 in vereinzelten und, in einigen Fällen, einmaligen Strukturen organisieren, um Daten zur Unterstützung der hier offenbarten Komponenten zu speichern. Diese Datenstrukturen können speziell zur Einsparung von Speicherplatz oder zur Steigerung der Datenaustauschleistung ausgestaltet sein und können zur Speicherung von Werten für besondere Daten und Datentypen bemessen und organisiert sein.
  • Zur Implementierung und/oder Steuerung spezialisierter Komponenten führt der Prozessor 604 in einigen Ausführungsformen eine Reihe von Anweisungen (d. h. ein oder mehrere Programme) aus, die zu bearbeiteten Daten führen. Der Prozessor 604 kann jegliche im Stand der Technik bekannte Art von Prozessor, Multiprozessor, Mikroprozessor oder Controller sein. Der Prozessor 604 ist über einen Verbindungsmechanismus wie einen Bus oder eine andere Datenverbindung mit dem Speicher 602 und den Schnittstellen 606 verbunden und kommuniziert Daten mit diesen. Dieser Verbindungsmechanismus ist in 6 durch Linien dargestellt, die die Komponenten in der Rechenvorrichtung verbinden. Bei Betrieb bewirkt der Prozessor 604, dass Daten aus einem nichtflüchtigen (d. h. nichttransienten) Datenspeichermedium im Speicher 602 ausgelesen und auf Hochleistungsdatenspeicher geschrieben werden. Der Prozessor 604 bearbeitet die Daten im Hochleistungsdatenspeicher und kopiert nach erfolgter Verarbeitung die bearbeiteten Daten auf das Datenspeichermedium.
  • Obwohl als Beispiel für eine Rechenvorrichtung mit Fähigkeit zur Ausführung der hier offenbarten Prozesse die Rechenvorrichtung 600 dargestellt wird, sind Ausführungsformen nicht auf die in 6 dargestellte Rechenvorrichtung beschränkt. Beispielsweise können verschiedene Prozesse durch eine oder mehrere Rechenvorrichtungen ausgeführt werden, die Architekturen oder Komponenten abweichend von der Darstellung in 6 aufweisen. Eine programmierbare Vorrichtung kann beispielsweise eine speziell programmierte Sonderhardware beinhalten, wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein komplexes programmierbares Logikgerät (CPLD) und andere Umsetzungen in Silizium, oder andere Hardware, die auf die Ausführung von hier offenbarten Prozessen zugeschnitten ist. Komponenten einer Rechenvorrichtung wie hierin offenbart können also in Software, Hardware, Firmware oder einer beliebigen Kombination daraus implementiert werden.
  • Wie oben unter Bezugnahme auf 1 beschrieben, wird die prozessbasierte virtuelle Maschine 112 beispielsweise in Hardware implementiert. In anderen Ausführungsformen wird die prozessbasierte virtuelle Maschine 112 durch den Prozessor 604 implementiert. Wie oben beschrieben, kann dieser Prozessor 604 ein Universalprozessor sein. Bei Ausführung eines speziellen Software-Prozesses gemäß vorliegender Beschreibung (zum Beispiel gemäß Darstellung in 3 bis 5) wird der Prozessor 604 jedoch zu einem Sonderzweckprozessor, der in der Lage ist, spezielle logikbasierte Bestimmungen anhand empfangener Eingangsdaten vorzunehmen, und ferner in der Lage ist, eine oder mehrere Ausgaben bereitzustellen, mit deren Hilfe eine nachfolgende Verarbeitung, die durch einen Prozessor 604 und/oder andere Prozessoren oder Schaltungen, mit denen der Prozessor 604 kommunikationswirksam gekoppelt ist, auszuführen ist, gesteuert oder anderweitig angeregt werden kann. Der Prozessor 604 reagiert auf spezielle Eingangsimpulse auf spezielle Weise und erzeugt auf Grundlage des Eingangsimpulses eine entsprechende Ausgabe. In diesem Sinne wird die Struktur von Prozessor 604 gemäß einer Ausführungsform durch die in 3 bis 5 dargestellten Prozesse festgelegt. In einigen beispielhaften Fällen verfährt der Prozessor 604 außerdem über eine Sequenz logischer Übergänge, bei der verschiedene interne Registerzustände und/oder Bitzellenzustände innerhalb oder außerhalb des Prozessors (604) auf logic-high oder logic-low gesetzt werden können. Diese spezielle Sequenz logischer Übergänge wird durch den Zustand elektrischer Eingangssignale zum Prozessor 604 bestimmt, und vom Prozessor 604 wird beim Ausführen der jeweiligen Software-Anweisung der in 3 bis 5 dargestellten Prozesse effektiv eine Sonderstruktur angenommen. Speziell antizipieren diese Anweisungen die verschiedenen zu empfangenden Impulse und ändern die implizierten Speicherzustände entsprechend. Auf diese Weise kann der Prozessor 604 nützliche Ausgangssignale erzeugen und speichern oder anderweitig bereitstellen. Es ist also ersichtlich, dass der Prozessor 604 während der Ausführung eines Software-Prozesses zu einer Sondermaschine wird, die in der Lage ist, anhand der einen oder mehreren während der Ausführung der jeweiligen Anweisung durchgeführten logischen Operationen nur spezifische Eingangssignale zu verarbeiten und spezifische Ausgangssignale auszugeben. In mindestens einigen Beispielen ist der Prozessor 604 ausgelegt zum Ausführen einer Funktion, in welcher eine Software in einem mit dem Prozessor 604 gekoppelten Datenspeichergerät (zum Beispiel Speicher 602) gespeichert wird, und diese Software ist so ausgestaltet, dass sie den Prozessor 604 dazu veranlasst, eine Sequenz verschiedener logischer Operationen zu durchlaufen, in deren Ergebnis die Funktion ausgeführt wird.
  • Weitere beispielhafte Ausführungsformen
  • Die folgenden Beispiele gelten für weitere Ausführungsformen, aus denen zahlreiche Umordnungen und Ausgestaltungen ersichtlich werden.
  • Beispiel 1 ist eine Rechenvorrichtung umfassend einen Speicher, mindestens einen mit dem Speicher gekoppelten Prozessor und eine durch den mindestens einen Prozessor ausführbare prozessbasierte virtuelle Maschine. Die prozessbasierte virtuelle Maschine ist ausgestaltet zum Initialisieren mindestens eines gesteuerten unabänderlichen Methodenbereichs (CIMA) im Speicher; Laden einer CIMA-Methode in den mindestens einen CIMA; Empfangen einer ersten Aufforderung zur Aktualisierung der CIMA-Methode; Bestimmen, ob die erste Aufforderung von einem vertrauenswürdigen Endpunkt empfangen wurde; und Abbrechen der Verarbeitung der ersten Aufforderung in Reaktion auf das Bestimmen, dass die erste Aufforderung von einem anderen Endpunkt als dem vertrauenswürdigen Endpunkt empfangen wurde.
  • Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, wobei die prozessbasierte virtuelle Maschine ferner ausgestaltet ist zum Empfangen einer zweiten Aufforderung zur Aktualisierung der CIMA-Methode, wobei die zweite Aufforderung eine aktualisierte Version der CIMA-Methode vorgibt; Bestimmen, ob die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde; und Laden der aktualisierten Version der CIMA-Methode in den mindestens einen CIMA in Reaktion auf das Bestimmen, dass die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde.
  • Beispiel 3 beinhaltet den Gegenstand von Beispiel 1 oder Beispiel 2, wobei die prozessbasierte virtuelle Maschine ferner ausgestaltet ist zum Empfangen einer Abfrage von dem vertrauenswürdigen Endpunkt; Beantworten der Abfrage; Empfangen einer positiven Bestätigung; und Fortsetzen der Ausführung in Reaktion auf das Empfangen der positiven Bestätigung.
  • Beispiel 4 beinhaltet den Gegenstand von Beispiel 3, wobei die prozessbasierte virtuelle Maschine ausgestaltet ist zum Beantworten der Abfrage zumindest teilweise durch Erzeugen von Beglaubigungsdaten, die eine Messung der Integrität einer oder mehrerer Komponenten der prozessbasierten virtuellen Maschine umfasst.
  • Beispiel 5 beinhaltet den Gegenstand von Beispiel 3 oder Beispiel 4, wobei die prozessbasierte virtuelle Maschine ferner ausgestaltet ist zum Aufbauen einer vertrauenswürdigen Kommunikationssitzung mit dem vertrauenswürdigen Endpunkt in Reaktion auf das Empfangen der positiven Bestätigung; und Empfangen der zweiten Aufforderung von dem vertrauenswürdigen Endpunkt innerhalb der vertrauenswürdigen Kommunikationssitzung.
  • Beispiel 6 beinhaltet den Gegenstand eines der Beispiele 1 bis 5, wobei die prozessbasierte virtuelle Maschine ferner ausgestaltet ist zum Empfangen einer Abfrage von dem vertrauenswürdigen Endpunkt; Beantworten der Abfrage; Nichtempfangen einer positiven Bestätigung innerhalb einer vorbestimmten Zeitdauer; und Beendigen der Ausführung der prozessbasierten virtuellen Maschine in Reaktion auf das Nichtempfangen der positiven Bestätigung innerhalb der vorbestimmten Zeitdauer.
  • Beispiel 7 beinhaltet den Gegenstand eines der Beispiele 3 bis 6, wobei die prozessbasierte virtuelle Maschine ferner ausgestaltet ist zum Beantworten der Abfrage an einem sicheren Punkt.
  • Beispiel 8 beinhaltet den Gegenstand eines der Beispiele 1 bis 7, wobei die prozessbasierte virtuelle Maschine eine Java Virtual Machine ist.
  • Beispiel 9 beinhaltet den Gegenstand eines der Beispiele 1 bis 8, wobei die prozessbasierte virtuelle Maschine eine Hardware-Komponente ist.
  • Beispiel 10 beinhaltet den Gegenstand eines der Beispiele 1 bis 9, ferner umfassend den vertrauenswürdigen Endpunkt.
  • Beispiel 11 beinhaltet den Gegenstand eines der Beispiele 1 bis 10, wobei die CIMA-Methode in einer oder mehreren Mikrodienst-Klassen enthalten ist, die einen oder mehrere Rechenplattformdienste implementieren.
  • Beispiel 12 beinhaltet den Gegenstand eines der Beispiele 1 bis 11, wobei der mindestens eine CIMA eine Vielzahl von verschiedenen Methodenbereichen umfasst.
  • Beispiel 13 beinhaltet den Gegenstand eines der Beispiele 1 bis 12, ferner umfassend einen Compiler, der durch den mindestens einen Prozessor ausführbar ist und ausgestaltet ist zum Empfangen eines die CIMA-Methode definierenden Quellcodes, wobei der Quellcode ein Sprachkonstrukt umfasst, das die CIMA-Methode als Software-definierbar identifiziert; Kompilieren des Quellcodes zu einem die CIMA-Methode definierenden Zwischencode, wobei der Zwischencode durch die prozessbasierte virtuelle Maschine ausführbar ist; und Speichern des Zwischencodes an einem für die prozessbasierte virtuelle Maschine zugänglichen Ort im Speicher.
  • Beispiel 14 ist ein Verfahren zum Verwalten einer oder mehrerer durch eine prozessbasierte virtuelle Maschine ausführbarer Methoden gesteuerter unabänderlicher Methodenbereiche (CIMA-Methoden). Das Verfahren umfasst Initialisieren mindestens eines CIMA im durch die prozessbasierte virtuelle Maschine gesteuerten Speicher; Laden einer CIMA-Methode in den mindestens einen CIMA; Empfangen einer ersten Aufforderung zur Aktualisierung der CIMA-Methode; Bestimmen, ob die erste Aufforderung von einem vertrauenswürdigen Endpunkt empfangen wurde; und Abbrechen der Verarbeitung der ersten Aufforderung in Reaktion auf das Bestimmen, dass die erste Aufforderung von einem anderen Endpunkt als dem vertrauenswürdigen Endpunkt empfangen wurde.
  • Beispiel 15 beinhaltet den Gegenstand von Beispiel 14, ferner umfassend das: Empfangen einer zweiten Aufforderung zur Aktualisierung der CIMA-Methode, wobei die zweite Aufforderung eine aktualisierte Version der CIMA-Methode vorgibt; Bestimmen, ob die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde; und Laden der aktualisierten Version der CIMA-Methode in den mindestens einen CIMA in Reaktion auf das Bestimmen, dass die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde.
  • Beispiel 16 beinhaltet den Gegenstand von Beispiel 14 oder Beispiel 15, ferner umfassend das Empfangen einer Abfrage von dem vertrauenswürdigen Endpunkt; Beantworten der Abfrage; Empfangen einer positiven Bestätigung; und Fortsetzen der Ausführung in Reaktion auf das Empfangen der positiven Bestätigung.
  • Beispiel 17 beinhaltet den Gegenstand von Beispiel 16, wobei das Beantworten der Abfrage Erzeugen von Beglaubigungsdaten umfassend eine Messung der Integrität einer oder mehrerer Komponenten der prozessbasierten virtuellen Maschine umfasst.
  • Beispiel 18 beinhaltet den Gegenstand von Beispiel 16 oder Beispiel 17, ferner umfassend: Aufbauen einer vertrauenswürdigen Kommunikationssitzung mit dem vertrauenswürdigen Endpunkt in Reaktion auf das Empfangen der positiven Bestätigung; und Empfangen der zweiten Aufforderung von dem vertrauenswürdigen Endpunkt innerhalb der vertrauenswürdigen Kommunikationssitzung.
  • Beispiel 19 beinhaltet den Gegenstand eines der Beispiele 14 bis 18, ferner umfassend das Empfangen einer Abfrage von dem vertrauenswürdigen Endpunkt; Beantworten der Abfrage; Nichtempfangen einer positiven Bestätigung innerhalb einer vorbestimmten Zeitdauer; und Beendigen der Ausführung der prozessbasierten virtuellen Maschine in Reaktion auf das Nichtempfangen der positiven Bestätigung innerhalb der vorbestimmten Zeitdauer.
  • Beispiel 20 beinhaltet den Gegenstand eines der Beispiele 16 bis 19, wobei das Beantworten der Abfrage Beantworten der Abfrage an einem sicheren Punkt beinhaltet.
  • Beispiel 21 beinhaltet den Gegenstand eines der Beispiele 14 bis 20, ferner umfassend Initialisieren der prozessbasierten virtuellen Maschine, wobei die prozessbasierte virtuelle Maschine eine Java Virtual Machine ist.
  • Beispiel 22 beinhaltet den Gegenstand von Beispiel 21, wobei das Initialisieren der prozessbasierten virtuellen Maschine Initialisieren einer in Hardware implementierten Java Virtual Machine umfasst.
  • Beispiel 23 beinhaltet den Gegenstand eines der Beispiele 14 bis 22, wobei die prozessbasierte virtuelle Maschine und der vertrauenswürdige Endpunkt in einer einzelnen Rechenvorrichtung implementiert sind, das Verfahren ferner Senden der ersten Aufforderung über eine lokale Verbindung der einzelnen Rechenvorrichtung umfasst und das Empfangen der ersten Aufforderung Empfangen der ersten Aufforderung über die Verbindung umfasst.
  • Beispiel 24 beinhaltet den Gegenstand eines der Beispiele 14 bis 23, wobei das Laden der CIMA-Methode Laden einer CIMA-Methode, die in mindestens einer Mikrodienst-Klasse definiert ist, die mindestens einen Rechenplattformdienst implementiert, umfasst.
  • Beispiel 25 beinhaltet den Gegenstand eines der Beispiele 14 bis 24, wobei das Initialisieren des mindestens einen CIMA Initialisieren mehrerer unterschiedlicher Methodenbereiche umfasst.
  • Beispiel 26 beinhaltet den Gegenstand eines der Beispiele 14 bis 25, ferner umfassend Empfangen eines die CIMA-Methode definierenden Quellcodes, wobei der Quellcode ein Sprachkonstrukt umfasst, das die CIMA-Methode als Software-definierbar identifiziert; Kompilieren des Quellcodes zu einem die CIMA-Methode definierenden Zwischencode, wobei der Zwischencode durch die prozessbasierte virtuelle Maschine ausführbar ist; und Speichern des Zwischencodes an einem für die prozessbasierte virtuelle Maschine zugänglichen Ort im Speicher.
  • Beispiel 27 ist ein nichttransientes computerlesbares Medium, das mit Anweisungen kodiert ist, die bei Ausführung durch einen oder mehrere Prozessoren bewirken, dass ein Prozess zur Verwaltung einer oder mehrerer Methoden gesteuerter unabänderlicher Methodenbereiche (CIMA-Methoden) ausgeführt wird. Der Prozess umfasst Initialisieren mindestens eines CIMA im durch eine prozessbasierte virtuelle Maschine gesteuerten Speicher; Laden einer CIMA-Methode in den mindestens einen CIMA; Empfangen einer ersten Aufforderung zur Aktualisierung der CIMA-Methode; Bestimmen, ob die erste Aufforderung von einem vertrauenswürdigen Endpunkt empfangen wurde; und Abbrechen der Verarbeitung der ersten Aufforderung in Reaktion auf das Bestimmen, dass die erste Aufforderung von einem anderen Endpunkt als dem vertrauenswürdigen Endpunkt empfangen wurde.
  • Beispiel 28 beinhaltet den Gegenstand von Beispiel 27, wobei der Prozess ferner das Empfangen einer zweiten Aufforderung zur Aktualisierung der CIMA-Methode, wobei die zweite Aufforderung eine aktualisierte Version der CIMA-Methode vorgibt; Bestimmen, ob die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde; und Laden der aktualisierten Version der CIMA-Methode in den mindestens einen CIMA in Reaktion auf das Bestimmen, dass die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde, umfasst.
  • Beispiel 29 beinhaltet den Gegenstand von Beispiel 27 oder Beispiel 28, wobei der Prozess ferner das Empfangen einer Abfrage von dem vertrauenswürdigen Endpunkt; Beantworten der Abfrage; Empfangen einer positiven Bestätigung; und Fortsetzen der Ausführung in Reaktion auf das Empfangen der positiven Bestätigung umfasst.
  • Beispiel 30 beinhaltet den Gegenstand von Beispiel 29, wobei im Prozess das Beantworten der Abfrage das Erzeugen von Beglaubigungsdaten, die eine Messung der Integrität einer oder mehrerer Komponenten der prozessbasierten virtuellen Maschine beinhalten, umfasst.
  • Beispiel 31 beinhaltet den Gegenstand von Beispiel 29 oder Beispiel 30, wobei der Prozess ferner Aufbauen einer vertrauenswürdigen Kommunikationssitzung mit dem vertrauenswürdigen Endpunkt in Reaktion auf das Empfangen der positiven Bestätigung; und Empfangen der zweiten Aufforderung von dem vertrauenswürdigen Endpunkt innerhalb der vertrauenswürdigen Kommunikationssitzung umfasst.
  • Beispiel 32 beinhaltet den Gegenstand eines der Beispiele 27 bis 31, wobei der Prozess ferner Empfangen einer Abfrage von dem vertrauenswürdigen Endpunkt; Beantworten der Abfrage; Nichtempfangen einer positiven Bestätigung innerhalb einer vorbestimmten Zeitdauer; und Beendigen der Ausführung der prozessbasierten virtuellen Maschine in Reaktion auf das Nichtempfangen der positiven Bestätigung innerhalb der vorbestimmten Zeitdauer umfasst.
  • Beispiel 33 beinhaltet den Gegenstand eines der Beispiele 29 bis 32, wobei im Prozess das Beantworten der Abfrage Beantworten der Abfrage an einem sicheren Punkt beinhaltet.
  • Beispiel 34 beinhaltet den Gegenstand eines der Beispiele 27 bis 33, wobei der Prozess ferner Initialisieren der prozessbasierten virtuellen Maschine umfasst, wobei die prozessbasierte virtuelle Maschine eine Java Virtual Machine ist.
  • Beispiel 35 beinhaltet den Gegenstand von Beispiel 34, wobei im Prozess das Initialisieren der prozessbasierten virtuellen Maschine Initialisieren einer in Hardware implementierten Java Virtual Machine umfasst.
  • Beispiel 36 beinhaltet den Gegenstand eines der Beispiele 27 bis 35, wobei die prozessbasierte virtuelle Maschine und der vertrauenswürdige Endpunkt in einer einzelnen Rechenvorrichtung implementiert sind, der Prozess ferner Senden der ersten Aufforderung über eine lokale Verbindung der einzelnen Rechenvorrichtung umfasst, und das Empfangen der ersten Aufforderung Empfangen der ersten Aufforderung über die Verbindung umfasst.
  • Beispiel 37 beinhaltet den Gegenstand eines der Beispiele 27 bis 36, wobei im Prozess das Laden der CIMA-Methode Laden einer CIMA-Methode umfasst, die in mindestens einer Mikrodienst-Klasse definiert ist, die mindestens einen Rechenplattformdienst implementiert.
  • Beispiel 38 beinhaltet den Gegenstand eines der Beispiele 27 bis 37, wobei im Prozess das Initialisieren des mindestens einen CIMA Initialisieren einer Vielzahl von eigenständigen Methodenbereichen umfasst.
  • Beispiel 39 beinhaltet den Gegenstand eines der Beispiele 27 bis 38, wobei der Prozess ferner das Empfangen eines die CIMA-Methode definierenden Quellcodes, wobei der Quellcode ein Sprachkonstrukt umfasst, das die CIMA-Methode als Software-definierbar identifiziert; Kompilieren des Quellcodes zu einem die CIMA-Methode definierenden Zwischencode, wobei der Zwischencode durch die prozessbasierte virtuelle Maschine ausführbar ist; und Speichern des Zwischencodes an einem für die prozessbasierte virtuelle Maschine zugänglichen Ort im Speicher umfasst.
  • Die im vorliegenden Dokument verwendeten Begriffe und Ausdrücke werden beschreibend und nicht einschränkend gebraucht, und durch den Gebrauch dieser Begriffe und Ausdrücke wird kein Ausschließen von Äquivalenten der dargestellten und beschriebenen Merkmale (oder Teilmerkmale) beabsichtigt, und es wird anerkannt, dass innerhalb des Schutzumfangs der Ansprüche verschiedene Abwandlungen möglich sind. Dementsprechend sollen die Ansprüche all solche Äquivalente mit erfassen. Vorliegend wurden verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben. Die Merkmale, Aspekte und Ausführungsformen sind miteinander kombinierbar sowie variierbar und abänderbar, wie für einschlägige Fachleute zu ersehen. Die vorliegende Offenbarung sollte deshalb so betrachtet werden, dass sie solche Kombinationen, Variationen und Abänderungen mit erfasst. Es ist beabsichtigt, dass der Umfang der vorliegenden Offenbarung nicht durch diese detaillierte Beschreibung, sondern vielmehr durch die angehängten Ansprüche beschränkt wird. Zukünftig eingereichte Anmeldungen, die die Priorität zu dieser Anmeldung beanspruchen, können den offenbarten Gegenstand auf unterschiedliche Weise beanspruchen und können allgemein einen Satz von einem oder mehreren Elementen beinhalten, wie hier verschiedentlich offenbart oder anderweitig dargelegt ist.
  • Claims (25)

    1. Rechenvorrichtung umfassend: einen Speicher; mindestens einen mit dem Speicher gekoppelten Prozessor; und eine durch den mindestens einen Prozessor ausführbare prozessbasierte virtuelle Maschine, ausgestaltet zum: Initialisieren mindestens eines gesteuerten unabänderlichen Methodenbereichs (CIMA) im Speicher; Laden einer CIMA-Methode in den mindestens einen CIMA; Empfangen einer ersten Aufforderung zur Aktualisierung der CIMA-Methode; Bestimmen, ob die erste Aufforderung von einem vertrauenswürdigen Endpunkt empfangen wurde; und Abbrechen der Verarbeitung der ersten Aufforderung in Reaktion auf das Bestimmen, dass die erste Aufforderung von einem anderen Endpunkt als dem vertrauenswürdigen Endpunkt empfangen wurde.
    2. Rechenvorrichtung nach Anspruch 1, wobei die prozessbasierte virtuelle Maschine ferner ausgestaltet ist zum: Empfangen einer zweiten Aufforderung zur Aktualisierung der CIMA-Methode, wobei die zweite Aufforderung eine aktualisierte Version der CIMA-Methode vorgibt; Bestimmen, ob die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde; und Laden der aktualisierten Version der CIMA-Methode in den mindestens einen CIMA in Reaktion auf das Bestimmen, dass die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde.
    3. Rechenvorrichtung nach Anspruch 1, wobei die prozessbasierte virtuelle Maschine ferner ausgestaltet ist zum: Empfangen einer Abfrage von dem vertrauenswürdigen Endpunkt; Beantworten der Abfrage; Empfangen einer positiven Bestätigung; und Fortsetzen der Ausführung in Reaktion auf das Empfangen der positiven Bestätigung.
    4. Rechenvorrichtung nach Anspruch 1, wobei die prozessbasierte virtuelle Maschine eine Java Virtual Machine ist.
    5. Rechenvorrichtung nach Anspruch 1, wobei die prozessbasierte virtuelle Maschine eine Hardware-Komponente ist.
    6. Rechenvorrichtung nach Anspruch 1, ferner den vertrauenswürdigen Endpunkt umfassend.
    7. Rechenvorrichtung nach einem der Ansprüche 1-6, wobei die CIMA-Methode in einer oder mehreren Mikrodienst-Klassen enthalten ist, die einen oder mehrere Rechenplattformdienste implementieren.
    8. Rechenvorrichtung nach einem der Ansprüche 1-6, wobei der mindestens eine CIMA eine Vielzahl von unterschiedlichen Methodenbereichen umfasst.
    9. Rechenvorrichtung nach einem der Ansprüche 1-6, ferner umfassend einen durch den mindestens einen Prozessor ausführbaren Compiler, ausgestaltet zum: Empfangen eines die CIMA-Methode definierenden Quellcodes, wobei der Quellcode ein Sprachkonstrukt umfasst, das die CIMA-Methode als Software-definierbar identifiziert; Kompilieren des Quellcodes zu einem die CIMA-Methode definierenden Zwischencode, wobei der Zwischencode durch die prozessbasierte virtuelle Maschine ausführbar ist; und Speichern des Zwischencodes an einem für die prozessbasierte virtuelle Maschine zugänglichen Ort im Speicher.
    10. Verfahren zum Verwalten einer oder mehrerer durch eine prozessbasierte virtuelle Maschine ausführbarer Methoden gesteuerter unabänderlicher Methodenbereiche (CIMA-Methoden), wobei das Verfahren umfasst: Initialisieren mindestens eines CIMA im durch die prozessbasierte virtuelle Maschine gesteuerten Speicher; Laden einer CIMA-Methode in den mindestens einen CIMA; Empfangen einer ersten Aufforderung zur Aktualisierung der CIMA-Methode; Bestimmen, ob die erste Aufforderung von einem vertrauenswürdigen Endpunkt empfangen wurde; und Abbrechen der Verarbeitung der ersten Aufforderung in Reaktion auf das Bestimmen, dass die erste Aufforderung von einem anderen Endpunkt als dem vertrauenswürdigen Endpunkt empfangen wurde.
    11. Verfahren nach Anspruch 10, ferner umfassend: Empfangen einer zweiten Aufforderung zur Aktualisierung der CIMA-Methode, wobei die zweite Aufforderung eine aktualisierte Version der CIMA-Methode vorgibt; Bestimmen, ob die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde; und Laden der aktualisierten Version der CIMA-Methode in den mindestens einen CIMA in Reaktion auf das Bestimmen, dass die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde.
    12. Verfahren nach Anspruch 10, ferner umfassend das Initialisieren der prozessbasierten virtuellen Maschine, wobei die prozessbasierte virtuelle Maschine eine Java Virtual Machine ist.
    13. Verfahren nach Anspruch 12, wobei das Initialisieren der prozessbasierten virtuellen Maschine das Initialisieren einer in Hardware implementierten Java Virtual Machine umfasst.
    14. Verfahren nach Anspruch 10, wobei die prozessbasierte virtuelle Maschine und der vertrauenswürdige Endpunkt in einer einzelnen Rechenvorrichtung implementiert sind, wobei das Verfahren ferner das Senden der ersten Aufforderung über eine lokale Verbindung der einzelnen Rechenvorrichtung umfasst und das Empfangen der ersten Aufforderung das Empfangen der ersten Aufforderung über die Verbindung umfasst.
    15. Verfahren nach einem der Ansprüche 10-14, wobei das Laden der CIMA-Methode das Laden einer CIMA-Methode, die in mindestens einer Mikrodienst-Klasse definiert ist, die mindestens einen Rechenplattformdienst implementiert, umfasst.
    16. Verfahren nach einem der Ansprüche 10-14, wobei das Initialisieren des mindestens einen CIMA das Initialisieren einer Vielzahl von unterschiedlichen Methodenbereichen umfasst.
    17. Verfahren nach einem der Ansprüche 10-14, ferner umfassend: Empfangen eines die CIMA-Methode definierenden Quellcodes, wobei der Quellcode ein Sprachkonstrukt umfasst, das die CIMA-Methode als Software-definierbar identifiziert; Kompilieren des Quellcodes zu einem die CIMA-Methode definierenden Zwischencode, wobei der Zwischencode durch die prozessbasierte virtuelle Maschine ausführbar ist; und Speichern des Zwischencodes an einem für die prozessbasierte virtuelle Maschine zugänglichen Ort im Speicher.
    18. Nichttransientes computerlesbares Medium, das mit Anweisungen codiert ist, die bei Ausführung durch einen oder mehrere Prozessoren bewirken, dass ein Prozess zur Verwaltung einer oder mehrerer Methoden gesteuerter unabänderlicher Methodenbereiche (CIMA-Methoden) ausgeführt wird, wobei der Prozess umfasst: Initialisieren mindestens eines CIMA im durch eine prozessbasierte virtuelle Maschine gesteuerten Speicher; Laden einer CIMA-Methode in den mindestens einen CIMA; Empfangen einer ersten Aufforderung zur Aktualisierung der CIMA-Methode; Bestimmen, ob die erste Aufforderung von einem vertrauenswürdigen Endpunkt empfangen wurde; und Abbrechen der Verarbeitung der ersten Aufforderung in Reaktion auf das Bestimmen, dass die erste Aufforderung von einem anderen Endpunkt als dem vertrauenswürdigen Endpunkt empfangen wurde.
    19. Computerlesbares Medium nach Anspruch 18, wobei der Prozess ferner umfasst: Empfangen einer zweiten Aufforderung zur Aktualisierung der CIMA-Methode, wobei die zweite Aufforderung eine aktualisierte Version der CIMA-Methode vorgibt; Bestimmen, ob die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde; und Laden der aktualisierten Version der CIMA-Methode in den mindestens einen CIMA in Reaktion auf das Bestimmen, dass die zweite Aufforderung von dem vertrauenswürdigen Endpunkt empfangen wurde.
    20. Computerlesbares Medium nach Anspruch 18, wobei der Prozess ferner das Initialisieren der prozessbasierten virtuellen Maschine umfasst, wobei die prozessbasierte virtuelle Maschine eine Java Virtual Machine ist.
    21. Computerlesbares Medium nach Anspruch 20, wobei im Prozess das Initialisieren der prozessbasierten virtuellen Maschine das Initialisieren einer in Hardware implementierten Java Virtual Machine umfasst.
    22. Computerlesbares Medium nach Anspruch 18, wobei die prozessbasierte virtuelle Maschine und der vertrauenswürdige Endpunkt in einer einzelnen Rechenvorrichtung implementiert sind, wobei der Prozess ferner das Senden der ersten Aufforderung über eine lokale Verbindung der einzelnen Rechenvorrichtung umfasst und das Empfangen der ersten Aufforderung das Empfangen der ersten Aufforderung über die Verbindung umfasst.
    23. Computerlesbares Medium nach einem der Ansprüche 18-22, wobei im Prozess das Laden der CIMA-Methode das Laden einer CIMA-Methode, die in mindestens einer Mikrodienst-Klasse definiert ist, die mindestens einen Rechenplattformdienst implementiert, umfasst.
    24. Computerlesbares Medium nach einem der Ansprüche 18-22, wobei im Prozess das Initialisieren des mindestens einen CIMA das Initialisieren einer Vielzahl von eigenständigen Methodenbereichen umfasst.
    25. Computerlesbares Medium nach einem der Ansprüche 18-22, wobei der Prozess ferner umfasst: Empfangen eines die CIMA-Methode definierenden Quellcodes, wobei der Quellcode ein Sprachkonstrukt umfasst, das die CIMA-Methode als Software-definierbar identifiziert; Kompilieren des Quellcodes zu einem die CIMA-Methode definierenden Zwischencode, wobei der Zwischencode durch die prozessbasierte virtuelle Maschine ausführbar ist; und Speichern des Zwischencodes an einem für die prozessbasierte virtuelle Maschine zugänglichen Ort im Speicher.
    DE102018207314.7A 2017-05-09 2018-05-09 Software-definierte mikrodienste Pending DE102018207314A1 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US15/590,781 2017-05-09
    US15/590,781 US10540193B2 (en) 2017-05-09 2017-05-09 Software-defined microservices

    Publications (1)

    Publication Number Publication Date
    DE102018207314A1 true DE102018207314A1 (de) 2018-11-15

    Family

    ID=63962648

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102018207314.7A Pending DE102018207314A1 (de) 2017-05-09 2018-05-09 Software-definierte mikrodienste

    Country Status (3)

    Country Link
    US (1) US10540193B2 (de)
    CN (1) CN108874501A (de)
    DE (1) DE102018207314A1 (de)

    Families Citing this family (4)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US10235353B1 (en) * 2017-09-15 2019-03-19 Dell Products Lp Natural language translation interface for networked devices
    US10693909B2 (en) * 2018-01-19 2020-06-23 International Business Machines Corporation Securing an endpoint in a computer network
    CN112019369A (zh) * 2019-05-31 2020-12-01 烽火通信科技股份有限公司 一种微服务框架下动态配置管理方法及系统
    US11175947B2 (en) * 2019-12-03 2021-11-16 International Business Machines Corporation Microservices change management and analytics

    Family Cites Families (3)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US8738932B2 (en) * 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
    US20170364685A1 (en) * 2014-11-20 2017-12-21 Interdigital Patent Holdings. Inc. Providing security to computing systems
    US10416991B2 (en) * 2016-12-14 2019-09-17 Microsoft Technology Licensing, Llc Secure IoT device update

    Also Published As

    Publication number Publication date
    US20180329729A1 (en) 2018-11-15
    US10540193B2 (en) 2020-01-21
    CN108874501A (zh) 2018-11-23

    Similar Documents

    Publication Publication Date Title
    DE102013207608B4 (de) Instrumentieren von Software-Anwendungen für die Konfiguration derselben
    DE102017217971B4 (de) Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting
    DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
    DE102018207314A1 (de) Software-definierte mikrodienste
    DE102010051477B4 (de) Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform
    DE102016105589A1 (de) Anwenden von Firmware-Updates in einem System mit Null-Stillstandszeit durch wahlweise Abschalten und Einschalten von Hardware unter Verwenden einer Hypervisor-Schicht
    DE202016008042U1 (de) Infrastruktur für Hosting und Publishing von Softwarepaketen
    EP2642395B1 (de) Verfahren und Vorrichtung zum Ausführen von Workflow-Skripten
    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
    DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
    DE112020000912T5 (de) Verwalten von software-programmen
    DE112012004247T5 (de) Passives Überwachen virtueller Systeme unter Verwendung einer erweiterbaren Indexierung
    DE112011103406T5 (de) Verwaltung von nicht geänderten Objekten
    DE102015122908A1 (de) System und Verfahren zur Compiler-Unterstützung zur Code-Kompilierungszeit-Anpassung
    DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
    DE102009060301A1 (de) Das Ermöglichen mehrerer virtueller Geräte-Controller durch Umleiten eines Interrupts von einem physischen Geräte-Controller
    DE102009060299A1 (de) Das Einführen von Transaktionen, um die Virtualisierung eines physischen Geräte-Controllers zu unterstützen
    DE112016005867T5 (de) Live-Pipeline-Vorlagen - Erstellung und Erweiterbarkeit der Vorlagen
    WO2010028994A1 (de) Verfahren zur bereitstellung einer steuerungsinformation für eine verteilte operation in einem automatisierungssystem, computerprogramm und automatisierungssystem
    DE10333088A1 (de) Verfahren zum Liefern von Zugriff auf die internen Signale eines dynamischen Systemmodells von außerhalb bezüglich der Modellierungsumgebung
    DE102021129845A1 (de) Verfahren und einrichtung zum konstruieren programmabgeleiteter semantischer graphen
    DE102021130957A1 (de) Empfehlungen zur stabilität von software-aktualisierungen
    DE112020002785T5 (de) Verfahren für ein virtualisierungssystem auf container-grundlage
    DE102015114244B4 (de) Bilderzeugungsvorrichtung und ressourcenverwaltungsverfahren

    Legal Events

    Date Code Title Description
    R082 Change of representative

    Representative=s name: 2SPL PATENTANWAELTE PARTG MBB SCHULER SCHACHT , DE