Der Thread ist nun schon ziemlich genau 1 Jahr alt und daher nicht mehr aktuell. Ich habe allerdings kein Problem damit, dass Thema wieder aufleben zu lassen, da, obwohl es eigentlich abgeschlossen ist, das Thema nicht minder interessant ist. Die Applikation ist mittlerweile übergeben worden und ich habe mich, aufgrund meines Studiums, aus dem Development-Prozess der Applikation vollständig ausgeklinkt. Dieser ist jetzt an die Abteilung der entsprechenden Firma abgegeben worden. Dennoch werde ich unsere endgültige Entscheidung, sowie die Gründe für unsere Entscheidung noch einmal wiedergeben.
Erst einmal war meine Wortwahl vielleicht ein wenig irreführend.
eines meiner Projekte wird langsam ernst
Damit war gemeint, dass das Projekt nun langsam aber sicher deployed werden sollte. Es geht dabei nicht darum, dass langsam mehr Last erwartet wird. Bei der Applikation ist von Tag 1 eine hohe Last zu erwarten gewesen.
Wie
@eiskaltereistee hielten wir eigene dedizierte Server für unsinnig und konnten es deshalb schon relativ früh ausschließen. Dies geschah aus den bereits genannten Gründen. Es erschien uns ein zu hoher Wartungsaufwand zu sein.
Letztendlich entschieden wir uns für
Cloud virtual machines bei
DigitalOcean. Dies aus folgenden Gründen:
- Die sogenannten "Droplets" sind scalable. Sprich: Es ist möglich den RAM und seine CPU an deine Bedürfnisse anzupassen. Das scaling lässt sich allerdings auch automatisieren. Dazu wird die DigitialOcean API benutzt, welche in Kombination mit DOProxy (Stichwort: Reverse proxy load balancers) den Prozess automatisiert.
- Es ist möglich mehrere Droplets für eine Applikation zu benutzen und diese mit Load Balancern zu verbinden. Dies ermöglicht auch das Scalen von Droplets ohne Ausfall, da nur der entsprechende Droplet neugestartet werden muss, alle anderen bleiben online und werden nur ein wenig mehr belastet. Load Balancer sind eine Voraussetzung für die oben beschriebene Methode, da z.B. der Traffic auf die verschiedenen Droplets verteilt werden muss. Die Droplets werden hinzugefügt/entfernt und zum Load Balancer hinzugefügt/entfernt.
- Des Weiteren ermöglicht DigitalOcean auch das scaling von Speicher mittels Block Storage. Das scaling ist hier sogar ohne Neustart des Droplets nötig. Ein Nachteil ist, dass Block Storage Volumes nicht teil der automatischen Backups sind. Es ist allerdings möglich, manuell Volume Snaphots zu erstellen. Auch lassen sich Block Storage Volumes als Komponente für RAID Arrays nehmen.
- Wie bereits eben erwähnt bietet DigitalOcean außerdem die Möglichkeit, automatische Backups (z.B. wöchentlich) zu machen. Dies macht für dieses Projekt zwar wenig Sinn, da die Datenbanken viel write Traffic haben, es ist aber nice-to-have. In diesem Falle machen Application-Level Backups deutlich mehr Sinn.
- DigitalOcean hat Server auf der ganzen Welt und ist Ausfallsicher. Die Daten werden separat von den Droplets sicher gespeichert. Es werden außerdem mehrere Kopien der Daten, für den Fall eines Datenverlustes gespeichert.
Zusammenfassend lässt sich also sagen, dass DigitalOcean alle erdenklichen Features hat. Das System ist (Ausfall)sicher und viele Firmen vertrauen bereits auf ihre Infrastruktur. Die DO-Community ist sehr aktiv, es lässt sich über alles ein Guide, eine Anleitung oder Informationen finden und das zu einem (wie ich finde) angemessenen Preis.
Wer sich genauer über DigitalOcean informieren will, empfehle ich
diesen Artikel. Jetzt würde mich allerdings auch mal eure Meinung interessieren.
Glaubt ihr, es war die richtige Entscheidung?
Kennt ihr Alternativen die noch günstiger sind?
Gibt es Dinge, an die wir nicht gedacht haben?
Edit:
Das soll hier by the way keine Werbung für DigitalOcean sein!