Powered by AWS App Runner

AWS APP RUNNER IM TEST: SCHNELLSTART FÜR WEB-ANWENDUNGEN

Dennis Kögel, AWS Certified Solutions Architect, 24.06.2021

Ziel des neuen AWS App Runner: das Aufsetzen und professionelle Betreiben von Web-Anwendungen möglichst schnell und einfach zu machen. Dazu fasst der Dienst die Funktionalität mehrerer AWS-Infrastruktur- und -Entwicklungs-Dienste zusammen. Auf diese Weise macht App Runner diese Services beinahe unsichtbar und vereint sie mit einem attraktiven neuen Abrechnungsmodell. Wir Cloud Mates haben AWS App Runner für unseren Blog getestet.

WEB-ANWENDUNGEN MIT AWS APP RUNNER – EINFACH, ABER AUF PROFESSIONELLEM NIVEAU

Für Unternehmen ist das wichtigste Merkmal von AWS App Runner eine sehr stark vereinfachte Bereitstellung von Web-Anwendungen. Der Dienst bildet nämlich den gesamten Lebenszyklus einer Web-Anwendung in AWS ab: vom Quellcode über die ausfallfreie Bereitstellung bis hin zum produktionsreifen Betrieb mit automatischer Lastverteilung. Auch die Skalierung und Redundanz über mehrere Rechenzentren (Availability Zones) hinweg leistet der Dienst.

All das stellt AWS App Runner nach dem Ausfüllen einer einzelnen Eingabemaske bereit. Zeitaufwand? Vielleicht fünf Minuten. Und das auch ohne Vorkenntnisse in all den AWS-Diensten, die ansonsten für die Bereitstellung von Web-Anwendungen nötig sind: Netzwerk (VPC), Elastic Loadbalancing, SSL/TLS-Konfiguration bzw. die Zertifikatsverwaltung (Certificate Manager), Sicherheitsgruppen, Autoscaling, sowie die eigentlichen Container-Dienste, beispielsweise Elastic Beanstalk oder Elastic Container Service (ECS) oder Elastic Kubernetes Service (EKS).

ANWENDUNGSFALL: HIER ERGIBT AWS APP RUNNER SINN

Damit AWS App Runner einen solch breiten Funktionsumfang so spielend einfach zur Verfügung stellen kann, trifft der Service im Vorfeld sehr viele Annahmen. Außerdem konzentriert sich App Runner auf einen bestimmten Anwendungsfall: öffentlich erreichbare Web-Anwendungen, die zustandslos (stateless) sind und somit problemlos verteilt betrieben werden können. Also typische moderne Frontend- und Middleware-Anwendungen.

ALS CONTAINER – ODER DIREKT AUS DEM QUELLCODE?

Zum einen bietet AWS App Runner die Möglichkeit, mit vorhandenen Containern zu arbeiten. Diese können aus der Elastic Container Registry geladen werden. Alternativ – und hier grenzt die Anwendung schon fast an IT-Magie – kann der Service auch einfach mit dem Quellcode auf Github verknüpft werden. Aus dem Quellcode der Anwendung baut App Runner dann ganz automatisch einen Container.

Dazu greift es auf von AWS-verwaltete Laufzeiten (Managed Runtimes) zurück. Auf diese Weise kümmert sich AWS also auch um einen Basis-Container, der regelmäßig mit Sicherheitsaktualisierungen versorgt wird. Entwicklern nimmt AWS somit die lästige Pflege des Containers ab: Sie können sich voll auf die Anwendung konzentrieren. Diese Philosophie ist schon von AWS Lambda bekannt und dort sehr beliebt.

In beiden Modi kann eine automatische Bereitstellung aktiviert werden. Diese übernimmt die Aktualisierung des Containers bzw. des Quellcodes auf Github umgehend in den Betrieb. AWS App Runner bringt also eine einfache und trotzdem vollständige CI/CD-Pipeline mit.

AUTOMATISCHE SKALIERUNG UND REDUNDANZ

AWS App Runner kümmert sich automatisch um die Skalierung der Anwendung. Wenn sie den Service zum ersten Mal verwenden, sollten Anwender lediglich vorher festlegen, wie viele Web-Verbindungen eine Kopie der Anwendung (Container-Instanz) gleichzeitig bedienen kann.

Aufgrund der Anzahl an aktiven Verbindungen weiß AWS App Runner ganz genau, ob weitere Instanzen des Containers gestartet (oder gestoppt) werden sollten, um den jeweiligen Nutzerandrang zu bewältigen. Auf diese Weise hilft App Runner Unternehmen dabei, Lastspitzen automatisiert und kosteneffizient zu bewältigen. Wir empfehlen unseren Kunden, eine Maximalanzahl an Compute-Ressourcen zu definieren. Dies ist unter anderem als Kostendeckel für die Optimierung der AWS-Kosten hilfreich.

NEUES ABRECHNUNGSMODELL FÜR AWS APP RUNNER-KOSTEN

Ähnlich zu AWS Lambda wird bei App Runner ganz klassisch festgelegt, welche CPU- und Speicher-Ressourcen reserviert werden. Wie üblich ist CPU hier der Preistreiber, während der Speicher wenig Ausschlag gibt.

