DE112020005362T5 - Sicheres verarbeiten von integrierten nachrichtenflüssen in einem multi-tenant-container - Google Patents

Sicheres verarbeiten von integrierten nachrichtenflüssen in einem multi-tenant-container Download PDF

Info

Publication number
DE112020005362T5
DE112020005362T5 DE112020005362.8T DE112020005362T DE112020005362T5 DE 112020005362 T5 DE112020005362 T5 DE 112020005362T5 DE 112020005362 T DE112020005362 T DE 112020005362T DE 112020005362 T5 DE112020005362 T5 DE 112020005362T5
Authority
DE
Germany
Prior art keywords
tenant container
message flows
container
tenant
message
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
DE112020005362.8T
Other languages
English (en)
Inventor
Trevor Clifford Dolby
John Anthony Reeve
Andrew John Coleman
Matthew Golby-Kirk
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020005362T5 publication Critical patent/DE112020005362T5/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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Durch einen Computer umgesetztes Verfahren, System und Computerprogrammprodukt zum sicheren Verarbeiten von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container. Jeder Schritt in den Nachrichtenflüssen, die durch die Anwendungen in dem Multi-Tenant-Container verarbeitet werden sollen, wird überwacht. Wenn für den überwachten Schritt bestimmt wird, dass er benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, wird die Verarbeitung des Nachrichtenflusses, der solche benutzerdefinierte Logik ausführt, durch die Anwendung in dem Container ausgesetzt, wenn andere Nachrichtenflüsse vorhanden sind, die von anderen Anwendungen in dem Container verarbeitet werden. Ferner wird verhindert, dass neue Nachrichtenflüsse durch die Anwendungen in dem Container verarbeitet werden. Nach dem Verarbeiten der anderen Nachrichtenflüsse durch die anderen Anwendungen in dem Container werden nun die ausgesetzten Nachrichtenflüsse durch die Anwendungen in dem Container verarbeitet. Auf diese Weise wird das Risiko einer Einflussnahme auf andere Nachrichtenflüsse in dem Container vermieden.

