Matthias
17.11.2017 von Matthias

Shophosting mit Amazon Web Services (AWS) - Teil 1

Seit Anfang 2017 beschäftige ich mich intensiv mit dem Betrieb von Web-Applikationen in der Cloud, speziell mit Hilfe der Amazon Web Services (AWS). Um zu verstehen, warum  es für eine Agentur sinnvoll ist Onlineshops in der Cloud eigenständig und erfolgreich zu betreiben, muss man sich die Vor- und Nachteile, im Vergleich zum klassischen Hosting von Web-Applikationen, vor Augen führen.

Klassisches Hosting

Der Hauptvorteil des klassischen Hostings besteht darin, dass die Verantwortung für den (sicheren) Betrieb eines Servers beim Hoster liegt und nicht bei den Entwicklern. So ist der Hoster dafür verantwortlich, dass Sicherheits-Updates für das Betriebssystem und die installierte Software installiert werden. Um einen kurzen Überblick zu geben, hier eine kurze Aufstellung der Eigenschaften, die mit dem klassischen Hosting verbunden sind:

  • Verantwortung für Server liegt beim Hoster
    • Security-Patches
    • Absicherung der Infrastruktur
  • Entwickler haben nur begrenzte Möglichkeiten/Berechtigungen
  • Setup ist einzigartig
  • zusätzliche Server können unter Umständen nicht immer zeitnah zur Verfügung gestellt werden
  • Festlegung auf eine Architektur
    • Umbau/Migration schwierig
  • dynamisches Scaling nicht möglich

Mehr Möglichkeiten durch Hosting in der Cloud

Im Gegensatz dazu, stehen Entwicklern in der Cloud nahezu unbegrenzte Möglichkeiten zur Verfügung, was die Installation von Software, benötigen Tools sowie die Verwaltung von Zugangs- und Firewall-Regeln angeht. Server können auf Knopfdruck erstellt oder zerstört werden. Mit den richtigen Werkzeugen lassen sich Continuous-Delivery-Pipelines erstellen, die eine Vollautomatisierung von Deployments ermöglichen. Im Gegenzug sind die Entwickler jedoch in der Pflicht die oben genannten Updates für Software und Betriebssystem zu pflegen, damit die Anwendungen auch sicher Betrieben werden können.

Zum Vergleich eine Aufstellung der Eigenschaften für das Hosting in der Cloud im Gegensatz zum klassischen Hosting:

  • Verantwortung für Server liegt bei der Agentur/Entwickler
    • Security - Patches
    • Absicherung der Infrastruktur
  • Entwickler haben alle Möglichkeiten/Pflichten
  • Setup ist austauschbar
  • zusätzliche Server können meistens zeitnah zur Verfügung gestellt werden
  • Festlegung auf eine Architektur nicht notwendig
    • Umbau/Migration einfacher
  • dynamisches Scaling wird unterstützt
  • ermöglicht "immutable Infrastructure"

Immutable Infrastructure

Für mich persönlich war der letztgenannte Punkt  "immutable Infrastructure" der, der mich am meisten gereizt hat. Nachdem ich schon viele Jahre Anwendungen auf diese Art deployed habe (auf den Server verbinden und die Software, zum Beispiel mit einem ‘git pull’,  aktualisieren)  musste ich regelmäßig feststellen, dass sich der Live-Server sehr gern anders verhält als der dazugehörige Staging-Server.  Somit waren die Deployments mit Problemen verbunden, die nicht an der Software selbst lagen, sondern durch minimal Unterschiede in den Serverkonfigurationen (mit) verantwortet wurden.

Bei "immutable Infrastructure" hingegen handelt es sich um ein Konzept, bei dem niemals ein Server manuell verändert , sondern immer eine neue Instanz mit der neusten Version der Software gebaut wird. Diese ersetzt  die alte Instanz.

"Mein wichtigstes Instrument ist mein eigener >>Werkzeugkasten>>."

Um dieses Ziel zu erreichen habe ich eine Reihe von Werkzeugen verwendet und einen für uns passenden “Werkzeugkasten” gebaut.

Wie mein Werkzeugkasten im Detail aussieht und funktioniert, werde ich euch nächste Woche genauer beschreiben. Ich gehe detaillierter auf die einzeln verwendeten Komponenten ein und deren Aufgaben.

Am Ende entsteht ein sauberer Prozess um Shopware einfach, kostentransparent und komfortabel in der Cloud betreiben zu können.