Neu ist jedoch, dass die Abrechnung der CPU-Ressourcen sekundengenau erfolgt. Und zwar nur dann, wenn die Anwendung auch genutzt wird! Solange also kein Benutzer auf App Runner zugreift, fallen auch keine CPU-Kosten an. AWS App Runner erfasst die Zugriffe automatisiert – und verlangsamt die Ausführung des Containers sehr stark, bis wieder Anfragen von Benutzern eintreffen.

Besonders für Test- und Entwicklungsumgebungen bietet dieses Abrechnungsmodell große Preisvorteile. Denn solche Anwendungen werden naturgemäß nicht rund um die Uhr benutzt, sollten häufig aber trotzdem dauerhaft erreichbar sein. Selbst für Produktionsumgebungen wirkt sich die sekundengenaue Abrechnung oftmals positiv aus.

PREISGESTALTUNG

Die Preise für die Region Frankfurt sind noch nicht bekannt. Anhand der Preise für die US-Regionen und Irland lässt sich jedoch erwarten, dass die Preise mit den bisherigen Container-Angeboten grob vergleichbar sind. Beispielsweise würde der kleinstmögliche Container $58,50 für einen ganzen Monat kosten (1 CPU zu $0,064/Stunde = $48/Monat und 2 GB RAM zu $0,007/GB/Stunde = $10,5/Monat).

Die Kosten für App Runner liegen also zunächst leicht über dem Preisniveau von AWS Fargate. Jedoch enthält der AWS App Runner-Preis auch das Elastic Loadbalancing. Allerdings sind die allerwenigsten Anwendungen wirklich zu jeder Sekunde eines Monats in Benutzung. Entsprechend sollte das CPU-Abrechnungsmodell die Kosten deutlich reduzieren. Zudem erfolgt die Abrechnung auch hier nach dem Pay-as-you-go-Modell. Durch gezieltes Abschalten (Pausieren) der Anwendung sind daher noch weitere Ersparnisse möglich.

Zusatzkosten entstehen lediglich bei der Nutzung von Github sowie für die automatischen Bereitstellungen. Beide Punkte bewegen sich jedoch in einem so geringen Rahmen, dass sie aufs Gesamtprojekt gesehen kaum zu Gewicht fallen.

DIE STÄRKEN VON AWS APP RUNNER

 Der Dienst bietet die vollständige Lebenszyklus vom Quellcode bis hin zum ausfallsicheren Produktionsbetrieb aus einer Hand.

 Zur Nutzung benötigt man wenig bis gar keine AWS-Vorkenntnisse.

 IT-Abteilungen können hohe Kosten sparen durch die Abrechnung auf Nutzungsbasis.

DIE SCHWÄCHEN VON AWS APP RUNNER

 Sehr geringe Flexibilität: viele fortgeschrittenere Konfigurationen sind nicht möglich.

 Funktioniert nicht mit Anwendungen, die lokale Zustandsdaten benötigen (beispielsweise Session-Daten im Speicher verwalten) oder Daten persistieren müssen.

WACHSTUMSSCHMERZEN

AWS App Runner ist noch sehr jung. Wie bei vielen neuen AWS-Diensten fehlen anfangs noch einige wichtige Punkte, die jedoch erfahrungsgemäß sehr schnell zur Verfügung stehen werden. Hier die interessantesten Auslassungen (Stand Juni 2021):

  • in der EU ist App Runner bisher nur in Irland verfügbar (Region eu-west-1);  Frankfurt (Region eu-central-1) folgt in Kürze
  • keine Unterstützung für VPC-Netzwerke (somit auch keine Anbindung an Datenbanken in privaten Netzen oder EFS möglich)
  • Laufzeiten (Managed Runtimes) bisher nur für Python und Node
  • keine Unterstützung für ECS Execute
  • automatische Skalierung bisher nur auf Basis der aktiven Verbindungen möglich (nicht CPU/RAM)
  • Container nur aus Elastic Container Registry (kein Docker Hub o. ä.)
  • Quellcode nur aus Github importierbar (nicht einmal AWS CodeCommit wird unterstützt)
  • keine Unterstützung von Web Application Firewall (WAF)
  • nur wenige Kombinationen CPU/RAM wählbar
  • keine Integration mit Passwort-Diensten (AWS Secrets Manager/Parameter Store)

 

All diese Punkte sind bereits auf der öffentlichen Roadmap von AWS App Runner erfasst und werden von dort aus in den nächsten Wochen und Monaten ergänzt werden.

DAS CLOUD MATES-FAZIT ZU AWS APP RUNNER

Der neue AWS-Dienst findet eine gute Balance zwischen nötiger Komplexität und sinnvollen Annahmen. Oft haben unsere Kunden neben ihren komplexen Kern-Anwendungen noch eine Handvoll kleinere Anwendungen sowie Entwicklungsumgebungen – und für viele von diesen ist AWS App Runner eine großartige Lösung, um Komplexität und Kosten einzusparen. Wir Cloud Mates sind sehr gespannt, wie sich App Runner in den nächsten Monaten entwickelt. Gerne unterstützen wir unsere Kunden im Rahmen unserer Professional Services bei der Einrichtung von AWS App Runner.