Wenn du deine Anwendung oder Datenbank bei Kinsta hostest, laufen deine Projekte auf der Top-Tier-Infrastruktur von Google Cloud Platform. In diesem Leitfaden gehen wir ein wenig auf die Details unserer Infrastruktur für das Anwendungs- und Datenbank-Hosting ein.

Ein Diagramm der Kinsta-Infrastruktur für Anwendungs- und Datenbankhosting
Ein Diagramm der Kinsta-Infrastruktur für Anwendungs- und Datenbankhosting

Bereitstellung

Git-Repository

Der Code deiner Anwendung wird in einem Git Repository programmiert. Du kannst eines der folgenden (oder alle) auswählen:

MyKinsta Anwendung hinzufügen/verteilen

Wenn du in MyKinsta eine Anwendung hinzufügst, stellt es eine Verbindung zum Git-Repository her, um die Anwendung abzurufen.

MyKinsta-Bot

Wenn du in den Einstellungen deiner Anwendung die automatische Bereitstellung bei einem Commit aktiviert hast, erkennt der MyKinsta-Bot, wenn du eine Änderung oder einen Merge an deinem Repository vornimmst, holt sich die Anwendung von deinem Git-Leistungsanbieter und stellt die aktualisierte Version der Anwendung bereit.

Google Cloud Build

MyKinsta sendet die Anwendung an Google Cloud Build, um aus dem Code ein Image der Anwendung zu erstellen. Anhand der Informationen in den Buildpacks oder der Dockerdatei weiß es, welche Anwendungen oder Module für die Anwendung installiert werden müssen. Die Ausgabe ist ein Image, das in einen Container verwandelt werden kann.

Google Artifact Registry

Hier werden die Container-Images gespeichert, die bereit für die Bereitstellung sind. Jede Anwendung hat ein einziges Image, das immer dann verwendet werden kann, wenn sie bereitgestellt werden muss.

Kubernetes Cluster

Das Image aus der Artifact Registry wird in den Cluster gepusht. Dies ist eine virtuelle Maschine (VM), auf der mehrere Container laufen können. Die Cluster werden so eingestellt, dass die Anfrage von der Artefaktregistrierung den richtigen Container findet, die Container laufen und über die richtigen Ressourcen verfügen. Wenn es Probleme mit einem Container gibt, wird die Anwendung in einen anderen Container verlagert. Wir verwenden cri-o v1.23.x in unserer Infrastruktur. Diese Version ist jedoch nicht statisch und kann aktualisiert werden, wenn wir verschiedene Komponenten des Stacks aktualisieren.

Unsere Kubernetes-Infrastruktur unterstützt ein Multi-Tenant-Konzept, bei dem jede Anwendung in ihrer eigenen Container-Umgebung läuft. Netzwerkisolierung und mehrschichtige Virtualisierung sorgen für Sicherheit und verhindern unbefugten Zugriff zwischen Anwendungen. Dieses Konzept bietet dir eine zuverlässige und sichere Hosting-Plattform, die es dir ermöglicht, dich auf dein Kerngeschäft zu konzentrieren, während wir uns um die zugrunde liegende Infrastruktur kümmern. Wir stellen mindestens einen Cluster pro Region bereit, wobei je nach Anzahl der Anwendungen in jeder Region zusätzliche Cluster möglich sind. Dieses System gewährleistet eine optimale Ressourcenzuweisung und Skalierbarkeit, um die wachsenden Bedürfnisse unserer Kunden zu erfüllen.

Anfragen

Cloudflare

Wenn ein Besucher auf die Website einer Anwendung zugreift, greift er zunächst auf Cloudflare zu, das weiß, in welchem Cluster die Website gehostet wird. Dann sendet es die Zugriffsanfrage an den richtigen Cluster.

Derzeit enthält Cloudflare für das Hosting von Anwendungen und Datenbanken die Standard-Firewall-Regeln, den Standard-DDoS-Schutz und andere Standardeinstellungen.

Cloud Load Balancing

Jeder Cluster hat einen Load Balancer, der die Zugriffsanforderung von Cloudflare erhält und nach dem Zufallsprinzip einen VM-Worker-Node schiebt.

Ingress

Der VM-Worker-Knoten empfängt die Anfrage im Ingress-System, das weiß, welcher Container für den angefragten Hostnamen zuständig ist. Das Ingress-System sendet die Anfrage an den richtigen Container. Wenn der Container mit einer Datenbank verbunden ist, kommuniziert er mit der Datenbank und sendet eine Antwort auf demselben Weg.

Virtuelle Maschinen (VM)

Eine virtuelle Maschine (VM) kann mehrere Container und mehrere Datenbanken enthalten.

Container

Jeder Container oder jede Anwendung kann mehrere Kopien auf der VM haben. In diesem Fall weiß das Ingress-System dies und sendet zufällig eine der Kopien desselben Containers durch.

Persistente Speicherung

Du kannst einem Webprozess oder Hintergrundprozess persistenten Speicher hinzufügen. Dadurch wird ein Speichervolumen hinzugefügt, das an die VM (virtuelle Maschine) für deine Anwendung angehängt wird und die Daten auch dann behält, wenn die Anwendung neu gestartet oder neu bereitgestellt wird.