PaaS Application Management in der AWS Cloud Bereitstellung mit AWS Elastic Beanstalk

Autor / Redakteur: Sascha Möllering * / Stephan Augsten

„Wir würden gerne unsere bestehenden Web-Anwendungen in AWS ausrollen und skalieren. Welche PaaS-Lösungen existieren für die Bereitstellung von Anwendungen in der AWS Cloud?“

Anbieter zum Thema

Elastic Beanstalk bietet eine Reihe von Möglichkeiten für das einfache Deployment von Anwendungen über die AWS Management Console.
Elastic Beanstalk bietet eine Reihe von Möglichkeiten für das einfache Deployment von Anwendungen über die AWS Management Console.
(Bild: AWS Germany GmbH)

Mit AWS Elastic Beanstalk bietet AWS eine PaaS-Lösung an, die das Ausrollen und Skalieren von Web-Anwendungen und Services, die mit Java, .NET, PHP, Node.js, Python, Ruby, Go, und Docker entwickelt worden sind, stark vereinfacht. Es reicht aus, eine Applikation in Elastic Beanstalk hochzuladen.

Der Service kümmert sich anschließend um Dinge wie Deployment, Bereitstellung von Computing-Kapazität, automatische Skalierung und Überwachung der Anwendung. Der Service nutzt dabei AWS-Standardbausteine, was bedeutet, dass diese auch nachträglich nach individuellen Wünschen konfiguriert werden können.

Deployment von Anwendungen in Elastic Beanstalk

Elastic Beanstalk bietet eine Reihe von Möglichkeiten für das einfache Deployment von Anwendungen durch die AWS Management Console, das Elastic Beanstalk Command Line Interface, Microsoft Visual Studio und Eclipse. Für das Deployment existieren unterschiedliche Strategien: all at once, rolling, rolling with an additional batch, immutable, und blue/green.

Workflow von AWS Elastic Beanstalk.
Workflow von AWS Elastic Beanstalk.
(Bild: AWS Germany GmbH)

Elastic Beanstalk lässt sich darüber hinaus auch mit dem Continuous Delivery-Service AWS CodePipeline kombinieren, um neue Versionen von Anwendungen automatisiert bei einem Commit durch Entwickler ausrollen zu können. Ein Beispieldokument zeigt eine einfache Continuous-Delivery-Pipeline, die AWS CodeBuild als Build-Server integriert und die gebauten Anwendungen in Elastic Beanstalk deployt.

Ein weiterer interessanter Aspekt bei AWS Elastic Beanstalk ist die Konfiguration der Umgebung durch die Verwendung von Konfigurationsdateien. Diese .ebextensions können dem auszurollenden Artefakt hinzugefügt werden. Folgendes Beispiel konfiguriert den JVM-Parameter -Xmx (maximale Heapgröße der JVM) auf 256 MB:

option_settings:
  - namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions
    option_name: Xmx
    value: 256m
  - option_name: MYPARAMETER
    value: parametervalue

Diese Einträge würden unter .ebextensions/options.config in dem Tomcat-Projekt abgelegt werden.

Worker-Umgebungen mit Elastic Beanstalk

Die Worker-Umgebung von Elastic Beanstalk.
Die Worker-Umgebung von Elastic Beanstalk.
(Bild: AWS Germany GmbH)

Falls eine Anwendung zeitaufwendige asynchrone Vorgänge oder Workflows ausführt, kann diese Aufgabe in eine dedizierte Worker-Umgebung ausgelagert werden. Dadurch werden die Worker von der produzierenden Anwendung entkoppelt, was eine deutlich höhere Skalierbarkeit der Gesamtapplikation ermöglicht.

Elastic Beanstalk vereinfacht diesen Prozess durch die Verwaltung einer Amazon SQS-Queue und der Ausführung eines Daemon-Process auf jeder der Worker-Instanzen, die Nachrichten aus dieser Queue lesen. Wenn der Daemon-Process eine Nachricht aus der Queue liest, sendet dieser einen HTTP-POST-Request lokal an http://localhost:80 mit dem Inhalt der Queue-Message. Die eigene Applikation muss also lediglich den langlaufenden Task ausführen, der durch den POST-Request gestartet wird.

Fazit

Sascha Möllering
Sascha Möllering
(Bild: AWS Germany GmbH)

Mit Hilfe von AWS Elastic Beanstalk ist es möglich, das Deployment und die Skalierung von Web-Anwendungen und Services deutlich zu vereinfachen. Dabei ist jederzeit der Zugriff und die individuelle Konfiguration der darunterliegenden AWS Standardbausteine wie Amazon EC2 oder Elastic Load Balancing möglich.

* Sascha Möllering arbeitet als Solutions Architect bei der Amazon Web Services Germany GmbH.

(ID:45532019)