Sidecar Proxy
Ein Sidecar-Proxy ist ein Element beim Anwendungsdesign, mit dem bestimmte Funktionen, wie zum Beispiel dienstübergreifende Kommunikation, Überwachung und Sicherheit, von der Hauptarchitektur abstrahiert werden, um das Verfolgen und Warten der Anwendung als Ganzes zu erleichtern.
Sidecar bedeutet Seitenwagen. Und so, wie ein Seitenwagen an ein Motorrad angeschlossen ist, wird ein Sidecar Proxy an eine übergeordnete Anwendung angeschlossen, um ihre Funktionen zu erweitern oder neue hinzuzufügen. Seitenwagen-Proxys werden in der Regel innerhalb der Service-Mesh-Control-Plane (CP), Microservices oder Containern verwendet.
Ein Service-Mesh wird in eine Datenebene (Data Plane, DP) und eine Kontrollebene (CP Control Plane) unterteilt. Die DP des Service Mesh ist für die Kommunikation von Diensten innerhalb des Meshs verantwortlich und kann über eine separate, dedizierte Infrastrukturschicht Funktionen wie Load Balancing, Verschlüsselung und Fehlerbehebung bereitstellen. An die CP ist ein Sidecar-Proxy angeschlossen, der jeden Sidecar in Bezug auf den ihm zugeordneten Dienst verwaltet und konfiguriert. Der gesamte Netzwerkverkehr eines Services wird über den Sidecar-Proxy gefiltert, der als eigene Infrastrukturebene fungiert.
In einem Container ist der Sidecar-Proxy mit jedem Anwendungscontainer, jeder virtuellen Maschine (VM) oder jedem Orchestrierungs-Pod verbunden. Wenn eine Organisation zum Beispiel eine Anwendung entwickelt, die mehrere Container verwendet, kann ein Sidecar-Proxy an jeden einzelnen Container angehängt werden, um beliebige Sicherheitsprozesse zu abstrahieren. Dadurch ist es dann einfacher, auf die Sicherheitsfunktionen zuzugreifen oder sie zu ändern, ohne den Rest der Anwendung zu ändern. Wenn eine Organisation Kubernetes zur Überwachung containerisierter Anwendungen verwendet, können die Container in einem Pod gruppiert werden, der einen gemeinsamen Namensraum (Namespace) verwendet, und dann kann sie einen separaten Sidecar-Container verwenden, um zu visualisieren, wie jeder Container im selben Pod arbeitet.
Sidecars ermöglichen es Entwicklern, ihre Anwendungen auf einen Blick zu überwachen und zu warten, indem Funktionen von einem Microservice oder Container abgetrennt werden. Zu den Vorteilen des Sidecar-Modells gehören auch die geringere Komplexität des Codes, minimale Code-Duplizierung und die lose Kopplung zwischen einzelnen Anwendungseinheiten.