Description

  • Technisches Gebiet
  • Die Ausführungsformen der vorliegenden Erfindung betreffen allgemein Multi-Tenant-Umgebungen und insbesondere ein sicheres Verarbeiten von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container.
  • HINTERGRUND
  • Multi-Tenant-Umgebungen umfassen mehrere Tenants (z.B. Gruppen von Benutzern), die von einer einzelnen Software-Instanz bedient werden, die auf einem Server ausgeführt wird. Ein Tenant ist eine Gruppe von Benutzern, die sich einen gemeinsamen Zugang mit spezifischen Berechtigungen für die Software-Instanz teilen. In einer Multi-Tenant-Architektur ist eine Software-Anwendung dafür ausgelegt, für jeden Tenant einen dedizierten Anteil der Instanz bereitzustellen - einschließlich ihrer Daten, Konfiguration, Benutzerverwaltung, Tenant-eigenen Funktionalität und nicht funktionalen Eigenschaften. Infolgedessen können die Ressourcen, die von den Tenants verwendet werden, Tenant-übergreifend gemeinsam genutzt werden. Zum Beispiel können dieselben Ressourcen von mehreren verschiedenen Tenants genutzt werden, was allgemein als „Multi-Tenant-Bereitstellung“ bezeichnet wird. Das heißt, „Multi-Tenant-Bereitstellung“ verweist auf die Zuweisung von Ressourcen, die von verschiedenen Tenants gemeinsam genutzt werden sollen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • In einer Ausführungsform der vorliegenden Erfindung weist ein durch einen Computer umgesetztes Verfahren zum sicheren Verarbeiten von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container ein Überwachen jedes Schritts in einer Mehrzahl von Nachrichtenflüssen auf, die durch eine Mehrzahl von Anwendungen in dem Multi-Tenant-Container zu verarbeiten sind, wobei der Multi-Tenant-Container Anwendungen speichert, die Nachrichtenflüsse für mehrere Tenants verarbeiten. Das Verfahren weist ferner ein Bestimmen auf, ob jeder Schritt in der Mehrzahl von Nachrichtenflüssen benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt. Das Verfahren weist zusätzlich ein Aussetzen einer Verarbeitung eines Nachrichtenflusses durch eine Anwendung in dem Multi-Tenant-Container in Reaktion auf ein Erkennen auf, dass der Nachrichtenfluss benutzerdefinierte Logik in der Allzweck-Programmiersprache und in Reaktion darauf ausführt, dass andere Nachrichtenflüsse durch andere Anwendungen in dem Multi-Tenant-Container verarbeitet werden. Ferner weist das Verfahren ein Verhindern auf, dass neue Nachrichtenflüsse durch Anwendungen in dem Multi-Tenant-Container in Reaktion auf ein Aussetzen einer Verarbeitung der Nachrichtenflüsse durch die Anwendung in dem Multi-Tenant-Container verarbeitet werden. Zusätzlich weist das Verfahren ein Verarbeiten der ausgesetzten Nachrichtenflüsse durch die Anwendung in dem Multi-Tenant-Container auf, nachdem ein Verarbeiten der anderen Nachrichtenflüsse durch andere Anwendungen in dem Multi-Tenant-Container abgeschlossen ist.
  • Andere Formen der Ausführungsform des oben beschriebenen Verfahrens betreffen ein System und ein Computerprogrammprodukt.
  • Im Vorgenannten wurden die Merkmale und technischen Vorteile von einer oder mehreren Ausführungsformen der vorliegenden Erfindung eher allgemein umrissen, um ein besseres Verständnis der folgenden ausführlichen Beschreibung der vorliegenden Erfindung zu ermöglichen. Weitere Merkmale und Vorteile der Ausführungsformen der vorliegenden Erfindung werden im Folgenden beschrieben, die den Gegenstand der Ansprüche der vorliegenden Erfindung bilden können.
  • Figurenliste
  • Die Ausführungsformen der vorliegenden Erfindung sind besser zu verstehen, wenn die folgende ausführliche Beschreibung in Verbindung mit den folgenden Zeichnungen betrachtet wird, in denen:
    • 1 eine Multi-Tenant-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
    • 2 eine Ausführungsform der vorliegenden Erfindung von der Hardware-Konfiguration eines Servers veranschaulicht, die für eine Hardware-Umgebung zum Ausüben der vorliegenden Erfindung typisch ist;
    • 3 eine grafische Darstellung der Software-Komponenten des Servers ist, der zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in der Multi-Tenant-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung verwendet wird;
    • 4 ein Ablaufplan eines Verfahrens zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in einem Multi-Tenant-Container gemäß einer Ausführungsform der vorliegenden Erfindung ist;
    • 5 ein Ablaufplan eines Verfahrens zum Verarbeiten von mehreren integrierten Nachrichtenflüssen ist, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache gemäß einer Ausführungsform der vorliegenden Erfindung ausführen;
    • 6 ein Ablaufplan eines Verfahrens ist, um einen Nachrichtenfluss auf Grundlage des Musters, das in dem Nachrichtenfluss erkannt wurde, gemäß einer Ausführungsform der vorliegenden Erfindung zu einem Container zu leiten;
    • 7 eine Ausführungsform einer Cloud-Computing-Umgebung darstellt, die in Verbindung mit einem oder mehreren Aspekten der vorliegenden Erfindung umgesetzt oder verwendet werden kann; und
    • 8 ein Beispiel von Extraktionsmodellschichten darstellt, die gemäß einem oder mehreren Aspekten der vorliegenden Erfindung einen Zuordnungsprozess erleichtern oder umsetzen können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie im Abschnitt „Hintergrund“ angegeben, umfassen Multi-Tenant-Umgebungen mehrere Tenants (z.B. Gruppen von Benutzern), die von einer einzelnen Software-Instanz bedient werden, die auf einem Server ausgeführt wird. Ein Tenant ist eine Gruppe von Benutzern, die sich einen gemeinsamen Zugang mit spezifischen Berechtigungen für die Software-Instanz teilen. In einer Multi-Tenant-Architektur ist eine Software-Anwendung dafür ausgelegt, für jeden Tenant einen dedizierten Anteil der Instanz bereitzustellen - einschließlich ihrer Daten, Konfiguration, Benutzerverwaltung, Tenant-eigenen Funktionalität und nicht funktionalen Eigenschaften. Infolgedessen können die Ressourcen, die von den Tenants verwendet werden, Tenant-übergreifend gemeinsam genutzt werden. Zum Beispiel können dieselben Ressourcen von mehreren verschiedenen Tenants genutzt werden, was allgemein als „Multi-Tenant-Bereitstellung“ bezeichnet wird. Das heißt, „Multi-Tenant-Bereitstellung“ verweist auf die Zuweisung von Ressourcen, die von verschiedenen Tenants gemeinsam genutzt werden sollen.
  • In Verbindung mit einer Multi-Tenant-Bereitstellung können die Nachrichtenflüsse, die für verschiedene Tenants verarbeitet werden sollen, durch eine Anwendung in demselben Container verarbeitet werden. Derartige Nachrichtenflüsse werden als „integriert“ bezeichnet, da sie durch eine Anwendung in demselben Container verarbeitet werden sollen.
  • Ein „Container“, wie hierin verwendet, verweist auf eine isolierte Nutzerbereichsinstanz. Zum Beispiel ist eine Virtualisierung auf Betriebssystemebene ein Betriebssystemparadigma, in dem der Kernel das Vorhandensein von mehreren isolierten Nutzerbereichsinstanzen erlaubt, wobei derartige Instanzen als „Container“ bezeichnet werden. Derartige Container können aus der Sicht von Programmen, die in ihnen ausgeführt werden, wie reale Computer aussehen. Ein Computerprogramm, das auf einem normalen Betriebssystem ausgeführt wird, kann alle Ressourcen dieses Computers sehen (z.B. verbundene Einheiten, Daten und Ordner, Netzwerkfreigaben, CPU-Leistung, quantifizierbare Hardware-Funktionen). Computerprogramme, die in einem Container ausgeführt werden, können jedoch nur die Inhalte des Containers und die Einheiten sehen, die dem Container zugewiesen sind.
  • Durch Verarbeiten von verschiedenen Nachrichtenflüssen für verschiedene Tenants in demselben Container kann sich eine unerwünschte Einflussnahme auf die Verarbeitung von anderen Nachrichtenflüssen für einen verschiedenen Tenant ergeben.
  • Zum Beispiel kann in Multi-Tenant-Umgebungen eine komplizierte Logik erforderlich sein, um Fälle zu bearbeiten, wie zum Beispiel Fehlerfälle, wobei benutzerdefinierte Logik in einer Allzweck-Programmiersprache einbezogen wird (z.B. in Java® geschriebener Code). Zum Beispiel erfordert eine benutzerdefinierte Kompensations- oder Wiederherstellungslogik bei einer Fehlerbearbeitung oft die Unterstützung durch Allzweck-Programmiersprache. Eine Allzweck-Programmiersprache wie hierin verwendet (die auch als „generische Anwendungsprogrammiersprache“ bezeichnet wird), verweist auf eine Programmiersprache, die im Allgemeinen in der Computerprogrammierung verwendet wird, wie zum Beispiel Java®. Bedauerlicherweise können derartige Allzweck-Programmiersprachen potenziell zum Ausspionieren oder anderweitigem Beeinflussen von unabhängigen integrierten Nachrichtenflüssen missbraucht werden, an denen verschiedene Tenants beteiligt sind.
  • Derzeit können derartige Situationen vermieden werden, indem für jeden Tenant ein anderer Container verwendet wird. Zwar ist eine derartige Struktur sicher, jedoch ermöglicht sie keine gemeinsame Nutzung von Ressourcen für eine große Gruppe von Tenants und ist daher kostspielig umzusetzen.
  • Alternativ verhindern einige Multi-Tenant-Umgebungen die Verwendung von Allzweck-Programmiersprachen für eine Auseinandersetzung mit der oben beschriebenen Situation. Durch ein Verhindern der Verwendung von derartigen Allzweck-Programmiersprachen ist es jedoch möglich, dass die Multi-Tenant-Umgebung die funktionalen Anforderungen vieler Tenants nicht erfüllen kann.
  • Infolgedessen gibt es derzeit keine Möglichkeit, die Integration von Nachrichtenflüssen zu ermöglichen, die eine gemeinsame Nutzung von Ressourcen, wie zum Beispiel Container, durch mehrere Tenants erlauben, wobei sie auch sicher sind, wie zum Beispiel ohne Auswirkung auf andere integrierte Nachrichtenflüsse von anderen Tenants.
  • Die Ausführungsformen der vorliegenden Erfindung stellen eine Möglichkeit zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in einer Multi-Tenant-Umgebung bereit, wie im Folgenden erörtert wird.
  • In einigen Ausführungsformen weist die vorliegende Erfindung ein durch einen Computer umgesetztes Verfahren, System und Computerprogrammprodukt zum sicheren Verarbeiten von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container auf. In einer Ausführungsform der vorliegenden Erfindung wird jeder Schritt in den Nachrichtenflüssen überwacht, die durch die Anwendungen in dem Multi-Tenant-Container verarbeitet werden sollen, wobei der Multi-Tenant-Container Anwendungen zum Verarbeiten der Nachrichtenflüsse für mehrere Tenants speichert. Jeder Schritt in den Nachrichtenflüssen wird überwacht, um zu bestimmen, ob der Schritt benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt. Wenn für den überwachten Schritt bestimmt wird, dass er benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, wird die Verarbeitung des Nachrichtenflusses, der benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführt, durch die Anwendung in dem Container ausgesetzt, wenn andere Nachrichtenflüsse vorhanden sind, die durch andere Anwendungen in dem Container verarbeitet werden. Ferner wird verhindert, dass neue Nachrichtenflüsse durch die Anwendungen in dem Multi-Tenant-Container verarbeitet werden. Nach dem Verarbeiten der anderen Nachrichtenflüsse durch die anderen Anwendungen in dem Multi-Tenant-Container wird nun der ausgesetzte Nachrichtenfluss durch die Anwendungen in dem Multi-Tenant-Container verarbeitet. Auf diese Weise werden die Nachrichtenflüsse von verschiedenen Tenants integriert, um die gemeinsame Nutzung von Ressourcen, wie zum Beispiel ein Container zu erlauben, wobei sie aber gleichzeitig sicher sind, indem sie sich zum Beispiel nicht auf die anderen integrierten Nachrichtenflüsse von anderen Tenants auswirken.
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, um für ein umfassendes Verständnis der Ausführungsformen der vorliegenden Erfindung zu sorgen. Dem Fachmann wird jedoch klar sein, dass die vorliegende Erfindung ohne diese spezifischen Details ausgeübt werden kann. In anderen Fällen wurden wohlbekannte Schaltungen in Blockschaubildform gezeigt, um die vorliegende Erfindung nicht durch unnötige Details unverständlich zu machen. Meistenteils sind Details, die zeitliche Überlegungen und dergleichen berücksichtigen weggelassen worden, da derartige Details nicht notwendig sind, um das Verständnis der vorliegenden Erfindung zu vervollständigen und durch die Qualifikationen des Fachmanns auf dem betreffenden Gebiet abgedeckt sind.
  • Unter folgender Bezugnahme auf die Figuren im Einzelnen veranschaulicht 1 eine Multi-Tenant-Umgebung 100 gemäß einer Ausführungsform der vorliegenden Erfindung. Die Umgebung 100 umfasst Tenants 101A bis 101C (jeweils gekennzeichnet als „Tenant A“, „Tenant B“ und „Tenant C“), die mit einem Server 102 über ein Netzwerk 103 verbunden sind. Die Tenants 101A bis 101C können insgesamt oder einzeln jeweils als Tenants 101 oder Tenant 101 bezeichnet werden. Ein Tenant 101, wie hierin verwendet, verweist auf die von einer Gruppe von Benutzern verwendeten Datenverarbeitungseinheiten, die von einer Gruppe von Benutzern verwendet werden, einschließlich denjenigen, die in einer Entität wie zum Beispiel einer Firma verwendet werden, die mit dem Server 102 interagieren, der von den Tenants 101 ausgegebene Anforderungen verarbeitet.
  • Der Server 102, wie hierin verwendet, ist zum Hosten von Ressourcen konfiguriert, wie zum Beispiel Anwendungen, die Nachrichten verarbeiten (z.B. Anforderungen), die von den Tenants 101 bereitgestellt werden. Derartige Nachrichten können Anforderungen entsprechen, die von den Tenants 101 von ihren Kunden empfangen werden, und von einer der durch den Server 102 gehosteten Anwendungen verarbeitet werden sollen. In einer Ausführungsform kann eine einzelne Instanz von derartigen Anwendungen mehrere Tenants 101 bedienen, wodurch Ressourcen effizient genutzt werden. Eine Beschreibung der Hardware-Konfiguration des Servers 102 wird im Folgenden in Verbindung mit 2 bereitgestellt.
  • Das Netzwerk 103 kann zum Beispiel ein lokales Netzwerk, ein Weitverkehrsnetzwerk, ein drahtloses Weitverkehrsnetzwerk, ein leitungsvermitteltes Fernsprechnetzwerk, ein Netzwerk eines Global System for Mobile Communications (GSM), ein drahtloses Anwendungsprotokoll- (WAP) Netzwerk, ein WLAN-Netzwerk, ein Netzwerk nach IEEE-802.11-Standards, verschiedene Kombinationen davon usw. sein. Andere Netzwerke, deren Beschreibungen hier der Kürze halber weggelassen wurden, können ebenfalls in Verbindung mit der Umgebung 100 von 1 verwendet werden, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen.
  • Die Umgebung 100 ist in ihrem Schutzumfang nicht auf irgendeine bestimmte Netzwerkarchitektur beschränkt. Die Umgebung kann jede Anzahl von Tenants 101, Servern 102 und Netzwerken 103 umfassen. Zum Beispiel kann die Multi-Tenant-Umgebung 100 mehrere Server 102 umfassen, wie zum Beispiel eine Server-Farm, wobei ein Lastausgleicher (nicht gezeigt) verwendet wird, um Arbeitslasten übergreifend über die Server 102 effektiv auf eine Weise zu verteilen, die ein Überlasten der Ressourcen des Servers 102 vermeidet.
  • Unter folgender Bezugnahme auf 2 veranschaulicht 2 eine Ausführungsform der vorliegenden Erfindung der Hardware-Konfigurationen des Servers 102 (1), der für eine Hardware-Umgebung zum Ausüben einer Ausführungsform der vorliegenden Erfindung typisch ist. Der Server 102 kann einen Prozessor 201 haben, der mit verschiedenen anderen Komponenten durch einen Systembus 202 verbunden ist. Ein Betriebssystem 203 kann auf dem Prozessor 201 ausgeführt werden und eine Steuerung und Koordination der Funktionen der verschiedenen Komponenten von 2 bereitstellen. Eine Anwendung 204 kann gemäß den Grundgedanken der vorliegenden Erfindung in Verbindung mit dem Betriebssystem 203 ausgeführt werden und Aufrufe an das Betriebssystem 203 bereitstellen, wobei die Aufrufe die verschiedenen Funktionen oder Dienste umsetzen, die von der Anwendung 204 durchgeführt werden sollen. Die Anwendung 204 kann zum Beispiel ein Programm zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in einer Multi-Tenant-Umgebung umfassen, wie im Folgenden in Verbindung mit 3 bis 6 erörtert wird.
  • Unter erneuter Bezugnahme auf 2 kann ein Nur-Lese-Speicher („ROM“) 205 mit dem Systembus 202 verbunden sein und ein grundlegendes Eingabe/Ausgabe-System („BIOS“) umfassen, das bestimmte grundlegende Funktionen des Servers 102 steuert. Ein Direktzugriffsspeicher („RAM“) 206 und ein Festplattenadapter 207 können ebenfalls mit dem Systembus 202 verbunden sein. Es ist anzumerken, dass Software-Komponenten einschließlich des Betriebssystems 203 und der Anwendung 204 in den RAM 206 geladen werden können, der der Hautarbeitsspeicher des Servers 102 für eine Ausführung sein kann. Der Festplattenadapter 207 kann ein Integrated-Drive-Electronics- (IDE) Adapter sein, der mit einer Platteneinheit 208, z.B. einem Plattenlaufwerk, Daten austauscht. Es wird angemerkt, dass beispielhafte Ausführungsformen des Programms zum sicheren Verarbeiten von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container, wie im Folgenden in Verbindung mit den 3 bis 6 erörtert, sich in einer Platteneinheit 208 oder in der Anwendung 204 befinden können.
  • Der Server 102 kann ferner einen Datenübertragungsadapter 209 umfassen, der mit dem Bus 202 verbunden ist. Der Datenübertragungsadapter 209 kann den Bus 202 mit einem externen Netzwerk verbinden (z.B. das Netzwerk 103 von 1), wodurch der Server 102 mit den Tenants 101 Daten austauschen kann.
  • Bei Ausführungsformen der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der Ausführungsformen der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Operationen der Ausführungsformen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der Ausführungsformen der vorliegenden Erfindung durchzuführen.
  • Aspekte der Ausführungsformen der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können für einen Prozessor eines Computers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erstellen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich als ein Schritt erreicht werden, der gleichzeitig, im Wesentlichen gleichzeitig, in einer teilweise oder vollständig zeitlich überlappenden Weise ausgeführt wird, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Wie oben angegeben, besteht derzeit die Herausforderung, die Integration von Nachrichtenflüssen zu ermöglichen, die eine gemeinsame Nutzung von Ressourcen, wie zum Beispiel Container, durch mehrere Tenants erlauben, gleichzeitig aber auch sicher ist, wie zum Beispiel, dass keine Auswirkung auf andere integrierte Nachrichtenflüsse von anderen Tenants vorhanden ist.
  • Die Ausführungsformen der vorliegenden Erfindung stellen eine Möglichkeit zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in einer Multi-Tenant-Umgebung bereit, wie im Folgenden in Verbindung mit 3 bis 6 erörtert wird. 3 ist eine grafische Darstellung der Software-Komponenten des Servers 102 (1 und 2), der zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in der Multi-Tenant-Umgebung 100 (1) verwendet wird. 4 ist ein Ablaufplan eines Verfahrens zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in einem Multi-Tenant-Container. 5 ist ein Ablaufplan eines Verfahrens zum Verarbeiten von mehreren integrierten Nachrichtenflüssen, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen. 6 ist ein Ablaufplan eines Verfahrens, um einen Nachrichtenfluss auf Grundlage des Musters, das in dem Nachrichtenfluss erkannt wurde, zu einem Container zu leiten.
  • Wie oben angegeben, ist 3 eine grafische Darstellung der Software-Komponenten des Servers 102 (1 und 2), der zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in der Multi-Tenant-Umgebung 100 (1) gemäß einer Ausführungsform der vorliegenden Erfindung verwendet wird. In einer Ausführungsform können sich diese Software-Komponenten in der Anwendung 204 (2) des Servers 102 befinden. In einer Ausführungsform können sich diese Software-Komponenten in einem Nutzerbereich (Arbeitsspeicherbereich) befinden.
  • Im Folgenden wird eine kurze Beschreibung dieser Software-Komponenten bereitgestellt. Eine ausführlichere Beschreibung dieser Software-Komponenten (einschließlich ihrer Funktionalitäten) wird im Folgenden in Verbindung mit 4 bis 6 bereitgestellt.
  • Unter Bezugnahme auf 3 in Verbindung mit 1 bis 2 umfasst der Server 102 Container 301A bis 301C (jeweils gekennzeichnet als „Container 1“, „Container 2“ und „Container 3“). Die Container 301A bis 301C können insgesamt oder einzeln jeweils als die Container 301 oder der Container 301 bezeichnet werden. Zwar veranschaulicht 3 drei Container 301, doch kann der Server 102 mehr (oder weniger) Container 301 verwenden. Ferner, obwohl sich die folgende Beschreibung auf ein Beschreiben der Merkmale des Containers 301A konzentriert, gilt eine derartige Beschreibung gleichermaßen für die anderen Container 301. Zum Beispiel können die Inhalte der Container 301B, 301C dieselben Komponenten wie der in 3 gezeigte Container 301A umfassen.
  • Ein „Container 301“, wie hierin verwendet, bezieht sich auf eine isolierte Nutzerbereichsinstanz, die zum Speichern von Anwendungen verwendet wird, um von den Tenants 101 bereitgestellte Nachrichtenflüsse zu verarbeiten. Derartige Container 301 können verwendet werden, um Nachrichtenflüsse für mehrere Tenants („Multi-Tenant-Container“) oder für einen spezifizierten einzelnen Tenant („Einzel-Tenant-Container“) zu verarbeiten. In Verbindung mit einem Speichern von Anwendungen kann der Container 301, wie zum Beispiel der Container 301A, auch eine „Integrations-Engine“ 302 speichern (z.B. IBM® App Connect Enterprise). Eine „Integrations-Engine“ 302, wie hierin verwendet, betrifft eine Einheit zum Verarbeiten von integrierten Nachrichtenflüssen von mehreren Tenants 101 durch mehrere Anwendungen in dem Container 301. In einer Ausführungsform umfasst eine derartige Verarbeitung eine Multi-Tenant-Bereitstellung, in der eine einzelne Instanz von derartigen Anwendungen mehrere Tenants 101 bedienen kann, wodurch Ressourcen effizient genutzt werden.
  • In einer Ausführungsform bestimmt die Integrations-Engine 302 in Verbindung mit einem Verarbeiten von integrierten Nachrichtenflüssen von mehreren Tenants, ob ein Nachrichtenfluss benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, und wenn dies der Fall ist, ein Verarbeiten eines derartigen Nachrichtenflusses durch die anwendbare Anwendung stoppt, wenn andere Nachrichtenflüsse von anderen Anwendungen in dem anwendbaren Container 301 verarbeitet werden.
  • Wie in 3 gezeigt, umfasst die Integrations-Engine 302 ferner eine Software-Komponente, die hier als der „Listener“ 303 bezeichnet wird, die so konfiguriert ist, dass sie die Nachrichtenflüsse weiterleitet, die von den entsprechenden Anwendungen verarbeitet werden sollen, wie zum Beispiel den Anwendungen 304A, 304B (die jeweils als „Anwendung 1“ und „Anwendung 2“ gekennzeichnet sind). Obwohl 3 den Container 301A mit zwei gespeicherten Anwendungen 304A, 304B veranschaulicht, kann jeder Container 301 mehr (oder weniger) Anwendungen 304 speichern. Die Anwendung 304, wie hierin verwendet, betrifft ein Programm zum Verarbeiten von Nachrichtenflüssen, die von verschiedenen Tenants 101 bereitgestellt werden.
  • Außerdem ist die Integrations-Engine 302 so konfiguriert, dass sie jeden Schritt in den Nachrichtenflüssen überwacht, die durch die Anwendungen verarbeitet werden sollen. Insbesondere überwacht die Integrations-Engine 302 in einer Ausführungsform jeden Schritt in den Nachrichtenflüssen, die von den Anwendungen verarbeitet werden sollen, um zu bestimmen, ob ein Schritt benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt (z.B. Java®). Eine Allzweck-Programmiersprache wie hierin verwendet (die auch als „generische Anwendungsprogrammiersprache“ bezeichnet wird), verweist auf eine Programmiersprache, die im Allgemeinen in der Computerprogrammierung verwendet wird, wie zum Beispiel Java®. In einer Ausführungsform bestimmt die Integrations-Engine 302, ob ein Schritt benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, indem diese Nachricht in Wörter aufgeteilt wird. Die Integrations-Engine 302 vergleicht die Vorkommen dieser Wörter anschließend mit bekannten Snippets und berechnet die Wahrscheinlichkeit, dass die Nachricht in einer bestimmten Programmiersprache geschrieben ist.
  • In einer Ausführungsform analysiert die Integrations-Engine 302 die Schritte in dem Nachrichtenfluss, um benutzerdefinierte Logik, wie zum Beispiel benutzerdefinierte Regeln und Algorithmen, auf Grundlage eines Abgleichens der Wörter (vorher wird die Nachricht in Wörter aufgeteilt) mit vorher identifizierten Wörtern als der benutzerdefinierten Logik entsprechend zu identifizieren.
  • In einer Ausführungsform stoppt die Integrations-Engine 302 in Reaktion darauf, dass die Integrations-Engine 302 einen Schritt erkennt, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, ein Verarbeiten dieses Nachrichtenflusses durch die Anwendung 304, wenn andere Nachrichtenflüsse vorhanden sind, die von anderen Anwendungen 304 in dem Container 301 verarbeitet werden.
  • Unter Bezugnahme auf 3 kann die Integrations-Engine 302 zum Beispiel eine Anwendung 304 erkennen, die einen Nachrichtenfluss verarbeitet, der eine unsichere Nachricht 305 enthält. Die „unsichere Nachricht“ 305, wie hierin verwendet, verweist auf eine Nachricht, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache enthält. Das heißt, die Integrations-Engine 302 erkennt einen Schritt, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt. Die Integrations-Engine 302 stoppt dann das Verarbeiten dieses Nachrichtenflusses durch die Anwendung 304 (z.B. Anwendung 304A), wenn andere Nachrichtenflüsse vorhanden sind, die von anderen Anwendungen 304 (z.B. Anwendung 304B) in dem Container 301 (z.B. Container 301A) verarbeitet werden.
  • Wenn die anderen Nachrichtenflüsse von den anderen Anwendungen 304 in dem Container 301 (z.B. Container 301A) verarbeitet worden sind, erlaubt die Integrations-Engine 302 anschließend, dass der Nachrichtenfluss, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, nun durch die entsprechende Anwendung 304 verarbeitet wird. Wenn zum Beispiel die anderen Nachrichtenflüsse durch die Anwendungen 304 (z.B. Anwendung 304B) in dem Container 301 verarbeitet worden sind, erlaubt die Integrations-Engine 302, dass der Nachrichtenfluss, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, nun durch die entsprechende Anwendung 304 (z.B. 304A) verarbeitet wird, die ursprünglich diesen Nachrichtenfluss erhalten hat, der verarbeitet werden soll.
  • Wie oben erörtert, stoppt die Integrations-Engine 302 nach einem Erkennen eines Nachrichtenflusses, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache enthält, ein Verarbeiten dieses Nachrichtenflüsse durch die Anwendung 304, wenn andere Nachrichtenflüsse vorhanden sind, die durch andere Anwendungen 304 in dem Container 301 verarbeitet werden. In einer derartigen Situation verhindert eine Komponente, wie zum Beispiel ein Internet-Protocol- (IP) Sprayer 306, dass neue Nachrichtenflüsse durch die Anwendungen 304 in dem Container 301 (z.B. Container 301A) mit dem gestoppten Nachrichtenfluss verarbeitet werden. Insbesondere leitet der IP-Sprayer 306 Datenverkehr (neue Nachrichtenflüsse) zu anderen Containern 301 um (z.B. Container 301B, 301C).
  • Eine weitere Beschreibung dieser und anderer Funktionalitäten des Servers 102 wird im Folgenden in Verbindung mit 4 bis 6 bereitgestellt.
  • Wie oben angegeben, ist 4 ein Ablaufplan eines Verfahrens 400 zum sicheren Verarbeiten der integrierten Nachrichtenflüsse in einem Multi-Tenant-Container 301 (3) gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Unter folgender Bezugnahme auf 4 in Verbindung mit 1 bis 3 überwacht die Integrations-Engine 302 in einem Schritt 401 jeden Schritt in den Nachrichtenflüssen, die durch die Anwendungen 304 in einem Multi-Tenant-Container 301 verarbeitet werden sollen. In einer Ausführungsform umfasst ein derartiges Überwachen ein Kennzeichnen jedes Schritts in dem Nachrichtenfluss als entweder durch die Integrations-Engine 302 bereitgestellt oder als benutzerdefinierte Logik, die in einer Allzweck-Programmiersprache ausgeführt wird. Wenn ein Schritt als durch die Integrations-Engine 302 bereitgestellt gekennzeichnet wird, wird davon ausgegangen, dass die einem derartigen Schritt zugehörige Nachricht eine sichere Nachricht ist. Wenn ein Schritt jedoch als benutzerdefinierte Logik gekennzeichnet ist, die in einer Allzweck-Programmiersprache ausgeführt wird, wird davon ausgegangen, dass die einem derartigen Schritt zugehörige Nachricht eine unsichere Nachricht 305 ist. In einer Ausführungsform kennzeichnet die Integrations-Engine 302 einen Schritt als benutzerdefinierte Logik, die in einer Allzweck-Programmiersprache ausgeführt wird, indem das Ausführen von nicht vertrauenswürdigem generischem Code in dem Container 301 durch die Anwendungen 304 erkannt wird, wie zum Beispiel ein Erkennen der Ausführung von Java®-Datenverarbeitungsknoten, eingebetteter strukturierter Abfragesprache (Embedded Structured Query Language (ESQL) Java®-Erweiterungen, Zuordnungsknoten, die generischen Java®-Code verwenden usw.
  • In einem Schritt 402 bestimmt die Integrations-Engine 302 für jeden überwachten Schritt, ob der überwachte Schritt eine benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt.
  • Wenn die Integrations-Engine 302 bestimmt, dass der überwachte Schritt keine benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt (wie zum Beispiel durch Kennzeichnen des Schritts als durch die Integrations-Engine 302 bereitgestellt), fährt die Integrations-Engine 302 damit fort, jeden Schritt in den Nachrichtenflüssen zu überwachen, die durch die Anwendungen 304 in dem Multi-Tenant-Container 302 im Schritt 401 verarbeitet werden sollen.
  • Wenn die Integrations-Engine 302 jedoch bestimmt, dass der überwachte Schritt benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, bestimmt die Integrations-Engine 302 in einem Schritt 403, ob andere Nachrichtenflüsse vorhanden sind, die von anderen Anwendungen 304 in dem Multi-Tenant-Container 302 (z.B. Container 301A) verarbeitet werden.
  • Wenn keine anderen Nachrichtenflüsse vorhanden sind, die von anderen Anwendungen in dem Multi-Tenant-Container 301 verarbeitet werden, verarbeitet die entsprechende Anwendung 304 (z.B. Anwendung 304A), die die Nachricht empfängt, von der die benutzerdefinierte Logik in der Allzweck-Programmiersprache ausgeführt wird, in einem Schritt 404 den Nachrichtenfluss, der die benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführt.
  • Ferner fährt die Integrations-Engine 302 damit fort, jeden Schritt in den Nachrichtenflüssen zu überwachen, die durch die Anwendungen 304 in dem Multi-Tenant-Container 301 im Schritt 401 verarbeitet werden sollen.
  • Wenn jedoch andere Nachrichtenflüsse vorhanden sind, die von anderen Anwendungen (z.B. Anwendung 304B) in dem Multi-Tenant-Container 301 (z.B. Container 301A) verarbeitet werden, setzt die Integrations-Engine 302 in einem Schritt 405 ein Verarbeiten des Nachrichtenflusses, der die benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführt, durch die Anwendung 304 (z.B. Anwendung 304A) aus. Ferner kann die Integrations-Engine 302 erlauben, dass die anderen Nachrichtenflüsse durch die anderen Anwendungen 304 in dem Multi-Tenant-Container 301 verarbeitet werden. In einer Ausführungsform wird der Nachrichtenfluss ausgesetzt, bis die Verarbeitung der Nachrichtenflüsse, die für die anderen Tenants ausgeführt werden, abgeschlossen ist. Auf diese Weise wird das Risiko einer Einflussnahme auf andere Nachrichtenflüsse vermieden.
  • Ferner verhindert die Integrations-Engine 302 in einem Schritt 406, dass neue Nachrichtenflüsse von den Anwendungen 304 in dem Multi-Tenant-Container 301 verarbeitet werden (Container 301 mit Anwendung 304, der eine unsichere Nachricht 305 empfängt, die verarbeitet werden soll) (z.B. Container 301A). Auf diese Weise wird das Risiko einer Einflussnahme auf andere Nachrichtenflüsse vermieden. In einer Ausführungsform wird ein Verarbeiten von neuen Nachrichtenflüssen durch die Anwendungen 304 in dem Multi-Tenant-Container 301 (z.B. Container 301A) verhindert, indem der IP-Sprayer 306 den Datenverkehr (neue Nachrichtenflüsse) zu anderen Containern 301 (z.B. Container 301B) umleitet.
  • Zum Beispiel kann der IP-Sprayer 306 in einer Ausführungsform einem Lastausgleicher entsprechen. In einer derartigen Ausführungsform wird verhindert, dass neue Nachrichtenflüsse von den Anwendungen 304 in dem Multi-Tenant-Container 302 (z.B. Container 301A) verarbeitet werden, indem die Integrations-Engine 302 ein externes Skript aufruft, um den Lastausgleicher anzuweisen, Datenverkehr weg von dem Container 301 (z.B. Container 301A) zu einem anderen Container 301 (z.B. Container 301B) umzuleiten. Zum Beispiel kann der Lastausgleicher so konfiguriert werden, dass er Arbeitslasten effektiv über die Container 301 auf eine Weise verteilt, die ein Überlasten der Ressourcen eines bestimmten Containers 301 (z.B. Container 301A) vermeidet. Infolgedessen kann der Lastausgleicher Datenverkehr von einem Container 310 mit einer Anwendung 304, der eine zu verarbeitende unsichere Nachricht 305 empfängt, zu einem anderen Container 301 umleiten.
  • In einem anderen Beispiel kann der IP-Sprayer 306 in einer Ausführungsform einer eingehenden Verbindung entsprechen. In einer Ausführungsform wird verhindert, dass neue Nachrichtenflüsse von Anwendungen 304 in dem Multi-Tenant-Container 301 verarbeitet werden, indem die eingehende Verbindung abgeschaltet wird, wie zum Beispiel eine eingehende HyperText-Transfer-Protocol- (HTTP) Verbindung.
  • In einem Schritt 407 bestimmt die Integrations-Engine 302, ob die Verarbeitung der anderen Nachrichtenflüsse durch die Anwendungen 304 in dem Multi-Tenant-Container 301 (z.B. Container 301A) abgeschlossen ist.
  • Wenn die Verarbeitung der anderen Nachrichtenflüsse durch die Anwendungen 304 in dem Multi-Tenant-Container 301 (z.B. Container 301A) nicht abgeschlossen worden ist, fährt die Integrations-Engine 302 damit fort, zu bestimmen, ob die Verarbeitung der anderen Nachrichtenflüsse durch die Anwendungen 304 in dem Multi-Tenant-Container 301 (z.B. Container 301A) im Schritt 407 abgeschlossen ist.
  • Wenn die Verarbeitung der anderen Nachrichtenflüsse durch die Anwendungen 304 in dem Multi-Tenant-Container 301 (z.B. Container 301A) jedoch abgeschlossen ist, verarbeitet die Integrations-Engine 302 in einem Schritt 408 die ausgesetzten Nachrichtenflüsse, die benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführen (Anwendung 304). Das heißt, die Aussetzung des Nachrichtenflusses von Schritt 405 wird nun aufgehoben und der Nachrichtenfluss wird durch die Anwendung 304 in dem Multi-Tenant-Container 301 verarbeitet.
  • Nach Abschluss der Verarbeitung des Nachrichtenflusses, der die benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführt, verwendet die Integrations-Engine 302 in einem Schritt 409 den Multi-Tenant-Container 301 (z.B. Container 301A) erneut oder gibt den Multi-Tenant-Container 301 (z.B. Container 301A) zum Speichern der Anwendungen 304 für einen einzelnen Tenant nach einem Verarbeiten des vorher ausgesetzten Nachrichtenflusses an. Auf diese Weise wird das Risiko dauerhafter Threads oder einer anderen Kontaminierung vermieden, die sich auf nachfolgende Flüsse auswirken.
  • Ferner kann auf diese Weise die große Mehrheit von Tenants Container gemeinsam nutzen, bis ein Nachrichtenfluss unsicheren Code ausführen muss, wobei er von der größenbedingten Wirtschaftlichkeit profitieren kann, die Multi-Tenant-Container bereitstellen, wobei auf das kostspieligere Modell pro Tenant nur zurückgegriffen wird, wenn es absolut notwendig ist.
  • Zwar lag der Schwerpunkt in der vorhergehenden Erörterung auf der Ausführungsform, in der ein einzelner Nachrichtenfluss eine unsichere Operation in dem Multi-Tenant-Container 310 versucht hat, doch soll der Schutzumfang der vorliegenden Erfindung keinesfalls auf eine derartige Ausführungsform beschränkt sein. Zum Beispiel muss sich die Integrations-Engine 302 möglicherweise mit der Situation befassen, in der mehrere Nachrichtenflüsse unsichere Operationen in demselben Container 301 versuchen, wie im Folgenden in Verbindung mit 5 beschrieben.
  • 5 ist ein Ablaufplan eines Verfahrens 500 zum Verarbeiten von mehreren integrierten Nachrichtenflüssen, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache gemäß einer Ausführungsform der vorliegenden Erfindung ausführen.
  • Unter Bezugnahme auf 5 erfolgt in Verbindung mit 1 bis 4 in einem Schritt 501 eine Bestimmung durch die Integrations-Engine 302, ob sie mehrere Nachrichtenflüsse erkennt, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen. Wie vorher erörtert, wird jeder Schritt in den Nachrichtenflüssen entweder als durch die Integrations-Engine 302 bereitgestellt oder als benutzerdefinierte Logik gekennzeichnet, die in einer Allzweck-Programmiersprache ausführt wird. Wenn ein Schritt als durch die Integrations-Engine 302 bereitgestellt gekennzeichnet wird, wird davon ausgegangen, dass die einem derartigen Schritt zugehörige Nachricht eine sichere Nachricht ist. Wenn ein Schritt jedoch gekennzeichnet ist, benutzerdefinierte Logik in einer Allzweck-Programmiersprache auszuführen, wird davon ausgegangen, dass die einem derartigen Schritt zugehörige Nachricht eine unsichere Nachricht 305 ist. In einer Ausführungsform kennzeichnet die Integrations-Engine 302 einen Schritt als benutzerdefinierte Logik, die in einer Allzweck-Programmiersprache ausgeführt wird, indem das Ausführen von nicht vertrauenswürdigem generischem Code in dem Container 301 durch die Anwendungen 304 erkannt wird, wie zum Beispiel ein Erkennen der Ausführung von Java®-Datenverarbeitungsknoten, eingebetteter strukturierter Abfragesprache (Embedded Structured Query Language (ESQL) Java®-Erweiterungen, Zuordnungsknoten, die generischen Java®-Code verwenden usw.
  • Wenn die Integrations-Engine 302 nicht mehrere Nachrichtenflüsse erkennt, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen, fährt die Integrations-Engine 302 damit fort, zu bestimmen, ob sie in einem Schritt 501 mehrere Nachrichtenflüsse erkennt, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen.
  • Wenn die Integrations-Engine 302 jedoch mehrere Nachrichtenflüsse erkennt, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen, erlaubt die Integrations-Engine 302 in einem Schritt 502, dass der früheste erkannte Nachrichtenfluss, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, von der Anwendung 304 verarbeitet wird, die diesen Nachrichtenfluss mit dem nicht vertrauenswürdigen generischen Code (z.B. unsichere Nachricht 305) empfangen hat. Wenn zum Beispiel die Integrations-Engine 302 erkennt, dass die Nachrichtenflüsse, die von den Anwendungen 304A, 304B verarbeitet werden, beide benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen, und der Nachrichtenfluss, der von der Anwendung 304A verarbeitet wird, der früher erkannte Nachrichtenfluss ist, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, würde die Integrations-Engine 302 die Verarbeitung des Nachrichtenflusses durch die Anwendung 304A gestatten und die Verarbeitung des Nachrichtenflusses durch die Anwendung 304B verhindern, wie im Folgenden erörtert.
  • Ferner verhindert die Integrations-Engine 302 in einem Schritt 503, dass die später erkannten Nachrichtenflüsse verarbeitet werden, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen, indem diese Nachrichtenflüsse fehlschlagen. Zum Beispiel gibt die Integrations-Engine 302 in einer Ausführungsform einen Fehler für eine Verarbeitung von derartigen später erkannten Nachrichtenflüssen zurück.
  • In einem Schritt 504 wird durch die Integrations-Engine 302 eine Bestimmung vorgenommen, ob die Verarbeitung der frühesten erkannten Nachrichtenflüsse, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen, abgeschlossen ist.
  • Wenn die Verarbeitung des frühesten erkannten Nachrichtenflusses, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, nicht abgeschlossen ist, fährt die Integrations-Engine 302 damit fort, zu bestimmen, ob in einem Schritt 504 die Verarbeitung des frühesten erkannten Nachrichtenflusses, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, abgeschlossen ist.
  • Wenn jedoch die Verarbeitung des frühesten erkannten Nachrichtenflusses, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, abgeschlossen ist, versucht die Integrations-Engine 302 in einem Schritt 505 erneut, einen fehlgeschlagenen Nachrichtenfluss durch eine andere Anwendung 304 zu verarbeiten, wenn der fehlgeschlagene Nachrichtenfluss noch nicht verarbeitet worden ist. Wenn zum Beispiel ein Nachrichtenfluss, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, vorher fehlgeschlagenen ist, wie beispielweise der Nachrichtenfluss, der durch die Anwendung 304B verarbeitet worden ist, wird erneut versucht, einen derartigen Nachrichtenfluss durch die Anwendung 304B zu verarbeiten.
  • In einer Ausführungsform wird ein fehlgeschlagener Nachrichtenfluss erneut versucht, wenn keine permanenten Operationen abgeschlossen worden sind, wie zum Beispiel keine erfolgreichen Aufrufe von einer Representational-State-Transfer- (REST) Anwendungsprogrammierschnittstelle (API), keine durchgeführten Datenbankaktualisierungen usw.
  • Wenn in einer Ausführungsform mehrere fehlgeschlagene Nachrichtenflüsse vorhanden sind, versucht die Integrations-Engine 302 den frühesten erkannten Nachrichtenfluss erneut, der benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt.
  • In einem Schritt 506 wird durch die Integrations-Engine 302 eine Bestimmung vorgenommen, ob die Verarbeitung der fehlgeschlagenen Nachrichtenflüsse abgeschlossen ist.
  • Wenn die Verarbeitung der fehlgeschlagenen Nachrichtenflüsse nicht abgeschlossen ist, fährt die Integrations-Engine 302 damit fort, in Schritt 506 zu bestimmen, ob die Verarbeitung des fehlgeschlagenen Nachrichtenflusses abgeschlossen ist.
  • Wenn die Verarbeitung des fehlgeschlagenen Nachrichtenflusses jedoch abgeschlossen ist, wird in einem Schritt 507 von der Integrations-Engine 302 eine Bestimmung vorgenommen, ob es weitere fehlgeschlagene Nachrichtenflüsse gibt, die nicht verarbeitet worden sind.
  • Wenn keine weiteren fehlgeschlagenen Nachrichtenflüsse vorhanden sind, die nicht verarbeitet worden sind, wird in einem Schritt 508 die Verarbeitung der fehlgeschlagenen Nachrichtenflüsse abgeschlossen.
  • Wenn jedoch weitere fehlgeschlagene Nachrichtenflüsse vorhanden sind, die nicht verarbeitet worden sind, versucht die Integrations-Engine 302 im Schritt 505 erneut, einen weiteren fehlgeschlagenen Nachrichtenfluss durch eine andere Anwendung 304 zu verarbeiten.
  • Zusätzlich zum Erkennen von mehreren Nachrichtenflüssen, die benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführen, kann die Integrations-Engine 302 einen Nachrichtenfluss auf Grundlage eines Musters, das in den Nachrichtenflüssen erkannt wurde, zu einem Container 301 leiten, wie im Folgenden in Verbindung mit 6 erörtert wird.
  • 6 ist ein Ablaufplan eines Verfahrens 600, um einen Nachrichtenfluss auf Grundlage des Musters, das in dem Nachrichtenfluss erkannt wurde, gemäß einer Ausführungsform der vorliegenden Erfindung zu einem Container 301 (3) zu leiten.
  • Unter Bezugnahme auf 6 erfolgt in Verbindung mit 1 bis 5 in einem Schritt 601 eine Bestimmung durch die Integrations-Engine 302, ob in dem Nachrichtenfluss ein Muster erkannt wird. Ein Muster, wie hierin verwendet, verweist auf Nachrichtenfluss-Szenarios. Zum Beispiel hat jedes Muster Werte, die allgemein als Muster-Parameterwerte bezeichnet werden. Ein Musterparameter kann zum Beispiel ein Name einer Warteschlange sein, aus der die Nachrichten gelesen werden. Andere Beispiele umfassen die Namen von Dateien, Kopfdaten, Attribute, Nachrichtenformate, Typen von Argumenten, Funktionen usw., die in den Nachrichten verwendet werden. In einer Ausführungsform können derartige Informationen von der Integrations-Engine 302 erhalten werden, indem eine Textanalyse der Nachrichten durch Verwenden einer Verarbeitung von natürlicher Sprache durchgeführt wird. Derartiger analysierter Text wird durch Verwenden eines Klassifizierers in einen bestimmten Muster-Parameterwert klassifiziert, der vorab geschult werden kann, um einen bestimmten Text in einen entsprechenden Muster-Parameterwert zu klassifizieren.
  • Nach dem Konfigurieren des Muster-Parameterwerts wird ein Musterinstanz-Projekt generiert, das Referenzen auf alle anderen Projekte in dem Arbeitsbereich enthält, der sich auf die Musterinstanz bezieht. In einer Ausführungsform enthält das Musterinstanz-Projekt auch eine Musterinstanz-Konfigurationsdatei, die Muster-Parameterwerte speichert, die jedem der Muster zugehörig sind. Eine derartige Konfigurationsdatei kann die konfigurierten Muster-Parameterwerte speichern. In einer Ausführungsform ist eine derartige Konfigurationsdatei in einer Speichereinheit des Servers 102 gespeichert (z.B. Arbeitsspeichereinheit 205, Festplatteneinheit 208).
  • In einer Ausführungsform kann die Integrations-Engine 302 nach einem Empfangen eines Nachrichtenflusses, der durch eine Anwendung 304 in dem Container 301 verarbeitet werden soll, bestimmen, ob ein Muster in dem Nachrichtenfluss auf Grundlage eines Identifizierens von Muster-Parameterwerten erkannt wird, und bestimmen, ob derartige Muster-Parameterwerte mit den Muster-Parameterwerten übereinstimmen, die einem Muster zugehörig sind, das in der Konfigurationsdatei gespeichert ist. In einer Ausführungsform analysiert die Integrations-Engine 302 die Daten der Nachrichten, um ihre Muster-Parameterwerte zu bestimmen, wie zum Beispiel durch Verwenden eines Nachrichtenfluss-Debuggers in dem IBM® Integration Toolkit. Nachdem derartige Muster-Parameterwerte erhalten worden sind, kann die Integrations-Engine 302 bestimmen, ob derartige Muster-Parameterwerte mit den Muster-Parameterwerten übereinstimmen, die einem Muster zugehörig sind, das in der Konfigurationsdatei gespeichert ist, wie oben erörtert.
  • Wenn in dem Nachrichtenfluss kein Muster erkannt wird, fährt die Integrations-Engine 302 damit fort, in Schritt 601 zu bestimmen, ob ein Muster in dem Nachrichtenfluss erkannt wird.
  • Wenn jedoch ein Muster in dem Nachrichtenfluss erkannt wird, wird in einem Schritt 602 eine Bestimmung durch die Integrations-Engine 302 vorgenommen, ob das identifizierte Muster einem Nachrichtenfluss entspricht, der von einer Anwendung 304 in einem Einzel-Tenant-Container 301 verarbeitet werden soll. In einer Ausführungsform können die Muster (einschließlich ihrer zugehörigen Muster-Parameterwerte), die in der oben erörterten Konfigurationsdatei gespeichert sind, einem Container 301 zugeordnet werden, wie zum Beispiel einem Container 301, der nur von einem einzelnen Tenant verwendet wird. In einer Ausführungsform werden derartige Informationen in der Konfigurationsdatei gespeichert. Ein Container 301, für den angegeben wird, dass er nur von einem einzelnen Tenant verwendet wird, wird hierin als ein „Einzel-Tenant“-Container 301 bezeichnet.
  • Wenn die Integrations-Engine 302 zum Beispiel ein Muster in dem Nachrichtenfluss erkennt, das einem Muster entspricht, das in der Konfigurationsdatei gespeichert ist, bestimmt die Integrations-Engine 302 aus der Konfigurationsdatei, ob ein Einzel-Tenant-Container 301 einem derartigen Muster zugehörig ist. Wenn ein Einzel-Tenant-Container 301 einem derartigen Muster zugehörig ist, leitet die Integrations-Engine 302 diesen Nachrichtenfluss, der von einer Anwendung 304 verarbeitet werden soll, in einen derartigen Einzel-Tenant-Container 301, wie im Folgenden ferner erörtert wird.
  • Wenn das identifizierte Muster keinem Nachrichtenfluss entspricht, der von einer Anwendung 304 in einem derartigen Einzel-Tenant-Container 301 verarbeitet werden soll, fährt die Integration-Engine 302 im Schritt 601 damit fort, zu bestimmen, ob in dem Nachrichtenfluss ein Muster erkannt wird.
  • Wenn das identifizierte Muster jedoch einem Nachrichtenfluss entspricht, der von einer Anwendung 304 in einem Einzel-Tenant-Container 301 verarbeitet werden soll, leitet die Integrations-Engine 302 in einem Schritt 603 den Nachrichtenfluss, der von der Anwendung 304 verarbeitet werden soll, anschließend in einen Einzel-Tenant-Container 301. Auf diese Weise können die Nachrichtenflüsse, die Einzel-Tenant-Container erfordern, zu derartigen Containern geleitet werden, wodurch das Risiko einer Einflussnahme von derartigen Nachrichtenflüssen verhindert wird.
  • Alternativ kann die Integrations-Engine 302 in einer Ausführungsform statt den Nachrichtenfluss zu einem Einzel-Tenant-Container 301 zu leiten, den Tenant auf die Notwendigkeit einer derartigen Isolation warnend hinweisen.
  • Ausführungsformen der vorliegenden Erfindung können die Technologie bzw. das technische Gebiet einer Multi-Tenant-Bereitstellung verbessern. Wie oben erörtert, umfassen Multi-Tenant-Umgebungen mehrere Tenants (z.B. Gruppen von Benutzern), die von einer einzelnen Software-Instanz bedient werden, die auf einem Server ausgeführt wird. In einer Multi-Tenant-Architektur ist eine Software-Anwendung dafür ausgelegt, für jeden Tenant einen dedizierten Anteil der Instanz bereitzustellen - einschließlich ihrer Daten, Konfiguration, Benutzerverwaltung, Tenant-eigenen Funktionalität und nicht funktionalen Eigenschaften. Infolgedessen können die Ressourcen, die von den Tenants verwendet werden, Tenant-übergreifend gemeinsam genutzt werden. Zum Beispiel können dieselben Ressourcen von mehreren verschiedenen Tenants genutzt werden, was allgemein als „Multi-Tenant-Bereitstellung“ bezeichnet wird. Das heißt, „Multi-Tenant-Bereitstellung“ verweist auf die Zuweisung von Ressourcen, die von verschiedenen Tenants gemeinsam genutzt werden sollen. In Verbindung mit einer Multi-Tenant-Bereitstellung können die Nachrichtenflüsse, die für verschiedene Tenants verarbeitet werden sollen, durch eine Anwendung in demselben Container verarbeitet werden. Derartige Nachrichtenflüsse werden als „integriert“ bezeichnet, da sie durch eine Anwendung in demselben Container verarbeitet werden sollen. Ein „Container“, wie hierin verwendet, verweist auf eine isolierte Nutzerbereichsinstanz. Zum Beispiel ist eine Virtualisierung auf Betriebssystemebene ein Betriebssystemparadigma, in dem der Kernel das Vorhandensein von mehreren isolierten Nutzerbereichsinstanzen erlaubt, wobei derartige Instanzen als „Container“ bezeichnet werden. Durch Verarbeiten von verschiedenen Nachrichtenflüssen für verschiedene Tenants in demselben Container kann sich eine unerwünschte Einflussnahme auf die Verarbeitung von anderen Nachrichtenflüssen für einen verschiedenen Tenant ergeben. Zum Beispiel kann in Multi-Tenant-Umgebungen eine komplizierte Logik erforderlich sein, um Sonderfälle zu bearbeiten, wie zum Beispiel Fehlerfälle, wobei benutzerdefinierte Logik in einer Allzweck-Programmiersprache einbezogen wird (z.B. in Java® geschriebener Code). Zum Beispiel erfordert eine benutzerdefinierte Kompensations- oder Wiederherstellungslogik bei einer Fehlerbearbeitung oft die Unterstützung durch Allzweck-Programmiersprache. Bedauerlicherweise können derartige Allzweck-Programmiersprachen potenziell zum Ausspionieren oder anderweitigem Beeinflussen von unabhängigen integrierten Nachrichtenflüssen missbraucht werden, an denen verschiedene Tenants beteiligt sind. Derzeit können derartige Situationen nur vermieden werden, indem für jeden Tenant ein anderer Container verwendet wird. Zwar ist eine derartige Struktur sicher, jedoch ermöglicht sie keine gemeinsame Nutzung von Ressourcen für eine große Gruppe von Tenants und ist daher kostspielig umzusetzen. Alternativ verhindern einige Multi-Tenant-Umgebungen die Verwendung von Allzweck-Programmiersprachen, um sich mit der oben beschriebenen Situation auseinanderzusetzen. Durch ein Verhindern der Verwendung von derartigen Allzweck-Programmiersprachen ist es jedoch möglich, dass die Multi-Tenant-Umgebung die funktionalen Anforderungen vieler Tenants nicht erfüllen kann. Infolgedessen gibt es derzeit keine Möglichkeit, die Integration von Nachrichtenflüssen zu ermöglichen, die eine gemeinsame Nutzung von Ressourcen, wie zum Beispiel Container, durch mehrere Tenants erlauben, wobei sie auch sicher sind, wie zum Beispiel ohne Auswirkung auf andere integrierte Nachrichtenflüsse von anderen Tenants.
  • Ausführungsformen der vorliegenden Erfindung verbessern eine derartige Technologie, indem jeder Schritt in den Nachrichtenflüssen überwacht wird, die durch die Anwendungen in dem Multi-Tenant-Container verarbeitet werden sollen, wobei der Multi-Tenant-Container Anwendungen zum Verarbeiten der Nachrichtenflüsse für mehrere Tenants speichert. Jeder Schritt in den Nachrichtenflüssen wird überwacht, um zu bestimmen, ob der Schritt benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt. Wenn für den überwachten Schritt bestimmt wird, dass er benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt, wird die Verarbeitung des Nachrichtenflusses, der benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführt, durch die Anwendung in dem Container ausgesetzt, wenn andere Nachrichtenflüsse vorhanden sind, die von anderen Anwendungen in dem Container verarbeitet werden. Ferner wird verhindert, dass neue Nachrichtenflüsse durch die Anwendungen in dem Multi-Tenant-Container verarbeitet werden. Nach dem Verarbeiten der anderen Nachrichtenflüsse durch die anderen Anwendungen in dem Multi-Tenant-Container werden die ausgesetzten Nachrichtenflüsse durch die Anwendungen in dem Multi-Tenant-Container verarbeitet. Auf diese Weise werden die Nachrichtenflüsse von verschiedenen Tenants integriert, um die gemeinsame Nutzung von Ressourcen, wie zum Beispiel ein Container zu erlauben, wobei sie aber gleichzeitig sicher sind, indem sie sich zum Beispiel nicht auf die anderen integrierten Nachrichtenflüsse von anderen Tenants auswirken. Ferner ergibt sich auf diese Weise eine Verbesserung auf dem technischen Gebiet von Multi-Tenant-Bereitstellung.
  • Es sollte von vornherein klar sein, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud Computing enthält, dass eine Umsetzung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jedem beliebigen Typ von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle umfassen.
  • Die Eigenschaften sind wie folgt:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
    • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
    • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu bedienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
    • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt, und sie können jederzeit in jeder beliebigen Menge gekauft werden.
    • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Die Dienstmodelle sind wie folgt:
    • Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. eine auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
    • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
    • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Die Nutzungsmodelle sind wie folgt:
    • Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb von Geschäftsräumen vorhanden sein.
    • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
    • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
    • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt von Cloud Computing steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten aufweist.
  • Unter folgender Bezugnahme auf 7 wird eine veranschaulichende Cloud-Computing-Umgebung 700 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 700 einen oder mehrere Cloud-Computing-Knoten 701, mit denen lokale Datenverarbeitungseinheiten, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 702A, Desktop-Computer 702B, Laptop-Computer 702C und/oder Fahrzeug-Computersystem 702N, Daten austauschen können. Die Knoten 701 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder in einer Kombination davon. Damit hat die Cloud-Computing-Umgebung 700 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sollte klar sein, dass die in 7 gezeigten Typen von Datenverarbeitungseinheiten 702A bis 702N nur zur Veranschaulichung dienen sollen, und dass die Cloud-Computing-Knoten 701 und die Cloud-Computing-Umgebung 700 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
  • Unter folgender Bezugnahme auf 8 wird eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 700 (7) bereitgestellt werden. Dabei sollte von Anfang an klar sein, dass die in 8 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 801 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 802; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 803; Server 804; Blade-Server 805; Speichereinheiten 806; und Netzwerke und vernetzte Komponenten 807. In einigen Ausführungsformen enthalten Software-Komponenten Software für Netzwerkanwendungsserver 808 und Datenbank-Software 809.
  • Eine Virtualisierungsschicht 810 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 811; virtueller Speicher 812; virtuelle Netzwerke 813, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 814; und virtuelle Clients 815.
  • In einem Beispiel kann eine Verwaltungsschicht 816 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 817 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und weiteren Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 818 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 819 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Service-Level- (Dienstgüte) Verwaltung 820 sorgt für Zuweisung und Verwaltung von Cloud-Computing-Ressourcen, sodass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 821 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
  • Eine Arbeitslastenschicht 822 stellt Beispiele für eine Funktionalität bereit, für welche die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 823; Software-Entwicklung und Lifecycle-Management 824; Bereitstellung von virtuellen Schulungen 825; Datenanalyseverarbeitung 826; Transaktionsverarbeitung 827; und Verarbeitung von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container 828.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und Erfindungsgedanken der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.

Claims (20)

  1. Durch einen Computer umgesetztes Verfahren zum sicheren Verarbeiten von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container, wobei das Verfahren aufweist: Überwachen jedes Schritts in einer Mehrzahl von Nachrichtenflüssen, die von einer Mehrzahl von Anwendungen in dem Multi-Tenant-Container verarbeitet werden sollen, wobei der Multi-Tenant-Container Anwendungen speichert, die Nachrichtenflüsse für mehrere Tenants verarbeiten; Bestimmen, ob jeder Schritt in der Mehrzahl von Nachrichtenflüssen benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt; Aussetzen einer Verarbeitung eines Nachrichtenflusses durch eine Anwendung in dem Multi-Tenant-Container in Reaktion auf ein Erkennen, dass der Nachrichtenfluss benutzerdefinierte Logik in der Allzweck-Programmiersprache und in Reaktion darauf ausführt, dass andere Nachrichtenflüsse durch andere Anwendungen in dem Multi-Tenant-Container verarbeitet werden; Verhindern, dass neue Nachrichtenflüsse durch Anwendungen in dem Multi-Tenant-Container in Reaktion auf ein Aussetzen einer Verarbeitung der Nachrichtenflüsse durch die Anwendung in dem Multi-Tenant-Container verarbeitet werden; und Verarbeiten des ausgesetzten Nachrichtenflusses durch die Anwendung in dem Multi-Tenant-Container, nachdem ein Verarbeiten der anderen Nachrichtenflüsse durch andere Anwendungen in dem Multi-Tenant-Container abgeschlossen ist.
  2. Verfahren nach Anspruch 1, das ferner aufweist: Wiederverwenden des Multi-Tenant-Containers nach Abschluss der Verarbeitung des ausgesetzten Nachrichtenflusses durch die Anwendung in dem Multi-Tenant-Container.
  3. Verfahren nach Anspruch 1, das ferner aufweist: Benennen des Multi-Tenant-Containers zum Speichern von Anwendungen für einen einzelnen Tenant nach Abschluss der Verarbeitung des ausgesetzten Nachrichtenflusses durch die Anwendung in dem Multi-Tenant-Container.
  4. Verfahren nach Anspruch 1, das ferner aufweist: Erkennen von mehreren Nachrichtenflüssen, die benutzerdefinierte Logik in der Allzweck-Programmiersprache in dem Multi-Tenant-Container ausführen; Verarbeiten von einem der erkannten Nachrichtenflüsse, die benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführen, durch eine erste Anwendung in dem Multi-Tenant-Container, wobei der eine der erkannten Nachrichtenflüsse, der verarbeitet wird, einem frühesten erkannten Nachrichtenfluss entspricht, der benutzerdefinierte Logik in Allzweck-Programmiersprache ausführt; und Verhindern, dass später erkannte Nachrichtenflüsse von anderen Anwendungen in dem Multi-Tenant-Container verarbeitet werden, indem die Nachrichtenflüsse fehlschlagen.
  5. Verfahren nach Anspruch 4, das ferner aufweist: erneutes Versuchen, einen fehlgeschlagenen Nachrichtenfluss durch eine zweite Anwendung in dem Multi-Tenant-Container zu verarbeiten in Reaktion auf einen Abschluss der Verarbeitung des einen der erkannten Nachrichtenflüsse, der benutzerdefinierte Logik in der Allzweck-Programmiersprache durch die erste Anwendung in dem Multi-Tenant-Container ausführt.
  6. Verfahren nach Anspruch 1, das ferner aufweist: Erkennen eines Musters in einem Nachrichtenfluss; Identifizieren des Musters als einem Nachrichtenfluss entsprechend, der durch eine Anwendung in einem Einzel-Tenant-Container verarbeitet werden soll; und Leiten des Nachrichtenflusses, der durch die Anwendung verarbeitet werden soll, in einen Einzel-Tenant-Container.
  7. Verfahren nach Anspruch 1, wobei verhindert wird, dass die neuen Nachrichtenflüsse durch Anwendungen in dem Multi-Tenant-Container verarbeitet werden, indem eine eingehende Verbindung abgeschaltet oder ein externes Skript aufgerufen wird, um einen Lastausgleicher anzuweisen, Datenverkehr weg von dem Multi-Tenant-Container umzuleiten.
  8. Computerprogrammprodukt zum sicheren Verarbeiten von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container, wobei das Computerprogrammprodukt ein oder mehrere durch einen Computer lesbare Speichermedien mit darauf verkörpertem Programmcode aufweist, wobei der Programmcode Programmanweisungen aufweist zum: Überwachen jedes Schritts in einer Mehrzahl von Nachrichtenflüssen, die von einer Mehrzahl von Anwendungen in dem Multi-Tenant-Container zu verarbeiten sind, wobei der Multi-Tenant-Container Anwendungen speichert, die Nachrichtenflüsse für mehrere Tenants verarbeiten; Bestimmen, ob jeder Schritt in der Mehrzahl von Nachrichtenflüssen benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt; Aussetzen einer Verarbeitung eines Nachrichtenflusses durch eine Anwendung in dem Multi-Tenant-Container in Reaktion auf ein Erkennen, dass der Nachrichtenfluss benutzerdefinierte Logik in der Allzweck-Programmiersprache und in Reaktion darauf ausführt, dass andere Nachrichtenflüsse durch andere Anwendungen in dem Multi-Tenant-Container verarbeitet werden; Verhindern, dass neue Nachrichtenflüsse durch Anwendungen in dem Multi-Tenant-Container in Reaktion auf ein Aussetzen einer Verarbeitung des Nachrichtenflusses durch die Anwendung in dem Multi-Tenant-Container verarbeitet werden; und Verarbeiten des ausgesetzten Nachrichtenflusses durch die Anwendung in dem Multi-Tenant-Container, nachdem ein Verarbeiten der anderen Nachrichtenflüsse durch andere Anwendungen in dem Multi-Tenant-Container abgeschlossen ist.
  9. Computerprogrammprodukt nach Anspruch 8, wobei der Programmcode ferner die Programmieranweisungen aufweist für: Wiederverwenden des Multi-Tenant-Containers nach Abschluss der Verarbeitung des ausgesetzten Nachrichtenflusses durch die Anwendung in dem Multi-Tenant-Container.
  10. Computerprogrammprodukt nach Anspruch 8, wobei der Programmcode ferner die Programmieranweisungen aufweist für: Benennen des Multi-Tenant-Containers zum Speichern von Anwendungen für einen einzelnen Tenant nach Abschluss der Verarbeitung des ausgesetzten Nachrichtenflusses durch die Anwendung in dem Multi-Tenant-Container.
  11. Computerprogrammprodukt nach Anspruch 8, wobei der Programmcode ferner die Programmieranweisungen aufweist für: Erkennen von mehreren Nachrichtenflüssen, die benutzerdefinierte Logik in der Allzweck-Programmiersprache in dem Multi-Tenant-Container ausführen; Verarbeiten von einem der erkannten Nachrichtenflüsse, die benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführen, durch eine erste Anwendung in dem Multi-Tenant-Container, wobei der eine der erkannten Nachrichtenflüsse, der verarbeitet wird, einem frühesten erkannten Nachrichtenfluss entspricht, der benutzerdefinierte Logik in Allzweck-Programmiersprache ausführt; und Verhindern, dass später erkannte Nachrichtenflüsse von anderen Anwendungen in dem Multi-Tenant-Container verarbeitet werden, indem die Nachrichtenflüsse fehlschlagen.
  12. Computerprogrammprodukt nach Anspruch 11, wobei der Programmcode ferner die Programmieranweisungen aufweist für: erneutes Versuchen, einen fehlgeschlagenen Nachrichtenfluss durch eine zweite Anwendung in dem Multi-Tenant-Container zu verarbeiten in Reaktion auf einen Abschluss der Verarbeitung des einen der erkannten Nachrichtenflüsse, der benutzerdefinierte Logik in der Allzweck-Programmiersprache durch die erste Anwendung in dem Multi-Tenant-Container ausführt.
  13. Computerprogrammprodukt nach Anspruch 8, wobei der Programmcode ferner die Programmieranweisungen aufweist für: Erkennen eines Musters in einem Nachrichtenfluss; Identifizieren des Musters als einem Nachrichtenfluss entsprechend, der durch eine Anwendung in einem Einzel-Tenant-Container verarbeitet werden soll; und Leiten des Nachrichtenflusses, der durch die Anwendung verarbeitet werden soll, in einen Einzel-Tenant-Container.
  14. Computerprogrammprodukt nach Anspruch 8, wobei verhindert wird, dass die neuen Nachrichtenflüsse durch Anwendungen in dem Multi-Tenant-Container verarbeitet werden, indem eine eingehende Verbindung abgeschaltet oder ein externes Skript aufgerufen wird, um einen Lastausgleicher anzuweisen, Datenverkehr weg von dem Multi-Tenant-Container umzuleiten.
  15. System, das aufweist: einen Arbeitsspeicher zum Speichern eines Computerprogramms zum sicheren Verarbeiten von integrierten Nachrichtenflüssen in einem Multi-Tenant-Container; und einen Prozessor, der mit dem Arbeitsspeicher verbunden ist, wobei der Prozessor konfiguriert ist, um die Programmanweisungen des Computerprogramms auszuführen, das aufweist: Überwachen jedes Schritts in einer Mehrzahl von Nachrichtenflüssen, die durch eine Mehrzahl von Anwendungen in dem Multi-Tenant-Container zu verarbeiten sind, wobei der Multi-Tenant-Container Anwendungen speichert, die Nachrichtenflüsse für mehrere Tenants verarbeiten; Bestimmen, ob jeder Schritt in der Mehrzahl von Nachrichtenflüssen benutzerdefinierte Logik in einer Allzweck-Programmiersprache ausführt; Aussetzen einer Verarbeitung eines Nachrichtenflusses durch eine Anwendung in dem Multi-Tenant-Container in Reaktion auf ein Erkennen, dass der Nachrichtenfluss eine benutzerdefinierte Logik in der Allzweck-Programmiersprache und in Reaktion darauf ausführt, dass andere Nachrichtenflüsse durch andere Anwendungen in dem Multi-Tenant-Container verarbeitet werden; Verhindern, dass neue Nachrichtenflüsse durch Anwendungen in dem Multi-Tenant-Container in Reaktion auf ein Aussetzen einer Verarbeitung der Nachrichtenflüsse durch die Anwendung in dem Multi-Tenant-Container verarbeitet werden; und Verarbeiten der ausgesetzten Nachrichtenflüsse durch die Anwendung in dem Multi-Tenant-Container, nachdem ein Verarbeiten der anderen Nachrichtenflüsse durch andere Anwendungen in dem Multi-Tenant-Container abgeschlossen ist.
  16. System nach Anspruch 15, wobei die Programmanweisungen des Computerprogramms ferner aufweisen: Wiederverwenden des Multi-Tenant-Containers nach Abschluss der Verarbeitung des ausgesetzten Nachrichtenflusses durch die Anwendung in dem Multi-Tenant-Container.
  17. System nach Anspruch 15, wobei die Programmanweisungen des Computerprogramms ferner aufweisen: Benennen des Multi-Tenant-Containers zum Speichern von Anwendungen für einen einzelnen Tenant nach Abschluss der Verarbeitung der ausgesetzten Nachrichtenflüsse durch die Anwendung in dem Multi-Tenant-Container.
  18. System nach Anspruch 15, wobei die Programmanweisungen des Computerprogramms ferner aufweisen: Erkennen von mehreren Nachrichtenflüssen, die benutzerdefinierte Logik in der Allzweck-Programmiersprache in dem Multi-Tenant-Container ausführen; Verarbeiten von einem der erkannten Nachrichtenflüsse, die benutzerdefinierte Logik in der Allzweck-Programmiersprache ausführen, durch eine erste Anwendung in dem Multi-Tenant-Container, wobei der eine der erkannten Nachrichtenflüsse, der verarbeitet wird, einem frühesten erkannten Nachrichtenfluss entspricht, der benutzerdefinierte Logik in Allzweck-Programmiersprache ausführt; und Verhindern, dass später erkannte Nachrichtenflüsse von anderen Anwendungen in dem Multi-Tenant-Container verarbeitet werden, indem die Nachrichtenflüsse fehlschlagen.
  19. System nach Anspruch 18, wobei die Programmanweisungen des Computerprogramms ferner aufweisen: erneutes Versuchen, einen fehlgeschlagenen Nachrichtenfluss durch eine zweite Anwendung in dem Multi-Tenant-Container zu verarbeiten in Reaktion auf einen Abschluss der Verarbeitung des einen der erkannten Nachrichtenflüsse, der benutzerdefinierte Logik in der Allzweck-Programmiersprache durch die erste Anwendung in dem Multi-Tenant-Container ausführt.
  20. System nach Anspruch 15, wobei die Programmanweisungen des Computerprogramms ferner aufweisen: Erkennen eines Musters in einem Nachrichtenfluss; Identifizieren des Musters als einem Nachrichtenfluss entsprechend, der durch eine Anwendung in einem Einzel-Tenant-Container verarbeitet werden soll; und Leiten des Nachrichtenflusses, der durch die Anwendung verarbeitet werden soll, in einen Einzel-Tenant-Container.
DE112020005362.8T 2020-01-09 2020-12-21 Sicheres verarbeiten von integrierten nachrichtenflüssen in einem multi-tenant-container Pending DE112020005362T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/738,760 US20210216343A1 (en) 2020-01-09 2020-01-09 Safely processing integrated flows of messages in a multi-tenant container
US16/738,760 2020-01-09
PCT/IB2020/062284 WO2021140397A1 (en) 2020-01-09 2020-12-21 Safely processing integrated flows of messages in a multi-tenant container

Publications (1)

Publication Number Publication Date
DE112020005362T5 true DE112020005362T5 (de) 2022-10-13

Family

ID=76763297

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020005362.8T Pending DE112020005362T5 (de) 2020-01-09 2020-12-21 Sicheres verarbeiten von integrierten nachrichtenflüssen in einem multi-tenant-container

Country Status (6)

Country Link
US (1) US20210216343A1 (de)
JP (1) JP7501983B2 (de)
CN (1) CN114930788A (de)
DE (1) DE112020005362T5 (de)
GB (1) GB2607480A (de)
WO (1) WO2021140397A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11868206B2 (en) * 2021-05-11 2024-01-09 Sap Se Automated mass message processing
CN115328529B (zh) * 2022-06-30 2023-08-18 北京亚控科技发展有限公司 应用管理方法及相关设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772835B1 (en) * 2013-03-13 2017-09-26 Amazon Technologies, Inc. Modification of program code for execution in a multi-tenant or distributed computing environment
CN105323282B (zh) * 2014-07-28 2018-12-04 神州数码信息系统有限公司 一种面向多租户的企业应用部署与管理系统
US10148738B2 (en) * 2014-11-12 2018-12-04 Zuora, Inc. System and method for equitable processing of asynchronous messages in a multi-tenant platform
US10516733B2 (en) 2014-11-25 2019-12-24 Auth0, Inc. Multi-tenancy via code encapsulated in server requests
US10855725B2 (en) 2016-06-02 2020-12-01 Microsoft Technology Licensing, Llc Hardware-based virtualized security isolation
US10025924B1 (en) 2016-08-26 2018-07-17 Parallels IP Holdings GmbH Taskless containers for enhanced isolation of users and multi-tenant applications
CN109565511B (zh) * 2016-09-16 2021-06-29 甲骨文国际公司 用于多租户身份和数据安全管理云服务的租户和服务管理
US10904074B2 (en) * 2016-09-17 2021-01-26 Oracle International Corporation Composite event handler for a multi-tenant identity cloud service
US10360410B2 (en) * 2016-11-14 2019-07-23 International Business Machines Corporation Providing containers access to container daemon in multi-tenant environment
US20190018953A1 (en) * 2017-07-12 2019-01-17 Open Text Corporation Methods and systems for tenant aware behavior injection in content metadata service
CN107689953B (zh) * 2017-08-18 2020-10-27 中国科学院信息工程研究所 一种面向多租户云计算的容器安全监控方法及系统
US10715472B2 (en) * 2017-08-22 2020-07-14 Oracle International Corporation System and method for unit-of-order routing
US10797966B2 (en) * 2017-10-29 2020-10-06 Nicira, Inc. Service operation chaining
EP3694173B1 (de) * 2019-02-08 2022-09-21 Palantir Technologies Inc. Isolieren von anwendungen, die mehreren mandanten innerhalb einer computerplattform zugeordnet sind
JP2020154391A (ja) * 2019-03-18 2020-09-24 富士ゼロックス株式会社 情報処理システムおよびプログラム
US11146624B2 (en) * 2019-10-03 2021-10-12 Microsoft Technology Licensing, Llc Real time multi-tenant workload tracking and auto throttling

Also Published As

Publication number Publication date
WO2021140397A1 (en) 2021-07-15
US20210216343A1 (en) 2021-07-15
JP2023510528A (ja) 2023-03-14
JP7501983B2 (ja) 2024-06-18
GB2607480A (en) 2022-12-07
GB202211292D0 (en) 2022-09-14
CN114930788A (zh) 2022-08-19

Similar Documents

Publication Publication Date Title
DE112016006080B4 (de) Verwaltung von virtuellen desktopinstanzenpools
DE112012000444B4 (de) Verfahren, System und Computerprogrammprodukt zum Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes sowie Verfahren zum Implementieren eines entsprechenden Systems
DE112011102073B4 (de) Dienstimplementierung von einem Dienstverzeichnis
DE112018003006T5 (de) Erkennung und entschärfung von angriffen von aussen bei der datenverarbeitung
DE112020003820T5 (de) Erkennung von Anomalien und Abweichungen unter Verwendung eines domänenindizierten Einschränkungs-Repository
DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
DE112021002245T5 (de) Verhindern einer unberechtigten bereitstellung von paketen in clustern
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112011103522T5 (de) Erstellung eines Multidimensionalen Modells von Software-Angeboten
DE112016001657T5 (de) Multi-Tenant-Sensitiver DHCP-Mechanismus für Cloud-Netzwerke
DE112010004160T5 (de) Portieren virtueller Abbilder zwischen Plattformen
DE112021002797T5 (de) Datenschutzerhaltende architektur für genehmigungspflichtige blockchains
DE112021002487T5 (de) Teilen einer geografisch konzentrierten arbeitslast zwischen benachbarten mec-hosts mehrerer netzbetreiber
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
DE112019001433T5 (de) Datenanonymisierung
DE102021130396A1 (de) Datenzugriffsüberwachung und -steuerung
DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
DE102016105062A1 (de) Nähengestützte Berechtigungsprüfung für einheitenübergreifend verteilte Daten
DE112020005362T5 (de) Sicheres verarbeiten von integrierten nachrichtenflüssen in einem multi-tenant-container
DE102021125182A1 (de) Gemeinsam genutzte unternehmenscloud
DE112020005373T5 (de) Mechanismus zur authentifizierung durch nutzung von positionsbestätigung
DE112021004613T5 (de) Redigierbare blockchain
DE112022002615T5 (de) Kontinuierliche funktionsfähigkeit und integrität von anwendungen während eines migrationsvorgangs
DE112022002736T5 (de) Übertragen von aufgabendaten zwischen edge-einheiten beim edge computing

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R084 Declaration of willingness to licence