Middleware
Middleware ist Software, die Lücken zwischen Anwendungen und anderen Tools oder Datenbanken schließen soll. Middleware ist zwischen einem Betriebssystem und den darauf ausgeführten Anwendungen angesiedelt. Sie erfüllt Aufgaben der Kommunikation und Datenverwaltung zwischen Anwendungen, die ansonsten keine Möglichkeit zum Datenaustausch hätten – beispielsweise zwischen Software und Datenbanken.
Middleware ist vielfältig einsetzbar; Organisationen und Entwickler nutzen sie häufig, um die Effizienz ihrer Anwendungen zu steigern. Unternehmen, die Multi-Cloud- und containerisierte Umgebungen verwenden, setzen Middleware häufig auch als kostengünstigere Möglichkeit ein, um Anwendungen zu entwickeln und zu skalieren.
Weitere klassische Einsatzgebiete für Middleware sind der Umgang mit Daten und API-Verwaltung, Authentifizierung und Messaging-Dienste.
Warum heißt es Middleware?
Der Name Middleware kommt daher, dass die Software in der Mitte zwischen den clientseitigen Anforderungen am Frontend und der angeforderten Backend-Ressource sitzt.
Ein Client kann eine Anfrage über das Netzwerk senden. Dieser Client ist normalerweise eine Anwendung, die sich auf dem Frontend befindet, wo der Benutzer mit der Software interagiert. Ressourcen wie Datenbanken, Nachrichtenwarteschlangen, NoSQL-Datenspeicher und Dateiserver gehören zu den häufig anzutreffenden Komponenten im Backend. Zwischen diesen beiden Teilen der Architektur sitzt die Middleware.
So funktioniert Middleware
Netzwerkbasierte Anfragen versuchen, Informationen aus dem Backend zu ziehen. Das kann so einfach sein wie das aufrufen und Streamen von Medien, oder so komplex wie ein Verlauf von Banktransaktionen.
Die angeforderten Daten können viele verschiedene Formen annehmen und können auf verschiedene Weise gespeichert werden, beispielsweise von einem Dateiserver kommend, aus einer Nachrichtenwarteschlange geholt oder in einer Datenbank aufbewahrt werden. Die Rolle der Middleware besteht darin, den Zugriff auf diese Backend-Ressourcen zu ermöglichen und zu vereinfachen. Middleware-Programme stellen normalerweise einen Messaging-Dienst für Anwendungen bereit, um Daten zu übertragen, wie zum Beispiel Simple Object Access Protocol (SOAP), Representational State Transfer (REST) oder JavaScript Object Notation (JSON).
Wozu benötigen Sie Middleware?
Middleware erfüllt eine Vielzahl von Funktionen. Erstens verwaltet es die Verbindung zu verschiedenen Backend-Ressourcen. Eine Middleware-Komponente kann einen Verbindungspool erstellen, um einen schnellen und effizienten Zugriff auf eine gängige Backend-Datenbank zu ermöglichen. Sie kann auch Verbindungen zu Nachrichtenwarteschlangen und Topics erstellen. Darüber hinaus kann eine Middleware-Software Verbindungen zu Cloud-basierten Ressourcen wie dem Amazon Simple Storage Service (Amazon S3) verwalten.
Zweitens hat Middleware-Software die Fähigkeit, Logik basierend auf der Anforderung des Clients umzusetzen. Zum Beispiel kann eine Middleware-Komponente erkennen, dass in einem Client Browser Englisch als Oberflächensprache eingestellt wurde und infolgedessen passt die Middleware die Anfrage and das Backend so an, dass es nur englischsprachige Ergebnisse ausgibt. Oder sie erkennt den geografischen Standort des Clients, der die Anfrage stellt, an seiner IP-Adresse, so dass der Server Ergebnisse priorisieren, die sich in der Nähe des Clients befinden. Die Möglichkeit, eine Anfrage vom Benutzer entgegenzunehmen, eine Logik auszuführen und die Ergebnisse dann anzupassen, ist eine wichtige Aufgabe von Middleware-Software.
Drittens spielt Middleware eine wichtige Rolle bei der parallelen Verarbeitung, beim Lastenausgleich und beim Transaktionsmanagement. Middleware-Software kann in der Regel vertikal und horizontal skaliert werden, um eingehende Client-Anfragen auf mehrere Server, virtuelle Maschinen (VM) oder Verfügbarkeitszonen der Cloud zu verteilen. Middleware-Software kann auch Probleme mit widersprüchlichen Anfragen bewältigen, wie zum Beispiel Fehler, die auftreten, wenn zwei oder mehr Clients gleichzeitig versuchen, auf eine bestimmte Backend-Ressource zuzugreifen oder diese zu aktualisieren.
Schließlich spielt Middleware eine wichtige Rolle bei der Sicherung des Zugriffs auf Backend-Ressourcen. Middleware-Software kann Anwender dazu herausfordern, ihre Sicherheitsinfrastruktur zu verbessern; es verlangt sowohl eine sichere Verbindung – mit einer Technologie wie SSL (Secure Sockets Layer) – als auch eine Authentifizierung – entweder über Benutzername und Passwort oder einem digitalen Zertifikat. Anhand dieser Sicherheitsinformationen überprüft das System, ob der anfragende Kunde die Berechtigung zum Zugriff auf die betreffenden Daten hat.
Middleware-Kategorien
Im Allgemeinen teilen IT-Branchenanalysten – wie Gartner und Forrester Research – Middleware in zwei Kategorien ein: Middleware zum Integrieren von Unternehmensanwendungen und Plattform-Middleware.
Middleware zur Integration von Unternehmensanwendungen ermöglicht es Programmierern, Geschäftsanwendungen zu erstellen, ohne Integrationen für jede neue Umgebung individuell erstellen zu müssen. Middleware unterstützt die Zusammenarbeit von Software- und Servicekomponenten und bietet eine Funktionsebene für Datenkonsistenz und Multi-Enterprise- oder B2B-Integration.
In der Regel bietet Integrations-Middleware Messaging-Dienste, damit Anwendungen über Messaging-Frameworks wie SOAP, Webservices, REST oder JSON kommunizieren können. Andere Middleware-Technologien, die in diese Kategorie passen, sind Object Request Brokers (ORB) und Datendarstellungstechnologien wie XML.
Unternehmen können einzelne Integrations-Middleware-Produkte, On-Premises-Software oder Cloud-basierte Anwendungsintegrations-Suiten erwerben.
Plattform-Middleware hingegen unterstützt die Softwareentwicklung und -bereitstellung, indem sie eine Laufzeit-Hosting-Umgebung wie einen Container für die Anwendungsprogrammlogik bereitstellt. Die Hauptkomponenten sind In-Memory- und Enterprise-Anwendungsserver sowie Webserver und Content Management. Die Plattform-Middleware umfasst Tools, die die Anwendungsentwicklung und -bereitstellung unterstützen, wie Webserver, Anwendungsserver und Content-Management-Systeme.
Eine eingebettete oder externe Kommunikationsplattform-Middleware ermöglicht die Zusammenarbeit verschiedener Kommunikationstools für die Interaktion zwischen Anwendungen und Diensten. Ressourcenverwaltungsdienste wie Microsoft Azure Resource Manager hosten die Anwendungsprogrammierlogik zur Laufzeit – eine weitere Schlüsselfunktion der Plattform-Middleware. Weitere Komponenten sind Trusted Platform Modules (TPMs) und In-Memory-Data-Grids (IMDGs).
Plattform-Middleware-Produkte sind als spezifische On-Premise- oder Cloud-Service-Tools sowie als Multitool Suiten erhältlich. Unter den Cloud Suites bietet Middleware as a Service die Laufzeitumgebung und einen integrierten Satz von Plattformtools.
Arten von Middleware
Hier sind einige häufig verwendete Arten von Middleware:
- Messaging-Middleware erleichtert die Kommunikation zwischen verteilten Anwendungen und Diensten.
- Objekt- oder ORB-Middleware ermöglicht Softwarekomponenten oder Objekten, über verteilte Systeme hinweg mit einem Programm – beispielsweise in Containern – zu kommunizieren und zu interagieren.
- RPC-Middleware (Remote Procedure Call) stellt ein Protokoll bereit, mit dem ein Programm einen Dienst von einem anderen Programm anfordern kann, das sich auf einem anderen Computer oder Netzwerk befindet.
- Daten- oder Datenbank-Middleware ermöglicht den direkten Zugriff auf und die Interaktion mit Datenbanken; sie enthält normalerweise SQL-Datenbanksoftware.
- Transaktions- oder transaktionelle Middleware überwacht den reibungslosen Ablauf von Transaktionsvorgängen.
- Inhaltszentrierte Middleware ermöglicht clientseitige Anfragen nach bestimmten Inhalten und Abstracts und liefert diese; sie ist vergleichbar mit Publish/Subscribe-Middleware wie Apache Kafka.
- Embedded Middleware erleichtert die Kommunikation und Integration zwischen eingebetteten Apps und Betriebssystemen in Echtzeit.
Middleware-Programme sind in lokaler Software und Cloud-Diensten enthalten. Sie können je nach Anwendungsfall unabhängig oder zusammen verwendet werden. Auf der einen Seite bündeln Cloud-Anbieter Produkte zu allgemeinen Cloud-Service-Suiten – wie Middleware as a Service (MWaaS) oder Integration Platform as a Service (iPaaS) – entscheiden sich viele Unternehmen für unabhängige Middleware-Produkte, die ihren spezifischen Anforderungen entsprechen.
Unternehmen sollten auch Zuverlässigkeit, Komplexität und Leistung – da einige Leistungsgeschwindigkeiten stark variieren können – mit anderen Middleware-Produkten vergleichen.
Die Entwicklung der Middleware
Von 2000 bis etwa 2010 war Middleware-Software gleichbedeutend mit Anwendungsservern. Da Cloud Computing jedoch immer beliebter wird und Microservices monolithischere Systeme auf der Grundlage einer serviceorientierten Architektur (SOA) ersetzen, hat sich der Begriff Middleware laufend ausgeweitet.
Statt komplette Anwendungen auf Middleware-Servern bereitzustellen, beginnen Entwickler damit, kleinere, auf Microservices basierende Anwendungen zu erstellen. Sie verpacken dann diese Microservices mit allen erforderlichen Informationen, um sich mit den benötigten Backend-Ressourcen zu verbinden und die Anwendungen in einem leichtgewichtigen, containerbasierten System wie Docker bereitzustellen. Der Container wird dann über einen Dienst in der Cloud bereitgestellt.
In diesem Fall wäre die Middleware die Kombination aus dem im Container gehosteten Microservice und der Cloud-Computing-Infrastruktur, auf der der Container läuft. Diese Anordnung ist derzeit der wichtigste Trendrichtung bei Middleware.