Micheal Abey

Estimated reading time: 9 Minuten

Techblog

Der 5-Minuten-Server

So viele Dinge können uns davon abhalten, Neues auszuprobieren, wenn wir der Prokratsination eine Chance geben: Gelegenheit, der richtige Spielplatz, Motiviation und oft Zeit! Ich versuche es mit 5-Minuten-Paketen, die zusammen genommen ein größeres Projekt ergeben. Funktioniert wie ein Kuchenrezept. Fünf Minuten sind ein symbolischer Wert. Sie können je nach Vorwissen variieren. Zum Beispiel bei diesem Thema:  Der 5-Minuten-Cloud-Server Für Speed Engineering wollen…

Techblog

So viele Dinge können uns davon abhalten, Neues auszuprobieren, wenn wir der Prokratsination eine Chance geben: Gelegenheit, der richtige Spielplatz, Motiviation und oft Zeit! Ich versuche es mit 5-Minuten-Paketen, die zusammen genommen ein größeres Projekt ergeben. Funktioniert wie ein Kuchenrezept. Fünf Minuten sind ein symbolischer Wert. Sie können je nach Vorwissen variieren. Zum Beispiel bei diesem Thema: 

Der 5-Minuten-Cloud-Server

Für Speed Engineering wollen wir schnell produktive Umgebungen aufsetzen können. Wie setze ich eine produktive, autoskalierbare PaaS auf und wiederhole das jederzeit auf Knopfdruck?

Wir starten mit Amazon Web Service. Die PaaS-Lösung Elastic Beanstalk (ELB) verspricht einen leichten Einstieg über die Oberfläche. Das wird in einer produktiven Umgebung jedoch schnell zum Flaschenhals, denn der Mensch skaliert erfahrungsgemäß mäßig. Deshalb setzen wir es gleich richtig über automatisierbare Befehle auf.

Meine fünf 5-Minuten-Pakete: 

1. AWS-Account aufsetzen

2. Command Line API installieren

3. Amazon PaaS verstehen

4. Rahmen für die Cloud-Anwendung

5. Beispiel-Applikation erstellen

…und ein Finale


5 Minuten: Account bei Amazon Web Services aufsetzen

Ein neuer Account bei AWS bekommt eine bedingungslose Probe-Lizenz für ein Jahr. Diese enthält jeden Monat genügend Gratisstunden, um einen Server durchgehend laufen zu lassen. Lässt man mehrere Server laufen, können zusätzliche Kosten anfallen. 

Schritt 1: Bei Amazon AWS anmelden

Gehen sie zur AWS-Web-Konsole über https://console.aws.amazon.com. Diese Seite ist der zentrale Einstiegspunkt. Am besten bookmarken Sie sie gleich. 

Halten Sie Ihre persönlichen Daten, die Kreditkarte und ein Telefon bereit. Ein Telefon, ja – man wird angerufen.

Schritt 2: Security Credentials erstellen und merken

1. Rufen Sie https://console.aws.amazon.com/iam/home?#security_credential auf. 

2. Folgen Sie Security Credentials -> Access Keys -> Create New Access Key

3. AccessKey und Secret Key erzeugen und sicher aufbewahren! 


5 Minuten: CLI installieren

Die Elastic Beanstalk Commandline API braucht als Voraussetzung:

  • die Programmiersprache Python 2.7 oder 3.4
  • den Paketmanager pip

Das prüfen Sie mit:

python --version
pip --version

Falls sie noch installiert werden müssen:

Unter Windows laden Sie Python unter https://www.python.org/ herunter und benutzen die Custom-Installation. Bitte wählen Sie diese Punkte aus:

  • pip mitinstallieren
  • python zu den “environment variables” hinzufügen

Für Mac benutzen Sie zur installation am besten den Paketmanager “brew” (installiert Python und pip):

brew install python

Linux-Distributionen bringen mindestens Python 2.7 mit. Pip muss man eventuell noch nachinstallieren mit

python get-pip.py

Das ELB Command Line Interface installieren Sie in jeder Umgebung mit.

pip install awsebcli

