- Cloud Run zur Bereitstellung statischer Dateien verwenden – 1
- Dieser Blogbeitrag befasst sich mit der Bereitstellung statischer Dateien mithilfe von Google Cloud Run. Der Schwerpunkt liegt auf Weiterleitungen und der Verbesserung der Leistung.
Dies ist eine KI-übersetzte Version.
Zusammenfassung des Beitrags durch durumis AI
- Wir haben ein CDN-System aufgebaut, das Google Cloud Storage (GCS) und Cloud Run miteinander verbindet, um Bilder und Webressourcen effizient zu verwalten und optimierte Dateien bereitzustellen, die auf die jeweilige Browserumgebung zugeschnitten sind.
- Hochgeladene Bilder werden in verschiedenen Formaten wie WebP und AVIF konvertiert und gespeichert. Textdateien werden mit gzip und br komprimiert, um den Nutzern optimierte Inhalte bereitzustellen.
- Durch die Bereitstellung von Cloud Storage und Cloud Run in 8 globalen Regionen stellen wir sicher, dass Ressourcen von dem Standort aus bereitgestellt werden, der dem Nutzer am nächsten liegt. Dadurch wird die Latenz minimiert und das Nutzererlebnis verbessert.
Vorheriger Beitragbeschrieb den Teil des Servierens statischer Dateien mit Cloud Run, der bei Durumis verwendet wird.
Im Gegensatz zu Dateien wie robots.txt oder favicon.ico können Bilder, die in einem Blogbeitrag hochgeladen werden, oder Ressourcen der Webseite selbst nicht einfach als statische Dateien behandelt werden.
Daher müssen diese Dateien mit Cloud Run verwendet werden, das mit Google Cloud Storage (im Folgenden GCS) verbunden ist.
Das grundlegende Konzept ist einfach. Bilder, die in Echtzeit hochgeladen werden, oder neue Ressourcen, die beim Aktualisieren der Website hochgeladen werden, werden in GCS hochgeladen. Wenn eine Anfrage von extern kommt, prüft Cloud Run, ob die Datei in GCS vorhanden ist. Ist dies der Fall, sendet Cloud Run die Datei.
Die tatsächliche Funktionsweise ist jedoch deutlich komplexer.
Beim Hochladen von Bildern in GCS wandelt Durumis die Bilddateien standardmäßig in drei verschiedene Formate um.
Wenn es sich beim Hochladen um eine JPEG- oder PNG-Datei handelt, wird diese standardmäßig in WEBP und AVIF konvertiert und gleichzeitig gespeichert.
Alle Bilddateien werden ohne Dateierweiterung per URL angefordert. Bei einer Anfrage überprüft Cloud Run die Header des anfragenden Webbrowsers und prüft der Reihe nach, ob AVIF und WEBP unterstützt werden. Wenn keine dieser beiden Dateiformate unterstützt wird, wird die Datei als JPEG oder PNG übertragen. Darüber hinaus wird die Datei nicht nur einfach in ein anderes Format konvertiert, sondern auch auf die für die Webseite benötigte Größe zugeschnitten und gespeichert/übertragen.
Diagramm
Das Gleiche gilt für Textdateien.
Neben Bildern werden viele Ressourcen auf einer Website auch in Form von Textdateien wie JS und CSS benötigt.
Ähnlich wie bei Bildern werden auch JS- und CSS-Dateien beim Hochladen mit gzip und br komprimiert gespeichert. Bei einer Anfrage wird dann die vom Webbrowser unterstützte Datei übertragen.
Die Rolle eines CDN beschränkt sich nicht nur auf das Cachen von Inhalten. Bei Google Cloud Platform (GCP) kann die Cloud CDN-Funktion direkt mit dem Google Cloud Load Balancer (GCLB) verbunden werden, was noch leistungsstärkere Funktionen bietet.
Cloud CDN empfängt Daten vom Backend-Service, speichert sie und leitet sie an den Client weiter. Dabei kann Cloud CDN basierend auf den Anforderungsheadern des Clients die optimierte Datei senden. Auf diese Weise können für dieselbe URL verschiedene Content-Formate bereitgestellt werden.
Beispielsweise kann für die gleiche URL '/image/tempImage'
- im Falle einer Bilddatei
- abhängig vom 'Accept'-Header des Browsers ein anderes Bildformat übertragen werden.
- Der Chrome-Browser gibt normalerweise die Präferenz in der Reihenfolge 'image/avif,image/webp,image/apng' an.
- Das CDN liefert entsprechend dieser Reihenfolge das bestmögliche Format. Wenn kein Format unterstützt wird, wird auf JPEG oder PNG ausgewichen.
- und auch bei Textdateien
- wird die Komprimierungsmethode berücksichtigt.
- Der Chrome-Browser unterstützt Komprimierungsmethoden wie 'gzip, deflate, br, zstd'.
- Beispielsweise unterstützt der Durumis-Dienst derzeit gzip und br, wobei die br-komprimierte Datei priorisiert wird.
Durch diese erweiterten Funktionen des CDN können Inhalte bereitgestellt werden, die an die jeweilige Umgebung des Benutzers angepasst sind. Dies kann die Leistung der Website und die Benutzerfreundlichkeit deutlich verbessern.
Auch bei Cloud CDN ist grundsätzlich eine Dateianforderung von CDN an Cloud Run erforderlich. Daher verwendet Durumis in 8 Regionen weltweit Cloud Storage und Cloud Run, um Ressourcen vorab bereitzustellen und diese dann zu übertragen. Dies führt zwar zu leicht erhöhten Kosten und einem höheren Arbeitsaufwand, ermöglicht aber den Nutzern eine deutlich verbesserte Latenz.
Auch bei Verwendung von Cloud CDN müssen die Dateien grundsätzlich vom ursprünglichen Server (in diesem Fall Cloud Run) abgerufen werden. Durumis hat diese Struktur optimiert, um seinen Nutzern weltweit einen besseren Service zu bieten.
Die globale Optimierungsstrategie von Durumis:
- Vorabbereitstellung von Cloud Storage und Cloud Run in 8 Regionen weltweit
- Vorabverteilung der benötigten Ressourcen in jeder Region
- Übertragung der Ressourcen von der der jeweiligen Anfrage nächstgelegenen Region
Diese Vorgehensweise verursacht zwar leicht erhöhte Kosten und zusätzlichen Aufwand, bietet den Nutzern aber folgende Vorteile:
- Erheblich verbesserte Latenz
- Schnellere Ladezeiten für Inhalte
- Verbesserte Benutzerfreundlichkeit insgesamt
Die Visualisierung dieser Struktur sieht wie folgt aus:
Durch diese Struktur kann Durumis seinen Nutzern weltweit einen gleichbleibend schnellen Service bieten. Da die Inhalte von der nächstgelegenen Region bereitgestellt werden, unabhängig vom Standort des Nutzers, kann der Service weltweit mit geringer Latenz genutzt werden.
Dieser Ansatz erfordert zwar mehr Aufwand bei der anfänglichen Einrichtung und Wartung, bietet aber den großen Vorteil einer deutlich verbesserten Benutzerfreundlichkeit. Insbesondere für Unternehmen, die globale Dienste anbieten, kann diese Struktur eine große Hilfe sein, um wettbewerbsfähige Dienste bereitzustellen.
In diesem Beitrag zu CDN haben wir uns nur mit den grundlegenden Konzepten befasst.
Tatsächlich hätten wir auch die Details der Konfiguration behandeln können, aber da diese je nach Cloud-Anbieter (GCP, Azure, AWS) unterschiedlich sind und etwas weniger interessant sind, haben wir uns auf die Konzepte konzentriert.
Wenn sich die Gelegenheit ergibt, werden wir in Zukunft auch auf die Details eingehen.
Im nächsten Beitrag wollen wir uns dann der Frage widmen, wie die Synchronisierung von Cloud Storage in mehreren Regionen (bei uns sind es ganze 8!) funktioniert.
Vielen Dank.