Getty Images/iStockphoto
Application Load Balancer und API-Gateway im Vergleich
Application Load Balancer und API-Gateways verwalten den Netzwerkverkehr. Lesen Sie, was sie unterscheidet und wie sie sich gemeinsam in einer modernen IT-Umgebung nutzen lassen.
Load Balancer und API-Gateways kümmern sich zwar beide um das Management des Netzwerkverkehrs, aber die Services funktionieren unterschiedlich. Das gilt auch für die Unterstützung von Unternehmensnetzwerken.
Die Diskussion um das Netzwerk-Traffic-Management sollte sich nicht ausschließlich auf Application Load Balancer versus API-Gateways konzentrieren: Unternehmen können beide zusammen nutzen, doch sie bedingen nicht einander. Ein API-Gateway verbindet beispielsweise Microservices, während Load Balancer mehrere Instanzen derselben Microservice-Komponenten bei der Skalierung umleiten (Scale out).
Ob man sich für einen Application Load Balancer (ALB) oder ein API-Gateway entscheidet, sollte von den Geschäftsanforderungen und dem Anwendungsfall abhängen. Wenn der Anwendungszugriff das Ziel ist, eignet sich in der Regel ein ALB am besten. Wenn eine API verwendet wird, um eine Clientanwendung mit Geschäftsdaten und Backend-Systemen zu verbinden, ist ein API-Gateway die passende Lösung.
Was ist ein Application Load Balancer?
Ein ALB verteilt den eingehenden Netzwerkverkehr auf zwei oder mehr Server. Ein Unternehmensnetzwerk muss ein hohes Traffic-Aufkommen bewältigen. Eine Anwendung, die auf einem einzigen Server läuft, verfügt daher möglicherweise nicht über genügend Netzwerk- oder Rechenleistung, um alle Traffic-Anfragen zu bedienen, die sie erhält.
Ein Unternehmen muss zwei oder mehr Anwendungsinstanzen gleichzeitig ausführen – oft auf zwei oder mehr physischen Servern. Dadurch erhalten Anwendungen die nötige Kapazität, um den gesamten Traffic zu managen. Redundanz trägt zur Hochverfügbarkeit (High Availability, HA) bei: Fällt ein Server aus, leitet der Load Balancer den Traffic an die verbleibenden Instanzen auf anderen Servern um. Für die Verteilung des eingehenden Netzwerkverkehrs auf die jeweiligen Server nutzen Load Balancer verschiedene Algorithmen:
- Round-Robin-Algorithmus: Verteilt den Traffic grundsätzlich gleichmäßig. Bei einer Konfiguration mit zwei Servern beispielsweise weist dieser Algorithmus jedem Server 50 Prozent des Traffics zu. Mit einem Weighted-Round-Robin-Algorithmus lässt sich die Verteilung des Datenverkehrs je nach Kapazität des Servers oder anderen Präferenzen ändern.
- Least-Connections-Algorithmus: Leitet den Traffic zu dem Server mit den wenigsten aktiven Verbindungen, was vorteilhaft ist, wenn die Server einer Umgebung unterschiedliche Kapazitäten besitzen.
- IP-Hash-Algorithmus: Bestimmt anhand des Ursprungs der Traffic-Anfrage, an welche Server der Netzwerkverkehr gesendet werden soll. Dieser Algorithmus eignet sich ideal für IT-Umgebungen, in denen sich die Server in verschiedenen geografischen Regionen befinden. Der Datenverkehr wird an den nächstgelegenen physischen Server geroutet, um die geringste Anwendungslatenz zu erreichen.
- Adaptiver Algorithmu: Ermöglicht eine dynamische Anpassung der Traffic-Verteilung je nach dem Status der einzelnen Server.
Ein Unternehmen kann einen Load Balancer als dediziertes physisches Gerät oder als Software bereitstellen, die auf virtuellen Servern läuft.
Funktionen von Application Load Balancern
Ein typischer Application Load Balancer kann eine breite Palette an Funktionen bieten, um den Datenverkehr zu managen und wichtige Vorgänge zu protokollieren. Zu den üblichen ALB-Funktionen gehören:
- Traffic-Unterstützung: Ein ALB kann Anwendungen unterstützen, die HTTP, HTTPS und HTTP/2 sowie WebSocket und Secure WebSocket nutzen. Achten Sie auf IPv4- und IPv6-Unterstützung.
- SSL-Terminierung: Normalerweise bleibt eine verschlüsselte Anfrage bis zum Ziel verschlüsselt. Aber die SSL-Terminierung ermöglicht es dem Load Balancer, die Anfrage zu entschlüsseln, bevor er den Traffic an das Ziel weiterleitet. Dies kann die Performance bei einigen Anwendungen verbessern.
- Sitzungsaffinität: Load Balancer sind traditionell agnostisch und routen beliebige Anfragen an jedes Ziel – sie unterstützen im Wesentlichen sogenanntes Stateless Application Behavior (zustandsloses Anwendungsverhalten). Die Sitzungsaffinität (auch als Sticky Sessions bezeichnet) kann Anfragen vom gleichen Client an das gleiche Ziel routen und ermöglicht auf diese Weise ein gewisses Maß an Stateful Behavior (zustandsbehaftetes Verhalten).
- Authentifizierungsunterstützung: Load Balancer unterstützen häufig Funktionen für das Zertifikatsmanagement, wie mehrere Zertifikate und Zertifikatsbindung (Bereitstellung eines SSL/TLS-Zertifikats für einen Load Balancer).
- Verfolgung von Anfragen: Tracing-Funktionen können aktiviert werden, um HTTP-Anfragen zwischen Clients und Zielen oder anderen Diensten im Netzwerk zu verfolgen. Dies kann bei der Sicherheit und beim Troubleshooting helfen.
- Zugriffsprotokolle: Alle an den Load Balancer gesendeten Anfragen lassen sich in Protokollen festhalten, um sie gegebenenfalls später zu analysieren und Fehler zu beheben.
- Gruppenunterstützung: Load Balancer können außerdem Gruppen unterstützen, um den zum und vom ALB zulässigen Traffic zu organisieren und einzuschränken. Solche Funktionen sind sowohl für die Netzwerksicherheit als auch für das Application Performance Management wichtig.
- Integration von Services: Load Balancer werden oft in andere Netzwerkdienste integriert – insbesondere Cloud-basierte Load Balancer. So bietet ein Load Balancer, der für Amazon Web Services (AWS) entwickelt wurde, in der Regel Integrationsmöglichkeiten für AWS-Dienste wie CloudWatch, CloudTrail, Web Application Firewall (WAF) und AWS Certificate Manager.
Application Load Balancer: Vor- und Nachteile
Load Balancer sind in Unternehmensanwendungen weitverbreitet und besitzen spezifische Stärken und Schwächen, die Anwendungsarchitekten und IT-Mitarbeiter berücksichtigen sollten. Die Vorteile eines ALBs liegen klar auf der Hand:
- Höhere Anwendungsverfügbarkeit: Eine einzelne Anwendungsinstanz stellt einen Single Point of Failure dar. Der Einsatz eines Load Balancers, der den Traffic auf mehrere Anwendungsinstanzen verteilt, trägt dazu bei, die generelle Anwendungsverfügbarkeit zu gewährleisten. Wenn ein Server ausfällt, kann der ALB den Datenverkehr zu anderen Serverinstanzen umleiten, so dass die Anwendung den Benutzern weiterhin zur Verfügung steht.
- Anwendungsskalierung: Ein Load Balancer ist für die Ausführung mehrerer Anwendungsinstanzen (Server) von entscheidender Bedeutung, Dies ist notwendig, wenn eine Anwendung über die Rechen- und Netzwerkkapazität einer einzelnen Instanz hinaus skaliert werden muss. Die Anwendungsskalierung erfordert fast immer den Einsatz von Load Balancern.
- Bessere Performance: Die Möglichkeit, den Datenverkehr zwischen mehreren Instanzen zu verteilen, trägt dazu bei, dass keiner der Server mit zu viel Traffic überlastet wird. Mehrere Instanzen mit Load Balancing können zu einer höheren Netzwerk- und Anwendungsleistung führen – was wiederum bessere Geschäftsergebnisse zur Folge hat.
- Bessere User Experience (UX): Benutzer erwarten von Unternehmensanwendungen Hochverfügbarkeit und schnelle Reaktionszeiten. Die Vorteile von Load Balancern in puncto Verfügbarkeit und Performance schlagen sich daher typischerweise in einer höheren Kundenzufriedenheit und einer besseren UX nieder.
- Verbesserte Sicherheit: Viele moderne Load Balancer umfassen Sicherheitsfunktionen und -protokolle, die schädliche Aktivitäten überwachen und abwehren, DDoS-Angriffe blockieren und leistungsstarke Funktionen zur Ver- und Entschlüsselung von Daten unterstützen, um Anwendungsdaten vor Verlust oder Diebstahl zu schützen.
Trotz der wichtigen Vorteile von Application Load Balancern gibt es einige Nachteile, die den Einsatz von ALBs in Unternehmensumgebungen erschweren können:
- Situationsspezifische Wahl des Protokolls: In Netzwerken kommt es auf die Entfernung an, und die in Load Balancern verfügbaren Algorithmen müssen sorgfältig ausgewählt werden. Zum Beispiel sind manche Algorithmen für lokale Anwendungen gedacht, geografische Entfernungen und Netzwerkstörungen können daher für einige ALB-Algorithmen eine Herausforderung sein.
- Single Point of Failure: Zwar soll der ALB die Verfügbarkeit und Leistung von Anwendungen verbessern, kann aber selbst zu einem Single Point of Failure werden. Anwendungsarchitekten, die eine Bereitstellungsumgebung für HA-Anwendungen planen, müssen unter Umständen ein HA-Load-Balancing-Schema implementieren, um zu verhindern, dass der Load Balancer einen Single Point of Failure darstellt. In ähnlicher Weise können einige Funktionen, etwa die Sitzungsaffinität, eine persistente Beziehung zwischen einem Client und einem Ziel bilden, die ihrerseits zu einem potenziellen Single Point of Failure wird.
- Neue Traffic-Anforderungen: Traffic ist nicht gleich Traffic, so dass Load Balancer möglicherweise nicht ohne Weiteres mit neuen, sich noch entwickelnden Arten von Datenverkehr zurechtkommen. Ein ALB, der für den gewöhnlichen Dateizugriff konzipiert ist, funktioniert etwa bei anspruchsvolleren Datentypen wie IoT-Gerätedaten womöglich weniger gut. In diesen Fällen müssen vorhandene Load Balancer eventuell aktualisiert oder durch neuere Modelle ersetzt werden, die für anspruchsvollere Traffic-Anforderungen ausgelegt sind.
- Die Auswirkungen der Algorithmen: Der ALB muss jeden ankommenden Traffic verarbeiten und Entscheidungen darüber treffen. Dies führt zu unvermeidlicher Latenz, die einen kleinen, aber signifikanten Einfluss auf die Reaktionsfähigkeit und Leistung der Anwendung haben kann. Die Wahl des Algorithmus und die Rechenleistung des Load Balancers selbst können die Anwendungs-Performance unbeabsichtigt reduzieren.
Was ist ein API-Gateway?
Ein API-Gateway ist ein Organisator und Übersetzer, der verschiedene (oft nicht miteinander verbundene) Softwareteile miteinander verbindet.
Ein API-Gateway verwaltet zwar auch den Netzwerkverkehr, allerdings auf eine andere Art und Weise. Die heutige Software basiert zunehmend auf APIs, um unterschiedliche Komponenten einer Anwendung zu integrieren und die Kommunikation dieser Komponenten zu ermöglichen. Ein API-Gateway nimmt API-Anfragen von einem Client entgegen – also der Software, die einen API-Aufruf durchführt – und ermittelt die Zielanwendungen oder -dienste, die für die Bearbeitung dieser Aufrufe erforderlich sind. API-Gateways verwalten zudem alle Übersetzungen und Protokolle zwischen den verschiedenen Programmen.
API-Gateways werden häufig mit dem Design und der Bereitstellung von Microservices-Anwendungen in Verbindung gebracht. Unternehmen entwickeln und erstellen moderne Anwendungen als eine Reihe von unabhängigen Services und nicht als eine einzige monolithische Applikation. Diese Services kommunizieren über APIs. Das API-Gateway stellt sicher, dass die Dienste und die vielen API-Aufrufe zwischen ihnen in einer gemeinsamen Bereitstellung ordnungsgemäß zusammenarbeiten.
Unternehmen implementieren Gateways als Service und stellen sie meistens als Softwareinstanz in einer VM bereit.
Funktionen von API-Gateways
Während eine API die Kommunikation erleichtert sowie Unternehmensanwendungen und -daten zugänglich macht, bietet ein API-Gateway mehrere umfassende Verwaltungs- und Gatekeeping-Funktionen:
- Funktionen für das Traffic-Management: Dies ist das Herzstück jedes API-Gateways, das ein wichtiger Gatekeeper sein kann, der zur Abwicklung der zahlreichen API-Clientanfragen benötigt wird. Zu den Funktionen für das Traffic-Management gehören Rate Limiting, Routing, Load Balancing, Fehlerbehandlung, Zustandsüberprüfungen von Anwendungen oder Diensten, Antworten auf Anfragen und sogar Unterstützung von A/B-Test oder anderen Testschemata.
- Sicherheitsfunktionen: Sicherheit ist äußerst wichtig, um zu gewährleisten, dass API-Anfragen von Clients kommen, die berechtigt sind, auf die von der API zur Verfügung gestellten Anwendungen, Services und Daten zuzugreifen. Das API-Gateway kümmert sich typischerweise um die Authentifizierung, Autorisierung, Verschlüsselung und Zugriffskontrollen – etwa die rollenbasierte Zugriffskontrolle –, die für die Sicherheit der Unternehmensdaten erforderlich sind. Einige API-Gateways können auch Funktionen wie eine WAF und den Schutz vor DoS-Angriffen enthalten.
- Monitoring-Funktionen: Da das API-Gateway alle API-Clientanfragen und -antworten erledigt, ist es der perfekte Ort, um Monitoring- und Observability-Funktionen zu implementieren. Dazu gehören neben der Verfolgung von Anfragen und Protokollierung von Aktivitäten auch die gewünschten Metriken und KPIs. Auf diese Weise erhalten Sie detaillierte Einblicke in das API-System des Unternehmens, seine Nutzung und eventuell auftretende Probleme.
- Skalierbarkeitsfunktionen: Ein API-Gateway wird im Allgemeinen als Service oder Anwendung implementiert. Die Möglichkeiten des Dienstes, den Traffic zu verwalten, sind jedoch begrenzt. Das API-Gateway sollte Skalierbarkeitsfunktionen unterstützen, die parallele Implementierungen für die Skalierbarkeit ermöglichen, um mehr Anfragen zu bearbeiten, sowie Redundanz für eine bessere Verfügbarkeit des API-Gateway-Dienstes.
API-Gateway: Vor- und Nachteile
Obwohl ein API-Gateway keine obligatorische Komponente eines API-Systems darstellt, wird ein modernes API-Gateway aufgrund der Vorteile, die es bietet, oft als unverzichtbar angesehen:
- Optimierter API-Einsatz: Anstatt einen API-Aufruf direkt an eine API zu übergeben, dient das API-Gateway als gemeinsamer Gatekeeper für den gesamten API-Austausch zwischen einer Clientanwendung und dem Unternehmen. Dieser zentrale Dienst bietet die Möglichkeit, den gesamten API-Traffic zu überwachen und zu kontrollieren sowie das Aufrufvolumen zu steuern, um eine zuverlässige und reaktionsschnelle Performance der Clientanwendung zu gewährleisten.
- Flexibler Betrieb: Das Vorhandensein eines gemeinsamen API-Gateways ermöglicht es Geschäfts- und IT-Führungskräften, maßgeschneiderte Richtlinien und Regelsätze festzulegen, die API-Zugriff, -Antwortverhalten und -Sicherheit in enger Abstimmung mit den Geschäfts- und Compliance-Vorgaben bestimmen können. Wenn sich die geschäftlichen Anforderungen ändern, lassen sich Richtlinien und Regelsätze an einem zentralen Punkt innerhalb des API-Gateways anpassen.
- Observability und Einblicke: Die von einem API-Gateway bereitgestellten Überwachungs- und Protokollierungsfunktionen sind entscheidend, um Einblicke in das Verhalten und die Performance der API und der beteiligten Backend-Systeme zu erhalten. Dies ist essenziell, um die Sicherheit zu gewährleisten, die Nutzung zur Rechtfertigung von Skalierungen oder Upgrades zu erfassen und Probleme zu beheben, sobald sie auftreten.
Während die Vorteile von API-Gateways ihre Rolle in modernen API-Systemen bestätigt haben, können diese Gateways auch einige Herausforderungen mit sich bringen, die IT-Verantwortliche und das Management berücksichtigen sollten:
- Single Point of Failure: Wie bei Load Balancern wird ein API-Gateway normalerweise als einzelner Service implementiert, der sich direkt im Traffic-Pfad zwischen Clients und lokalen Diensten befindet. Ein Fehler innerhalb des API-Gateways, zum Beispiel ein ausgefallener API-Gateway-Server oder -dienst, kann dazu führen, dass auf die gesamte API des Unternehmens kein Zugriff mehr möglich ist. Das führt zu gravierenden Beeinträchtigungen für das Unternehmen und die UX. Ein API-Gateway muss gegebenenfalls so geplant oder implementiert werden, dass ein HA-Betrieb und die Skalierbarkeit gewährleistet sind.
- Sicherheitsschwachstellen: Das API-Gateway ist ein zentraler und vertrauenswürdiger Service im Netzwerk des Unternehmens. Eine angemessene Absicherung des API-Gateways ist von entscheidender Bedeutung, da jede Kompromittierung potenziell alle Dienste oder API-Aufrufe beziehungsweise -Antworten beeinträchtigen kann. API-Gateways werden deshalb oft getrennt oder speziell für interne oder externe APIs implementiert.
- Komplexität:Obwohl API-Gateways keine extrem komplexen Dienste sind, können die für das Gateway implementierten Richtlinien und Regeln aufwendig sein, problematische Abhängigkeiten beinhalten und sich mit jeder API-Version ändern. Infolgedessen sollten das API-Gateway und die Richtlinienverwaltung ein integraler Bestandteil des Prozesses für das API-Lifecycle-Management sein. Gute API-Designstandards und -schemata können dazu beitragen, die Komplexität der Verwaltung von API-Gateways zu verringern.