Um zu prüfen, ob es geklappt hat, verwenden Sie diesen Befehl

eb --version

5 Minuten: Amazon PaaS verstehen

Ein bisschen Theorie: Bei Amazon gibt es einen ganzen Zoo an Services, die ein normales Rechenzentrum abdecken. Das Charmante an der PaaS-Lösung ist, das der Anbieter nichts neu erfunden hat. Er bedient sich aus dem Fundus seiner existierender Dienste.

  • Die Serverinstanz, die automatisch im Hintergrund gestartet wird, ist unter dem Namen EC2 separat als IaaS-Lösung erhältlich. Übrigens auch zum gleichen Preis.
  • Der Loadbalancer und die Sicherheitseinstellung umgeben die IaaS-Instanz und können einzeln nachjustiert werden.
  • Ein sehr einfaches und mächtiges Werkzeug aus der AWS-Sammlung ist die Dateiablage S3. Mit ihm kann man beliebige Dateien hochladen und Zugriffsrechte darauf vergeben. Amazon sorgt dafür, dass die Dateien überall auf der Welt verteilt werden und somit kurze Zugriffszeiten haben. Sehr interessant für statische Webinhalte. ELB nutzt S3 um die zu deployenden Versionen des Modules und später auch die Logs darin zu speichern. 

Man kann also selbst die einzelnen Dienste zusammenstellen, übrigens alle über CLIs. Das ist besonders interessant, wenn man stärker individualisieren möchte. Einfacher erstmal ist der gezeigte Weg. Somit ist ELB eine Einstiegsdroge für Cloud-Interessierte.

Zur Terminologie: Der Name “elastische Bohnenstange” klingt gewöhnungsbedürftig. Er beschreibt, dass der Dienst flexibel in alle Richtungen wachsen kann, wie Ranken. Das bedeutet: dynamische Ressourcen-Verwaltung in fast allen Größen und für alle gängigen Einsatzszwecke.

AWS bemüht sich bei der Namensvergabe seiner Dienste soweit es geht sich an Standards zu halten, manchmal klappt dass aber nicht ganz, wie das Schaubild veranschaulicht. Hier werden Begriffe aus unserem IT-Alltag umgemappt.

Application ist eine Gruppierung von Ressourcen, zum Beispiel einer Umgebung, die die Serverinstanzen enthält. Vereinfacht: ein Ordner dafür.

Application Version ist die Version der zu deployenden Anwendung. Sie wird in S3 gespeichert. (im Bild als v1 und v2 dargestellt)

Environment ist die Umgebung für eine Anwendungsversion. Hier werden die Serverinstanzen verwaltet, auf der das Modul läuft. Sie enthält mindestens eine laufende Instanz.

Das ganze wird von einem Loadbalancer und einer Autoscaling-Lösung umschlossen, die je nach Konfiguration entscheiden, wo eingehende Anfragen bearbeitet werden und ob mehr Server benötigt werden.

Für alle, die sich über Sicherheit Gedanken machen: Amazon liefert standardmäßig eine Firewall mit. Sie öffnet nur die Ports, die wirklich gebraucht werden.


5 Minuten: einen Rahmen schaffen

Erstellen Sie die logische Gruppierung “Applications”. Sie ist wie ein Ordner, in den unsere Umgebung eingebettet wird. Das ist praktisch, um viele Umgebungsprofile zu pflegen, zum Beispiel DEV, TEST, PROD, usw.

2. Wechseln Sie in den lokalen Entwicklungsordner und geben ein:

eb init

Amazon stellt jetzt den Rahmen für die Cloud-Anwendung online bereit und stellt für das Setup fünf Fragen, die mit einer Empfehlung versehen sind. 

  1. Select a default Region:       eu-central-1 EU (Frankfurt)
  2. Enter Application Name:    testApplication
  3. Select a plattform:                Tomcat
  4. Select a plattform version:  Tomcat8 Java8
  5. Do you wish to setup SSH:  n

Hier macht sich schon die erste Flexibilität bemerkbar, man ist nicht auf einen Server bzw Version beschränkt, man kann aus vielen wählen: 

  1. Go
  2. Node.js
  3. PHP
  4. Python
  5. Ruby
  6. Tomcat
  7. IIS
  8. Docker
  9. Multi-container Docker
  10. GlassFish
  11. Java

