Was ist ein Service-Netz?

Ein Service-Netz ist eine Software-Ebene, die die gesamte Kommunikation zwischen Services in Anwendungen übernimmt. Diese Ebene besteht aus containerisierten Microservices. Mit der Skalierung von Anwendungen und der zunehmenden Anzahl von Microservices wird es immer schwieriger, die Leistung der Services zu überwachen. Um Verbindungen zwischen Services zu verwalten, bietet ein Service-Netz neue Funktionen wie Überwachung, Protokollierung, Nachverfolgung und Datenverkehrskontrolle. Dieser ist unabhängig vom Code der einzelnen Services, so dass er über Netzwerkgrenzen hinweg und mit mehreren Service-Management-Systemen arbeiten kann.

Warum wird ein Service-Netz benötigt?

In einer modernen Anwendungsarchitektur können Sie Anwendungen als Sammlung kleiner, unabhängig voneinander bereitstellbarer Microservices erstellen. Verschiedene Teams können individuelle Microservices erstellen und ihre Programmiersprachen und Tools auswählen. Allerdings müssen die Microservices miteinander kommunizieren, damit der Anwendungscode ordnungsgemäß funktioniert.

Die Anwendungsleistung hängt von der Geschwindigkeit und Ausfallsicherheit der Kommunikation zwischen Services ab. Die Entwickler müssen die Anwendung serviceübergreifend überwachen und optimieren, aber aufgrund der verteilten Natur des Systems ist es schwierig, einen Überblick zu erhalten. Je größer die Anwendungen, desto komplexer wird die Verwaltung der Kommunikation.

Es gibt zwei Hauptgründe für die Einführung von Service-Netzen, die wir im Folgenden näher erläutern.

Weitere Informationen über Microservices »

Beobachtbarkeit auf Serviceebene

Da immer mehr Workloads und Services bereitgestellt werden, wird es für Entwickler schwierig zu verstehen, wie alles zusammenwirkt. Serviceteams möchten beispielsweise wissen, welche nach- und vorgelagerte Abhängigkeiten sie haben. Sie wünschen sich einen besseren Einblick in die Art und Weise, wie Services und Workloads auf der Anwendungsebene kommunizieren.

Steuerung auf Serviceebene

Administratoren möchten steuern, welche Services miteinander kommunizieren und welche Aktionen diese ausführen. Sie wünschen sich eine differenzierte Kontrolle und Steuerung des Verhaltens, der Richtlinien und der Interaktionen von Services innerhalb einer Microservices-Architektur. Die Durchsetzung von Sicherheitsrichtlinien ist für die Einhaltung der Compliance von entscheidender Bedeutung.

Was sind die Vorteile eines Service-Netzes?

Ein Service-Netz stellt eine zentralisierte, dedizierte Infrastrukturebene bereit, die die Feinheiten der Service-zu-Service Kommunikation innerhalb einer verteilten Anwendung übernimmt. Als Nächstes nennen wir einige Vorteile des Service-Netzes.

Service-Erkennung

Service-Netze bieten eine automatische Erkennung von Services, wodurch die operative Belastung durch die Verwaltung von Service-Endpunkten reduziert wird. Diese verwenden eine Service-Registrierung, um alle Services innerhalb des Service-Netzes dynamisch zu erkennen und nachzuverfolgen. Services können einander unabhängig von ihrem Standort oder der zugrunde liegenden Infrastruktur nahtlos finden und miteinander kommunizieren. So können Sie schnell skalieren, indem Sie bei Bedarf neue Services bereitstellen.

Lastenverteilung

Service Netze verwenden verschiedene Algorithmen – z. B. Round-Robin, Least Connections oder Weighted Load Balancing – um Anfragen intelligent auf mehrere Service-Instances zu verteilen. Load Balancing verbessert die Ressourcennutzung und sorgt für hohe Verfügbarkeit und Skalierbarkeit. Dadurch können Sie die Leistung optimieren und Engpässe in der Netzwerkkommunikation verhindern.

Datenverkehrsmanagement

Service-Netze bieten erweiterte Funktionen zur Datenverkehrsverwaltung, die eine differenzierte Steuerung des Anforderungsroutings und des Datenverkehrsverhaltens ermöglichen. Es folgen einige Beispiele.

Aufteilung des Datenverkehrs

Sie können den eingehenden Datenverkehr auf verschiedene Serviceversionen oder -konfigurationen aufteilen. Das Netz leitet einen Teil des Datenverkehrs auf die aktualisierte Version um, so dass die Änderungen kontrolliert und schrittweise eingeführt werden können. Dadurch wird ein reibungsloser Übergang gewährleistet und die Auswirkungen von Änderungen minimiert.

Spiegelung anfordern

Sie können den Datenverkehr zur Analyse eines Test- oder Überwachungsservices duplizieren, ohne den primären Ablauf der Anfrage zu beeinträchtigen. Durch das Spiegeln von Anfragen erhalten Sie Einblicke in die Art und Weise, wie der Service bestimmte Anfragen bearbeitet, ohne den Produktionsbetrieb zu beeinträchtigen.

