Nicht mehr aktuell
Dieser Beitrag ist outdated und entspricht nicht mehr der aktuellen Infrastruktur von DevStorage.eu
Ein neuer Beitrag zu unserer Infrastruktur wird im Laufe der nächsten Monate veröffentlicht.
In diesem Artikel werden wir darüber schreiben, wie DevStorage seine Infrastruktur aufbaut und wie unsere Systeme zusammenarbeiten.
Server
DevStorage hat seine Server in Deutschland stehen. Der Hauptteil in Frankfurt im Interxion Rechenzentrum und ein weiteren Teil bei MyLoc in Dortmund und Monitoring und Statusmanagement bei Hetzner in Falkenstein. Alle haben eine sehr gute Anbindung an das Netz, weshalb ein schneller Austausch untereinander und zu unseren Kunden möglich ist.
KVM & Docker
DevStorage setzt in einigen Bereichen auf KVM- & Docker-Virtualisierungen. DevStorage verfügt über ca. 150 Docker-Container, in denen verschiedene Funktionen wie Datenbanken, Haste, Webseiten, etc. laufen. Systeme wie das REST oder das Hostingpanel haben ihre eigene dedizierte Hardware für ihre Software.
DevStorage hat mehrere Server für verschiedene Systeme und Aufgaben. Alle Server laufen mit DDR4 Ram und auf Datacenter SSD Festplatten. Unsere Server sind über vSwitch’s miteinander verbunden, was auch einen einfachen Datenverkehr zwischen den Servern ermöglicht.
Unsere Infrastruktur und die unserer Kunden ist redundant ausgelegt (CEPH Cluster). Das bedeutet, dass es nur selten zu Ausfällen und Datenverlusten kommen kann, da es immer Systeme zum Zurückgreifen gibt, die im Falle eines Ausfalls übernehmen können.
Hostingpanel
Das Frontend des Panels ist in Angular entwickelt.
REST API
DevStorage verfügt über mehrere REST-API-Schnittstellen. Die größte und komplexeste ist die HostingPanel-REST (geschrieben in NodeJS). Diese ist auch unter rest.devstorage.eu verfügbar. Alle Anfragen, die einen Sinn, eine Datenabfrage oder eine Datenänderung zum Ziel haben, gehen an diese.
Diese kümmert sich um die groben Dinge: Übersetzung, Authentifizierung, Produktabfragen und -änderungen, Bestellungen, Rechnungen, E-Mails, Domains, Webspaces, etc. Die REST führt nicht alle Anfragen selbst aus, sondern gibt manchmal einfach Anfragen an andere Rest-Schnittstellen weiter.
Das REST läuft auf einem eigenen Server und hat externe Systeme, die sie überwachen und steuern.
Ein ausführlicher Artikel über den Rest folgt in Kürze!
Monitoring
Wir verwenden verschiedene Systeme zur Serverüberwachung.
Alle Server und auch Cloudflare sind mit DatadogHQ verbunden. Datadog benachrichtigt uns sowohl bei außergewöhnlicher Serverauslastung als auch bei Ausfällen von Diensten.
Desweiteren sind alle Server von DevStorage Infrastruktur mit Zabbix verbunden.
Server-Benennung
Unsere Server sind nach Planeten und Sternen aus dem Sonnensystem benannt. So gibt es u.a.: Erde, Venus, Merkur, Sonne, Neptun, Pluto, Uranus, der Mond und andere. Der Name macht es uns auch leichter, anderen zu sagen, welchen Server Sie meinen. IP-Adressen sind nicht so leicht zu merken.
Zusammenarbeit
Die Hauptschnittstelle, über die alle Systeme arbeiten, ist die REST-Schnittstelle. Diese ist unter https://rest.devstorage.eu zu finden. Alle Anfragen zwischen Client und REST laufen weiterhin über einen Cloudflare-Proxy, ebenso wie alle externen Zugriffe auf DevStorage.
Cloudflare
Cloudflare ist eines der wichtigsten Tools bei DevStorage. Praktisch der gesamte Datenverkehr läuft über Cloudflare. Dank Cloudflare Spectrum können wir auch SSH-Verbindungen über Cloudflare laufen lassen.
Selbst während der Wartungsphase (9 Monate) von DevStorage hatten wir über 15 Millionen Anfragen über Cloudflare, von denen nur 9000 Anfragen nicht gecacht waren. Der Traffic in diesen 9 Monaten betrug etwa 150 GB.
Dank Cloudflare sind alle Anfragen SSL-verschlüsselt. Damit sichern wir schon sehr gut, den Datenverkehr und die Daten der Kunden.
Mit Cloudflare Spectrum können wir auch SSH-Verbindungen über den Cloudflare Proxy laufen lassen, was die Verbindungen und unsere Infrastruktur weiter schützt.
Fehlererkennung
Die meisten unserer Systeme sind mit Sentry verbunden. Mit Sentry können wir schnell und einfach die Fehler in unseren Systemen sammeln, auswerten und beheben. Alle Fehler werden gezählt, protokolliert und mit einem Zeitstempel versehen, ebenso wie die Software, die den Fehler verursacht hat. So können wir die meisten Fehler beheben, ohne dass die Kunden sie uns melden müssen.
Git & Versioncontrol
Wir arbeiten viel mit Git. Alle unsere selbstentwickelten und selbstgebauten Systeme liegen auf unserem Git.
Der Code, der dort liegt, kann und wird auch über CI-Pipelines auf unsere Infrastruktur gespielt, so dass wir kaum Wartungsaufwand für Updates haben.
Code-Sicherheit
Wir arbeiten mit Sonarqube. Sonarqube erkennt Code Smells und Fehler in unserem Code, so dass wir Fehler schneller finden können, bevor sie in der Produktion auftreten. Dies ermöglicht uns auch, Sicherheitsrisiken zu erkennen und zu beheben.
Erst wenn Sonarqube unseren Code als “fehlerfrei” und sicher eingestuft hat, wird er auf die Produktionssysteme geladen.
Datenbanken
Bis auf Plesk (mit MySQL) laufen alle unsere Datenbanken mit Percona Server für MongoDB. Da wir in den meisten Fällen große Datenmengen abrufen und verarbeiten müssen, ist MongoDB perfekt für uns. Allein mit dem REST des Hostingpanels müssen teilweise riesige Datenmengen pro Minute geändert und geladen werden. Die Datenbank ist komplett verschlüsselt.
Hasteserver
Unser Hasteserver ist eine eigenständige Software mit eigener Datenbank. Das Backend basiert, wie alle unsere Anwendungen, auf MongoDB. Hier werden jede Woche hunderte von Dokumenten gespeichert. Mit bis zu 5ms Sekunden Ladezeit werden die Dokumente hier geladen. Die Anwendung wurde rein in NodeJS geschrieben.
LDAP
Wir kontrollieren alle Zugriffe auf die Software mit LDAP. LDAP ermöglicht es uns, Mitarbeitern & Fremdsoftware schnell und einfach Zugriff auf bestimmte Dienste zu geben, ohne viel Aufwand.
Backups
Unsere Server werden täglich komplett gesichert. Für Server-Backups werden die Daten mit ZSTD gespeichert. So können die Daten schnell und sicher gesichert werden.
Die Daten werden auf einem externen Storage-Server gespeichert, der sich ebenfalls selbst sichert. Die Daten werden also 3-fach auf verschiedenen Systemen gesichert.
Im Falle eines Datenverlustes können die Backups einfach wiederhergestellt werden.
Die Backups werden nach der Erstellung einige Tage lang gespeichert, bevor sie überschrieben werden. Jeden Tag werden damit über 3 Terabyte an Daten gesichert.
Redis
Zum Speichern von Daten wie Anmeldesitzungen und Laufzeitvariablen verwenden wir Redis. Redis läuft in einem Cluster und speichert seine Daten darin. Hauptsächlich nutzt die Hostingpanel-Rest diese Art von Datenspeicherung.