Wir machen mit Tomcat weiter.

Sie können den Setup-Fortschritt nicht nur auf der Konsole sondern auch im Web unter https://eu-central-1.console.aws.amazon.com/elasticbeanstalk verfolgen beziehungsweise steuern.


5 Minuten: eine Beispiel-Applikation erstellen

Damit haben wir den Rahmen für unsere Anwendung erstellt. Jetzt erzeugen wir sie mit

eb create testEnvironment

Nun heißt es warten. In der Zwischenzeit wird eine Umgebung gestartet und da keine Web-Applikation sich im Ordner befand, deployed er ein eigenes Beispiel.

Den Status überpüfen Sie mit 

eb status testEnvironment 

Sie gibt eine Web-URL aus – z.B. CNAME: testEnvironment.h288vj432e.eu-central-1.elasticbeanstalk.com. Kopieren sie diese in den Browser. Wenn Sie alles richtig gemacht haben: 

Glückwunsch!

Sie haben nun eine Web Anwendung in der Cloud erstellt, die selbst skaliert und jederzeit per Befehl gestartet, geupdated und gestoppt werden kann. Von hier aus kann man noch mehr konfigurieren, individuell anpassen oder sich per SSH in die Instanz einloggen.


Finale und ein bisschen Lesestoff

Die Probe-Lizent reicht aus, um eine Serverinstanz ein Jahr lang umsonst laufen zu lassen. Wer bisher nur experimentiert hat, sollte die Umgebung wieder zerstören: 

eb terminate testEnvironment

Ich hoffe der Beitrag hat Spaß gemacht und Langzeit-motiviert. Schreiben Sie gern einen Kommentar dazu oder direkt an mich.

Falls Sie tiefer eintauchen wollen: Hier finden Sie Lesestoff für Ihre nächsten 5-Minuten-Schritte. 

1 Mehr Befehle, die Spaß machen: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html?icmpid=docs_elasticbeanstalk_console

2 Infos über die Probelizenz: https://aws.amazon.com/free/

3 Sicherheit: 

  • Weiter oben habe ich bei der Sicherheit erstmal entwarnt. Hier ein Hinweis für den Produktivbetrieb: Wenn man SSH zulässt, sollte man es vielleicht auf eine IP einschränken z.B die des Firmennetzwerks. Ansonsten kann man den Server von überall erreichen ( 0.0.0.0/0 )  https://eu-central-1.console.aws.amazon.com/ec2/v2/home?region=eu-central-1#SecurityGroups:sort=name
  • Unter den ELB-Konfigurationen gibt es seit neuesten auch automatische Updates für die verwendeten Technologien z.B. Tomcat, Apache,… Diese zu aktivieren ist mittlerweile ein gängige Praxis.

4 PaaS noch größer gedacht: Wer an dieser Stelle schon gemerkt, hat das ELB eigentlich nur Dienste zusammenfasst, um uns die Arbeit zu erleichtern Server aufzusetzen, sollte vielleicht noch einen Blick auf AWS Cloudformation werfen. Es geht noch einen Schritt weiter und kann weit komplexere Szenarien abbilden z.B. hochverfügbare Datenbanken, Archivierung, BigData und weiteres. Es nutzt hierzu eine Json-Format in dem alle AWS Dienste eingetragen werden können. Um dieses einfach zu erstellen gibt es ein Web Designtool: https://eu-central-1.console.aws.amazon.com/cloudformation/designer


Über den Autor

Von Michael Abey

Stellvertretender Bereichsleiter und Prinicipal Architect 

Michael arbeitet seit 2013 bei MaibornWolff. Er entstammt aus der klassischen Entwicklung und hat auf seinem Werdegang DevOps und Cloud in Operationabteilungen aufgenommen und angewendet. Heute baut und berät er große Cloudprojekte. Daneben sind Führung und Recruitment intern seine Schwerpunkte. Michael reist sehr gerne und probiert gerne neues aus.