Canary-Bereitstellungen

Sie können eine kleine Teilmenge der Benutzer oder des Datenverkehrs auf eine neue Service-Version umleiten, während die meisten Benutzer weiterhin die vorhandene stabile Version verwenden. Bei begrenzter Verfügbarkeit können Sie mit dem Verhalten und der Leistung der neuen Version in einer realen Umgebung experimentieren.

Sicherheit

Service Netze bieten sichere Kommunikationsfunktionen wie gegenseitige TLS (mTLS)-Verschlüsselung, Authentifizierung und Autorisierung. Gegenseitiges TLS ermöglicht die Identitätsüberprüfung bei der Kommunikation von Service zu Service. Es trägt dazu bei, die Vertraulichkeit und Integrität der Daten zu gewährleisten, indem es den Datenverkehr verschlüsselt. Sie können auch Autorisierungsrichtlinien durchsetzen, um zu steuern, welche Services auf bestimmte Endpunkte zugreifen oder bestimmte Aktionen ausführen.

Überwachung

Service-Netze bieten umfassende Überwachungs- und Beobachtungsfunktionen, um Einblicke in den Zustand, die Leistung und das Verhalten Ihrer Services zu erhalten. Darüber hinaus unterstützt die Überwachung die Fehlerbehebung und Leistungsoptimierung. Nachfolgend finden Sie Beispiele für Überwachungsfunktionen, die Sie mithilfe dieser Funktion verwenden können:

  • Erfassung von Metriken wie Latenz, Fehlerraten und Ressourcennutzung zur Analyse der gesamten Systemleistung
  • Durchführung einer verteilten Nachverfolgung, um den vollständigen Pfad und das Timing von Anfragen über mehrere Services hinweg zu sehen
  • Erfassung von Serviceereignissen in Protokollen zu Prüfungs-, Debugging- und Compliance-Zwecken

Wie funktioniert ein Service-Netz?

Ein Service-Netz entfernt die Logik, die die Service-zu-Service-Kommunikation regelt, von einzelnen Service und abstrahiert die Kommunikation auf die eigene Infrastrukturebene. Es verwendet mehrere Netzwerk-Proxys, um die Kommunikation zwischen Services weiterzuleiten und zu verfolgen.

Ein Proxy fungiert als zwischengeschaltetes Gateway zwischen dem Netzwerk Ihres Unternehmens und dem Microservice. Der gesamte Datenverkehr zum und vom Service wird über den Proxy-Server geleitet. Einzelne Proxys werden manchmal als Sidecars bezeichnet, da sie separat ausgeführt werden, sich aber logischerweise neben dem jeweiligen Service befinden. Zusammengenommen bilden die Proxys die Service-Netz-Ebene. 

 

Die Service-Netz-Architektur besteht aus zwei Hauptkomponenten – der Steuerebene und der Datenebene.

Datenebene

Die Datenebene ist die Datenverarbeitungskomponente eines Service-Netzes. Es beinhaltet alle Sidecar-Proxys und deren Funktionen. Wenn ein Service mit einem anderen Service kommunizieren möchte, führt der Sidecar-Proxy folgende Aktionen durch:

  1. Der Sidecar fängt die Anfrage ab
  2. Die Anfrage wird in einer separaten Netzwerkverbindung aufbewahrt
  3. Es stellt einen sicheren und verschlüsselten Kanal zwischen den Quell- und Ziel-Proxys her

Die Sidecar-Proxys verarbeiten die Nachrichtenübermittlung auf niedriger Ebene zwischen Services. Sie implementieren außerdem Funktionen wie Leitungsunterbrechung und Anforderungswiederholungen, um die Ausfallsicherheit zu verbessern und eine Verschlechterung des Services zu verhindern. Service-Netz-Funktionen, wie Lastausgleich, Serviceerkennung und Weiterleitung von Datenverkehr, werden auf der Datenebene implementiert.

Steuerebene

Die Steuerebene dient als zentrale Verwaltungs- und Konfigurationsebene des Service-Netzes.

Mit der Steuerebene können Administratoren die Services innerhalb des Netzes definieren und konfigurieren. Sie können beispielsweise Parameter wie Service-Endpunkte, Weiterleitungsregeln, Lastausgleichsrichtlinien und Sicherheitseinstellungen festlegen. Sobald die Konfiguration festgelegt ist, verteilt die Steuerebene die erforderlichen Informationen an die Datenebene des Service-Netzes.

Die Proxys entscheiden anhand der Konfigurationsinformationen, wie sie mit eingehenden Anfragen umgehen. Außerdem können sie Konfigurationsänderungen empfangen und ihr Verhalten dynamisch anpassen. Sie können Änderungen an der Service-Netz-Konfiguration in Echtzeit vornehmen, ohne dass der Service neu gestartet oder unterbrochen werden muss.

