Cloud-Ressourcen stundenweise mieten
Automatische Skalierung
von Tam Hanna - 17.12.2018
Automatismus: Die Grafik stellt das Zusammenspiel von Load Balancer, Cloudwatch-Instanz und Skalierer in AWS dar.
Die klassische Architektur für einen Load Balancer ist - um einen Server-Pool herum - ein Dreieck aus einem Elastic Load Balancer, einer Cloudwatch-Instanz und einem automatischen Skalierer. Zur Erklärung: Der Balancer hat die Aufgabe, eingehende Anfragen von Kunden auf die im Server-Pool befindlichen Arbeiter (Worker-Prozesse) zu verteilen. Die Interaktion zwischen Endgerät und Server erfolgt also ausschließlich im Arbeiter und im Balancer. Cloudwatch hat die Aufgabe, Limits vorzuhalten und die Autoscaling-Politik vorzugeben. Der Autoscaler passt die Größe des auch als Auto Scaling Group bezeichneten Server-Pools dynamisch gemäß den Richtlinien des Entwicklers an, um sicherzustellen, dass immer ausreichend Kapazität zur Verfügung steht. Dabei empfiehlt es sich, Instanzen nicht auf Volldampf zu fahren. Das Hochfahren weiterer Elemente nimmt mitunter etwas Zeit in Anspruch, was zu schlechter User Experience führen kann.
Schon an dieser Stelle sei gewarnt: Load Balancer behalten die Interessen von Amazon sehr offensichtlich im Hinterkopf. Sie dürfen nicht davon ausgehen, dass ein Load Balancer nicht mehr benötigte EC2-Instanzen beendet. Es gibt Konfigurationen, in denen eine einmal gestartete Maschine bis zum Sankt-Nimmerleins-Tag weiterlaufen darf.
Geteilte Verantwortung: Der Kunde ist bei AWS für viele DInge selbst zuständig.
Der wichtigste Vorteil des Oldies ist, dass er das - formal 2013 eingestellte - EC2-Classic-Vernetzungssystem unterstützt. Trotz der Einstellung ist es nämlich möglich, bestehende Applikationen weiterhin zu warten. Wenn Sie in einer derartigen Infrastruktur Balancing durchführen wollen, müssen Sie auf Classic setzen. Sein modernerer, also in der VPC-Umgebung arbeitender Kollege namens Network Load Balancer, beschränkt sich auf TCP, bietet dafür aber fortgeschrittene Funktionen. So ist er in der Lage, auf einer Instanz mehrere Ports als voneinander unabhängige Ziele zu betrachten und voneinander unabhängig mit Sessions zu belagern. Das ist etwa dann sinnvoll, wenn man sehr alte Server-Software verwendet, die einen einzigen Kern auslasten kann - Single-Core-VMs sind nicht kosteneffektiv.
Ein weiterer Vorteil des Network Load Balancers ist seine Leistungskraft. Der Dienst bewältigt laut Amazon mehrere Millionen Anfragen pro Sekunde ohne Probleme.
Während der Network Load Balancer unter einer statischen API ansprechbar ist, ist der fortgeschrittene Application Load Balancer nur über einen DNS-String erreichbar. Der wichtigste Unterschied zu seinen Kollegen ist, dass er ausschließlich HTTP und HTTPS unterstützt. Es handelt sich also um einen auf OSI-Layer sieben arbeitenden Lastverteiler.
Wer einen solchen Balancer einsetzt, wird von Amazon automatisch als Kunde mit besonderen Zuverlässigkeitsansprüchen eingeschätzt. Daraus folgt, dass der Balancer die Verwendung von mehr als einer AZ voraussetzt. Dies kann im Fall von Server-Ausfällen Gold wert sein.
Zwei weitere interessante Features betreffen die Möglichkeit zur Inspektion des Contents. Die Zuweisung zwischen Balancer und dem für die Ausführung verantwortlichen Element kann sowohl anhand von Header-Feldern als auch anhand von Static Sessions durchgeführt werden. Der Load Balancer merkt sich beim erstmaligen Auftauchen des Clients, wo dieser wohnt. Spätere Anfragen werden immer an dasselbe Gerät weitergeleitet, was das Recyceln von in lokalen Caches befindlichen Informationen erleichtert.
In der Praxis entscheidet man zwischen Classic und Application Load Balancer, der NLB findet sich in der Literatur nur selten. Der Weg zur Unterscheidung ist einfach: Wenn Ihre Algorithmen mit IP-Adressen und TCP-Ports auskommen, so reicht der im Betrieb preiswertere Classic aus. Wollen Sie stattdessen in die HTTP-Informationen einsteigen, um detailliert zu makeln, so müssen Sie den ALB loslassen.
Internet of Things
Preisbeispiel: Das verlangt Amazon in seiner Region Frankfurt.
Das unter AWS IoT Core laufende Produkt arbeitet im Großen und Ganzen mit dem MQTT-Protokoll, erlegt Entwicklern allerdings Schwierigkeiten auf. So wird der QoS-Level 2 prinzipiell nicht unterstützt, was bei Hochverfügbarkeitsanwendungen für Probleme sorgt. Auf der Haben-Seite steht eine als Rules Engine bezeichnete Komponente: Eingehende Informationen werden im ersten Schritt analysiert, mit diesen Daten lässt sich eine Lambda-Funktion oder Ähnliches anstoßen.
Das arbeitsintensive Makeln zwischen eingehenden Sensordaten und den sie bearbeitenden Aktoren sollen dabei Amazons Cloud-Dienste übernehmen - zu nicht unerheblichen Kosten. Deshalb hält sich Amazon auch nicht aus dem Geschäft mit Device Shadows und Provisionierung heraus.
Ein interessanter Aspekt, der zum Abschluss unseres Streifzugs durch AWS nicht unerwähnt bleiben soll, betrifft Free RTOS. Der einst durchaus teure Industriestandard steht seit der Übernahme durch Amazon komplett kostenlos zur Verfügung – und Amazon ist damit einer der wenigen Anbieter von IoT-Cloud-Diensten mit einem eigenen Echtzeit-Betriebssystem.