Zurück zum Blog

Folgen und abonnieren

ESI und Bibliotheken speziell für die Edge

Kailan Blanks

Senior Software Engineer, Developer Relations, Fastly

Content Delivery Networks basieren herkömmlicherweise auf einem proprietären Kernprodukt, das wiederum von proprietären Add-ons, wie Bildoptimierung und Content-Filtern, unterstützt wird. Fastly entwickelt seit jeher Lösungen, die ein bisschen mehr können: Unser Netzwerk basiert in seinen Grundfesten auf dem Varnish Cache, sodass unsere Kunden schon immer programmatisch bestimmen konnten, wie Anfragen auf der Edge bereitgestellt werden. Aufgrund der Einschränkungen von VCL, der domainspezifischen Konfigurationssprache für Varnish, konnten Kunden jedoch nur die von Fastly angebotenen Features nutzen.

Mit Compute können Sie jetzt die am besten für Sie geeigneten Lösungen auswählen oder sogar eigene Lösungen entwickeln. Entwickler können Bibliotheken erstellen und teilen, um diese spezialisierten Aufgaben so auszuführen, wie es für sie am günstigsten ist. Wenn eine Lösung nicht ihren Anforderungen entspricht, können sie den Code entsprechend anpassen.

Bei Fastly tun wir das bereits. Ich arbeite an einem neuen Rust Crate, mit dem Edge Side Includes wesentlich konfigurierbarer sind. Dieses Maß an Konfigurierbarkeit konnten wir oder die Konkurrenz bisher nicht bieten.

Edge Side Includes ist seit Jahrzehnten eine bewährte Methode für die Bereitstellung äußerst komplexer Webanwendungen. Dazu werden spezielle Tags in die HTML-Quelle eingefügt, die den Edge-Server anweisen, ein weiteres Dokument abzurufen und in den Quellcode einzufügen.

<esi:include src="http://example.com/1.html" alt="http://bak.example.com/2.html" onerror="continue"/>

Fastly unterstützt schon seit Langem eine ESI-Untergruppe in Konfigurationen. Als wir jedoch 2014 darüber schrieben, mussten wir die Leser bitten, unser Support Team zu kontaktieren, um zu erfahren, wie diese Untergruppe für eine bestimmte Anfrage aktiviert werden kann.

Dieser eingeschränkte Ansatz bot Developern aber nicht die nötige Flexibilität für die Entwicklung moderner Anwendungen. Mit dieser Implementierung war es beispielsweise nicht möglich, den XML-Namensraum zu ändern. Außerdem konnten Sie Ihre ESI-Tags in Fastly nicht verarbeiten, weil Sie keine eigene Implementierung verwenden konnten.

Inzwischen hat sich so einiges getan: Kunden haben die volle Kontrolle über ihre Compute-Kapazitäten und die Edge ist offener als je zuvor.

Programmierbarkeit

Das folgende Beispiel zeigt, wie Sie mit unserer neuen Rust ESI-Bibliothek und der „App“ für nutzerfinierte XML-Namespaces eine Seite mit Content für mehrere Backends zusammenfügen können. Wir haben die volle Kontrolle über ausgehende Anfragen und können Ihnen dadurch beim Streamen des Dokuments an den Nutzer fortschrittliches Routing und Content-Bearbeitung bieten.

Anbieterunabhängigkeit

Mithilfe von Programmiersprachen wie Rust oder JavaScript könnten Sie ESI natürlich auch selbst implementieren. Doch die Funktionen, die CDNs mitbringen, haben ihre Daseinsberechtigung, denn viele Nutzer müssen dasselbe Problem lösen. Fastlys Implementierungen dieser Funktionen liefern sofort einsatzbereite Lösungen, die Sie schnell in Ihre Programme integrieren können. Dadurch sind Sie jedoch nicht an Fastly gebunden. Sie können eine ESI-Bibliothek eines Anbieters Ihrer Wahl nutzen oder Ihre eigene Bibliothek!

Unsere Kunden lösen auf diese Weise bereits reale Probleme: Ein Einzelhändler erstellt Produktseiten mit über hundert einzelnen gecachten Fragmenten. Dies ist nur dank der Performance von Rust auf der Edge möglich. Mit unserem lokalen Testserver kann der Einzelhändler den Versand unabhängig und schnell abwickeln und gleichzeitig für ein einheitliches Web-Frontend sorgen.

Sie möchten das lieber erstmal einfach so ausprobieren, ohne Fastly Account? Kein Problem! Klonen Sie den Fiddle oben und testen Sie ihn an Ihren eigenen Origin-Servern. Wenn dann später Ihre Komplett-Servicelösung weltweit live gehen soll, können Sie sich für die kostenlose Testversion von Compute registrieren und sofort mit dem ESI-Crate loslegen.