Service-Netz-Implementierungen umfassen in der Regel die folgenden Funktionen auf der Steuerebene:

  • Service-Register, das alle Services innerhalb des Netzes nachverfolgt
  • Automatische Erkennung neuer Services und Entfernung inaktiver Services
  • Erfassung und Aggregation von Telemetriedaten wie Metriken, Protokollen und verteilten Ablaufverfolgungsinformationen

 

Was ist Istio?

Istio ist ein Open-Source-Service-Netz-Projekt, das hauptsächlich für die Zusammenarbeit mit Kubernetes entwickelt wurde. Kubernetes ist eine Open-Source-Container-Orchestrierungsplattform, die für die Bereitstellung und Verwaltung von Containeranwendungen im großen Maßstab verwendet wird.

Die Komponenten der Steuerebene von Istio werden selbst als Kubernetes-Workloads ausgeführt. Es verwendet einen Kubernetes-Pod – einen eng gekoppelten Satz von Containern, die eine IP-Adresse teilen – als Grundlage für das Sidecar-Proxy-Design.

Der Layer-7-Proxy von Istio wird als weiterer Container im selben Netzwerkkontext wie der Hauptservice ausgeführt. Von dieser Position aus kann es den gesamten Netzwerkverkehr, der durch den Pod fließt, abfangen, prüfen und manipulieren. Dennoch bedarf es keiner Änderung am Primär-Container und es ist nicht einmal bekannt, dass dies geschieht.

Weitere Informationen über Kubernetes »

Was sind die Herausforderungen bei der Implementierung von Open-Source-Service-Netze?

Nachfolgend finden Sie einige gängige Service-Netz-Herausforderungen, die Open-Source-Plattformen wie Istio, Linkerd und Consul zugeordnet sind.

Komplexität

Service-Netze führen zusätzliche Infrastrukturkomponenten, Konfigurationsanforderungen und Überlegungen zur Bereitstellung ein. Sie verfügen über eine hohe Lernkurve, die von Entwicklern und Betreibern erfordert, sich Fachwissen im Umgang mit der spezifischen Service-Netz-Implementierung anzueignen. Die Schulung von Teams erfordert Zeit und Ressourcen. Ein Unternehmen muss sicherstellen, dass die Teams über das notwendige Wissen verfügen, um die Feinheiten der Service-Netz-Architektur zu verstehen und sie effektiv zu konfigurieren.

Operative Gemeinkosten

Service-Netze verursachen zusätzlichen Aufwand beim Bereitstellen, Verwalten und Überwachen der Datenebenen-Proxys und der Komponenten der Steuerebene. Sie müssen beispielsweise Folgendes tun:

  • Eine hohe Verfügbarkeit und Skalierbarkeit der Service-Netz-Infrastruktur sicherstellen
  • Den Betriebszustand und die Leistung der Proxys überwachen
  • Aktualisierungen und Kompatibilitätsprobleme behandeln

Es ist wichtig, das Service-Netz sorgfältig zu entwerfen und zu konfigurieren, um die Auswirkungen auf die Leistung des Gesamtsystems zu minimieren.

Herausforderungen bei der Integration

Ein Service-Netz muss sich nahtlos in die vorhandene Infrastruktur integrieren lassen, um die erforderlichen Funktionen zu erfüllen. Dazu gehören Container-Orchestrierungsplattformen, Netzwerklösungen und andere Tools im Technologie-Stack.

Es kann schwierig sein, in komplexen und vielfältigen Umgebungen die Kompatibilität und nahtlose Integration mit anderen Komponenten sicherzustellen. Fortlaufende Planung und Tests sind erforderlich, um Ihre APIs, Konfigurationsformate und Abhängigkeiten zu ändern. Dasselbe gilt, wenn Sie irgendwo im Stack eine Aktualisierung auf neue Versionen durchführen müssen.

Wie kann AWS Ihre Service-Netzanforderungen unterstützen?

AWS App Mesh ist ein vollständig verwaltetes und hochverfügbares Service-Netz von Amazon Web Service (AWS). App Mesh vereinfacht die Überwachung, Kontrolle und Fehlersuche bei der Kommunikation zwischen Services.

App Mesh verwendet Envoy, einen Open-Source-Servicenetz-Proxy, der zusammen mit Ihren Microservice-Containern bereitgestellt wird. Sie können es mithilfe von Microservice-Containern verwenden, die von Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS), AWS Fargate und Kubernetes in AWS verwaltet werden. Sie können es auch mit Services in Amazon Elastic Compute Cloud (Amazon EC2) nutzen.

Beginnen Sie mit Service-Netz in AWS, indem Sie noch heute ein Konto erstellen.

Weitere Schritte in AWS

Für ein kostenloses Konto registrieren

Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.

Registrieren 
Mit der Entwicklung in der Konsole starten

Starten Sie mit der Entwicklung in der AWS-Managementkonsole.

Anmelden