Hat man wechselnde Lastzustände für seine Applikation und möchte Geld einsparen, kann man seine Applikation und die Infrastruktur so designen, dass diese automatisch skaliert. Hat man verteilte Systeme, benötigt man auch eine Komponente, die Anfragen auf die unterschiedlichen Endpunkte verteilt. In diesem Kapitel lernst du etwas über beide Komponenten und wie man Autoscaling Anwendungen aufbaut.
Ziele
- Du kannst regionale und globale AWS Architektur erklären. Wie wird Redundanz sichergestellt?
- Was ist der Unterschied zwischen einem ALB und NLB? Wann setzt man was ein?
- Wie unterscheidet sich das Verhalten von Security Groups an ALB und NLB?
- Erkläre den Nutzen einer Launch Configuration/eines Launch Templates. Was sind Unterschiede der beiden?
- Was sind die 3 Kernparameter einer Auto Scaling Group?
- Welche Scaling Policies gibt es und wie nehmen diese auf die Hauptparameter der ASG Einfluss?
- Erkläre Instance purchase options und allocation strategies für ASGs
- Eine ASG skaliert abhängig von der CPU Auslastung, skaliert aber immer maximal 1 Instanz dazu und das nur alle 5 Minuten. Jeden Tag um 20 Uhr steigt der Traffic der Applikation auf den EC2 Instanzen stark an und es kommt zu Fehlern weil die Last zu hoch ist. Was kann man konfigurieren um das Problem zu lösen?
- Für was dienen Lifecycyle hooks? Erläutere ein Beispiel.
- Was ist bezüglich persistenter Daten beim Autoscaling zu beachten?
- Was passiert, wenn man eine EC2 Instanz stoppt, die in einer Autoscaling Group ist?
- Erläutere wie man alle Instanzen in einer ASG auf ein anderes AMI aktualisiert ohne eine Downtime zu verursachen
- Du weißt, wie du eine automatisch skalierende Applikation, die eine HTTP API bereitstellt, mit festen IPs erreichbar machst.
- Was ist ein Gateway Loadbalancer?
Inhalte
- Kapitel HA & SCALING Show archive.org snapshot aus dem cantrill.io Kurs
- Amazon ALB Show archive.org snapshot
- Amazon NLB Show archive.org snapshot
- Amazon EC2 Auto Scaling Show archive.org snapshot
Es ist auch wichtig zu verstehen, wie eine Applikation sich verhalten muss, damit diese horizontal skaliert werden kann. Hält die Applikation selbst keinen State, kann diese einfach horizontal skaliert werden. Was aber wenn die ausgerollte Komponente selbst Daten hält (z.B. eine selbst entwickelte Datenbank)? Dann ist sicherzustellen, dass diese Daten korrekt repliziert werden. Überlege dir für welche Einsatzzwecke automatisches Skalieren nützlich ist und in welchen Situationen es eher nicht geeignet ist.
Aufgaben
- Folge dem Kurs Kapitel
- Wirf einen Blick in die Dokumentation um offene Fragen zu beantworten
- Zeige deinem Mentor was du im Zuge des Kurses auf AWS gebaut hast