Das klingt alles recht trivial und ähnelt stark der Vorgehensweise bei einem dedizierten Hosting, allerdings gibt es einige besondere Punkte auf die in einer Cloud-Umgebung zu achten ist.
Anforderungsanalyse und -erfassung
In enger Absprache mit dem Kunden muss im Rahmen der Anforderungsanalyse geklärt werden, was seine Anforderungen sind. Eine bestehende Forderung des Kunden ist immer ein performantes, skalierbares System zu guten preislichen Konditionen. Um diese Anforderung im späteren Systementwurf zu berücksichtigen, hilft es, Kennzahlen aus einem bereits bestehenden Hosting heranzuziehen (Besucheranzahl, Anzahl der Bestellungen, leistungsstarke und -schwache Zeitfenster, usw.).
Gibt es noch kein Hosting oder wurden die genannten Daten nicht erfasst, dann hilft Erfahrung und ein mutiger Blick in die Kristallkugel. In einer Cloud-Umgebung ist dies dank der sehr guten Skalierbarkeit problemlos möglich. Man startet mit geschätzten Werten und kann entsprechend der Auslastung die Ressourcen anpassen. Bei einem dedizierten Hosting besteht meistens eine Mindestvertragslaufzeit für eine definierte Leistung, die eine Ressourcenreduzierung der Infrastruktur verbietet. Eine Aufstockung der Hardware ist durch Zukauf von Komponenten, manchmal von ganzen Servern, zwar möglich, allerdings meist nicht wirtschaftlich.
Lesetipp: Wie der Channel erfolgreich ins Cloud-Business einsteigen kann
Neben den bereits bestehenden und bekannten Anforderungen sind auch die zukünftigen Anforderungen zu berücksichtigen. Die zukünftigen Anforderungen können zum Beispiel eine Internationalisierung des Shops und damit verbunden eine Expansion in verschiedene Länder sein. Dies sollte bei dem Systementwurf berücksichtigt werden und Cloud-Instanzen in verschiedene Regionen (unterschiedlichen Standorten) geplant sein. Der Zugriff auf den Shop wird immens beschleunigt, wenn der Server direkt vor der Haustür des Kunden steht und nicht am anderen Ende der Welt.
Systementwurf und Systemarchitektur
Ist die erste Phase der Anforderungsanalyse und -erfassung abgeschlossen, gilt es die dort gewonnenen Erkenntnisse zusammenzufassen und in einem Systementwurf sinnvoll zu verarbeiten.
Instanzen
Wie beim klassischen Hosting mit dedizierten Systemen muss man auch Cloud-Instanzen mit Ressourcen bestücken (CPU, Arbeitsspeicher, Festplattenspeicher). Allerdings müssen hierbei die Möglichkeiten der automatischen Skalierung berücksichtigt werden. Dimensioniert man die Instanzen mit viel Arbeitsspeicher und CPU-Leistung, dann müssen bei Lastspitzen nur wenige weitere Instanzen generiert werden.
Bei nicht so stark frequentierten Zeiten dagegen liegen nicht benötigte Ressourcen ungenutzt herum und müssen bezahlt werden. Eine Bestückung mit wenig Arbeitsspeicher und wenig CPU-Ressourcen bedeutet, dass bei Anstieg der Benutzerzahlen sehr schnell neue Instanzen generiert werden. Nachdem diese fertig generiert wurden, müssen diese neuen Instanzen ins Load-Balancing aufgenommen werden. In Summe reden wir hier von ca. 20 bis 30 Sekunden, in denen der Shop langsam ist.
Steigt die Besucherzahl kontinuierlich weiter an, so ist es wahrscheinlich, dass der Cloud-Dienst mit der Generierung neuer Instanzen nicht mehr hinterherkommt. Allerdings liegen hier auch keine ungenutzten Systemressourcen brach. Es ist also entscheidend, ein gesundes Mittelmaß zwischen Performance und Wirtschaftlichkeit zu finden.
Dienste
Neben den Instanzen gibt es auch noch Dienste, die genutzt werden können. Um beispielsweise bei einem E-Commerce-Hosting eine Datenbank zur Verfügung zu stellen, könnte man eine Instanz aufsetzen, diese mit einem Betriebssystem bestücken und eine Datenbank installieren. Dies steht aber im Widerspruch zum Ansatz einer Cloud. Bei einem Fehler des MySQL-Dienstes würde die Datenbank-Verbindung hängen, und der Shop wäre nicht erreichbar. Somit ist der Shop nicht ausfallsicher dimensioniert.
Nutzt man hingegen zum Beispiel den RDS-Dienst von Amazon AWS oder den SQL-Dienst von Microsoft Azure, so wird der MySQL-Dienst von mehreren Systemen bereitgestellt. Bei Ausfall des Dienstes auf einem System, springt ein zweites System ein und übernimmt den Dienst, ohne dass es zu einem Ausfall kommt. Auch unterstützt der Amazon Dienst im Gegensatz zur Instanz automatisierte, vertikale Skalierung (scale up).
Bei Azure ist die vertikale Skalierung einer Instanz zwar automatisierbar, aber auch hier wird im Hintergrund die virtuelle Maschine gegen eine andere Instanz ausgetauscht und abschließend zerstört. Sind also die Systemressourcen des Datenbank-Hosts nicht mehr ausreichend, muss eine neue Instanz erstellt werden. Ein weiterer, nicht zu verachtender Vorteil ist, dass meistens keine Backups geplant werden müssen. Die Sicherung der Daten wird bei den angebotenen Diensten in der Regel vom Anbieter vorgenommen.
Lokale Verteilung
Steht die grundlegende Dimensionierung der Instanzen und ist die Nutzung von Diensten definiert, folgt die Aufteilung in Regionen und Subnetze. Zu berücksichtigen sind hierbei die benötigten Schnittstellen zu Dienstleistern, eventuell nötige Anbindungen über das Internet und der Verwaltungszugriff auf die Instanzen und Dienste. Soll der Shop in anderen Kontinenten ebenfalls verfügbar sein, lohnt sich eventuell eine Bereitstellung der Instanzen in verschiedenen Regionen. In diesem Fall sollte man die Auslieferung von statischen Daten über ein "Content Delivery Network" (CDN) in Betracht ziehen. Natürlich gibt es noch weitere Faktoren, wie z. B. eine enorm große Anzahl an Media-Daten, die ein CDN rechtfertigen.
Einfach oder komplex?
Ist der Systementwurf soweit fertiggestellt und steht die benötigte Infrastruktur fest, so kann man mit der Auswahl eines Anbieters beginnen. Bei einfachen Infrastrukturen und Konzeptionen ist ein Anbieter wie z. B. platform.sh sicherlich eine gute Option. Hier wird vom Anbieter eine weitere Abstraktionsschicht eingebaut, also eine Art Werkzeugkasten, um eine Cloud-Infrastruktur möglichst einfach aufzubauen. Eine weitere Abstraktionsschicht bedeutet immer geringeren Aufwand durch eine Vereinfachung, allerdings auf Kosten der möglichen Ausbautiefe der Infrastruktur.
Lesetipp: Wie die Hersteller den Channel im Cloud-Business unterstützen
Über eine Beschreibungssprache wie YAML werden die Infrastruktur und die benötigten Instanzen umfassend beschrieben, so dass der Anbieter ein automatisiertes Deployment durchführen kann. Vorteil einer solchen Lösung ist, dass auch Entwickler kleinere Änderungen vornehmen können und nicht jedes Mal ein System-Administrator benötigt wird. Erkauft wird sich diese Einfachheit durch eine Einschränkung in der Komplexität. Nicht alle Infrastrukturen lassen sich so abbilden.
Werden komplexere Infrastrukturen benötigt, so muss man einen Anbieter sogenannter IaaS-Lösungen (IaaS = Infrastructure as a Service) auswählen. Auch hier kann man Teilbereiche automatisieren, der Aufbau der Infrastruktur muss jedoch teilweise manuell erfolgen und ist weitaus komplexer. Damit sind aber auch die Möglichkeiten vielfältiger. Nach der Auswahl des Hosting-Anbieters kann man den Systementwurf detaillierter gestalten und die Feinplanung durchführen. Dabei darf auch das Überwachen der Infrastruktur nicht vergessen werden. Die meisten Anbieter bieten hierzu aber entsprechende Dienste an.
Ebenfalls wichtig und beim Systementwurf zu berücksichtigen, ist der Rollout von neuen Versionen der Anwendung. Da nun gegebenenfalls weltweit verteilt verschiedene Instanzen und Dienste betrieben werden, müssen natürlich eine automatische Erfassung und ein Ausrollen auf alle Systeme möglich sein. Die neue Version muss zudem auch für jede neu generierte Instanz vorgehalten werden. Und schließlich muss es eine Rollback-Strategie geben, falls ein Deployment doch einmal fehlschlägt.
Zum Video: Kunden in die Cloud bringen
Einrichtung und Test der Infrastruktur
Ist der Systementwurf abgeschlossen und ein Hosting-Anbieter gewählt, erfolgt der Aufbau der Infrastruktur. Sollte man keinen Anbieter mit einer Abstraktionsschicht gewählt haben, ist eine Automatisierung anzuraten.
Die letzte aber keinesfalls zu vernachlässigende Aufgabe ist das Testen der Infrastruktur. Man sollte die zu erwartenden Besucherzahlen simulieren, um zu sehen, wie sich das System unter realen Bedingungen verhält. Auch hier lohnt sich die Nutzung eines zusätzlichen Cloud-Anbieters, der die entsprechenden Ressourcen bereitstellt, um das Testen von einer externen Quelle zu simulieren.
Fazit
Ein Cloud-Hosting bietet weit mehr Möglichkeiten als ein dediziertes Hosting. Damit verbunden ist allerdings auch ein Anstieg der Komplexität. Umso wichtiger sind eine akribische Anforderungserfassung und ein Systementwurf, die möglichst vollständig sind und viele Ausbaustufen zulassen. Arbeitet man hier mit einem kompetenten Partner zusammen, kann man mit seinem E-Commerce-Auftritt die ganze Welt erobern. (rw)
Lesetipp: Wie der Channel bereits erfolgreich in der Cloud agiert