Routing macht’s möglich

Autor/Redakteur: Constantin Gonzalez, Principal Solutions Architekt bei AWS/gg

Die Zeiten, in denen eine einzige Applikation alle Funktionen abbildete, neigen sich dem Ende zu: Microservices treten in die Fußstapfen monolithischer IT-Strukturen und umfassen eine Gesamtlösung, bestehend aus kleinen, modularen Prozessen. Das neue Architekturmuster stößt besonders im E-Commerce auf positive Resonanz.

Microservices kommen immer häufiger in modernen und fortschrittlichen Entwicklungsmethoden zum Einsatz. Ein Grund dafür ist, dass sich einzelne Komponenten von Microservices immer wieder verändern und auf den aktuellen Stand bringen lassen. In kleinen virtualisierten Umgebungen, sogenannten Docker-Containern, laufen sie außerdem sehr leistungsfähig und dabei sicher voneinander getrennt.

Load Balancing mit Microservices

Microservices, die per Load Balancing auf mehrere Systeme verteilt werden, waren allerdings lange Zeit aufwendig zu betreiben. Außerdem erforderte die Ausführung tiefgreifendes IT-Know-how. Administratoren mussten sich deshalb häufig mit komplexen Lösungen der Marke Eigenbau auseinandersetzen.

Der Application Load Balancer (ALB) von Amazon Web Services (AWS) schafft diese Probleme aus der Welt: Nach der Analyse der URL trifft ALB eine Entscheidung darüber, wohin der Traffic geschickt wird. Dazu gehören EC2-Instanzen in unterschiedlichen Availability Zones. Dieses Verfahren ist besonders bei Web-Applikationen effizient, die in verschiedene Teile segmentiert sind. So kann sich zum Beispiel ein Teil ausschließlich um die User-Verwaltung kümmern und somit alle URLs bearbeiten, die mit /user beginnen.

„Listener“ ist eine weitere Komponente des ALB. Sie ist für die Assets verantwortlich. Der „Listener“ prüft die Verbindungsanfragen anhand des konfigurierten Protokolls und leitet Anfragen an eine oder mehrere Zielgruppen weiter. Diese Anfragen basieren auf den definierten Regeln des Kunden. Jede Regel gibt eine Zielgruppe, Kondition und Priorität an. Ist die Bedingung erfüllt, wird der Verkehr an die entsprechende Zielgruppe weitergeleitet. Der „Listener“ liefert somit den Content aus. Jede Zielgruppe leitet Anfragen über die von ihnen angegebene Protokoll- und Portnummer an ein oder mehrere registrierte Ziele (zum Beispiel EC2-Instanzen) weiter. Diese können ein Ziel mit mehreren Zielgruppen registrieren und sogenannte Health-Checks pro Zielgruppe konfigurieren.

Segmentierung nach praktischen Erwägungen

Der ALB verteilt also den Traffic, basierend auf der Applikationsarchitektur. Entwickler sind damit in der Lage, eine Segmentierung von Microservices nach praktischen Erwägungen vorzunehmen. Im Falle eines Webshops bedeutet das konkret, dass sich seine drei Services „Betrachten und Durchsuchen des Produktkatalogs“, „Verwalten von Bestellungen“ und Registrierung als neuer Benutzer“ in drei verschiedene Microservices unterteilen lassen. Verschiedene URLs (beispielsweise www.shop.de/account, www.shop.de/bestellungen und www.shop.de/register) segmentieren somit klar das Online-Angebot. Das bedeutet, dass die ALB den Betrieb von getrennten Infrastrukturen unterstützt – die Infrastrukturen können aber von einem gemeinsamen Load Balancer aus angesprochen werden. Genau hier befindet sich der entscheidende Unterschied zwischen der AWS-Lösung und konventionellen Load Balancern.