iX 11/2017
S. 88
Report
Plattformdienst
Aufmacherbild

Webanwendungen mit AWS Beanstalk erstellen

Am Paketschalter

Amazons Plattformdienst Beanstalk erleichtert die Bereitstellung verteilter Webanwendungen. Dazu bündelt er mehrere Angebote wie Computing oder Load Balancing und übernimmt deren Verwaltung.

Anders als im klassischen IT-Betrieb, bei dem Anwender und Entwickler oft wochenlang auf Infrastrukturkomponenten wie virtuelle Maschinen, Storage oder neu anzulegende Netzwerke warten müssen, bietet die Cloud Entwicklern derartige Dienste und Tools auf Knopfdruck. Besonders gut eignet sich Cloud-Computing für das Bereitstellen von Webanwendungen, da es aufgrund der Elastizität jederzeit skalieren und auf Lastspitzen reagieren kann.

An dieser Stelle soll aber nicht unerwähnt bleiben, dass viele existierende Anwendungen auf einem klassischen Software-Stack wie Tomcat basieren und im eigenen Rechenzentrum laufen. Viele Firmen stehen daher vor der Herausforderung, wie sie derartige Software in die Cloud migrieren können.

Bei Elastic Beanstalk stellt Amazon Anwendern die Plattform bereit, auf der sie ihre Applikationen installieren können. Die Entwickler definieren die benötigte Umgebung und müssen sich nicht um die Wartung kümmern (Abb. 1). Quelle: Amazon

Um das Deployment komplexer Webumgebungen möglichst einfach zu gestalten, bieten Cloud-Anbieter wie Amazon und Microsoft seit geraumer Zeit Platforms as a Service (PaaS), die on demand komplexe Umgebungen bereitstellen. Amazon hat dazu den Dienst Elastic Beanstalk im Angebot.

Für jeden Geschmack etwas

Praktisch handelt es sich bei diesen Diensten um virtuelle Maschinen mit vorinstallierter Software wie Web- oder Anwendungsservern sowie Laufzeitumgebungen und Frameworks für diverse Sprachen. Der Betreiber der PaaS übernimmt die Administration der Plattform, hält etwa die Software auf dem neuesten Stand und spielt Sicherheitspatches ein. Entwickler müssen nur noch ihren Code über ein Web-UI oder eine API auf den Dienst hochladen.

Elastic Beanstalk bietet Anwendern eine große Bandbreite an Programmiersprachen und Frameworks. Dazu gehören Java, PHP, .NET, Node.js, Python, Ruby und Go sowie Applikations- und Webserver wie Apache, IIS, Tomcat, Passenger und nginx. Meist liegen alle gängigen Versionen vor, so können Anwender etwa im Falle einer Java-Applikation zwischen Version 7 und 8 wählen.

Je nach Anwendung wählt Beanstalk Amazon Linux oder Windows Server 2012 R2 als Betriebssystem-Image aus. Inzwischen bietet AWS auch das Container-basierte Ausführen an – das Orchestrieren der Container übernimmt der Elastic Container Service (ECS).

Amazons PaaS-Dienst besitzt keine eigene Automatisierungs-Engine, sondern setzt für das Deployment der Anwendungsumgebungen auf den hauseigenen Infrastructure-as-Code-Dienst CloudFormation. Für Beanstalk sind allerdings keine CloudFormation-Kenntnisse notwendig.

Bequemes Deployment

Das Deployment der eigentlichen Anwendung geht einfach vonstatten: Entwickler laden ihren Programmcode über die Nutzerschnittstelle von Elastic Beanstalk auf die bereitgestellten Server hoch. Eine direkte Interaktion mit den Applikationsservern, etwa über SSH, ist nicht vorgesehen. Entwickler von Java-Anwendungen müssen den Code dafür entweder als Zipdatei oder als Web Archive (.war) bereithalten. Generell sollten Entwickler alle Konfigurationsänderungen und das Deployment neuer Anwendungen über die Weboberfläche, die API oder die AWS-CLI durchführen und nicht direkt mit den erzeugten virtuellen Maschinen interagieren.