Zurück zum Blog

Folgen und abonnieren

Jetzt neu: Testen Sie Compute Code in Fastly Fiddle

Andrew Betts

Principal Developer Advocate, Fastly

Fastly Kunden nutzen unser Fiddle Tool schon seit Jahren, um Ideen für Edge-Logik in VCL zu testen. Mit der Einführung von Compute haben wir unser Edge-Compute-Netzwerk für jede Sprache zugänglich gemacht, die sich nach WebAssembly kompilieren lässt, damit Sie Compute Code ab sofort auch in Fiddle schreiben können.

Compute ist jetzt für alle Nutzer verfügbar und bietet zahlreiche Vorteile gegenüber VCL. Auch unser Ansatz in puncto Fiddle hat sich grundlegend verändert. Wir bieten inzwischen einen lokalen Server an, den Sie auf Ihrem eigenen Rechner betreiben können, um Compute Programme zu testen. Der Hauptunterschied liegt also in den funktionalen Vorteilen von Fiddle.

Warum Fiddle für Compute?

Auch wenn Sie Ihren Code mit Compute jetzt lokal testen können, liegen die Vorteile unseres Fiddle Tools auf der Hand. Sie können damit zum Beispiel den Code, den Sie auf developer.fastly.com sehen, direkt in der Dokumentation ausführen – oder in einem Blogpost wie diesem hier! Klicken Sie einfach unten auf RUN, um zu sehen, was passiert:

Neben dem sofortigen Testen von Codebeispielen ermöglicht Fiddle auch den Austausch unter Entwicklern. Unsere Kunden können unserem überaus talentierten und engagierten Support-Team Probleme oder Fragen in Form eines Fiddle mitteilen und erhalten Lösungen und Ideen oft auch über Fiddle zurück. Das integrierte Linting und das sofortige Feedback, von dem Sie mit Fiddle profitieren, gewährleisten, dass gemeinsam genutzter Code genau das tut, was er tun soll. Außerdem verschwenden Sie so weniger Zeit durch Copy/Paste-Fehler oder falsch gesetzte Semikolons.

Inwiefern Compute Code anders ist

Die Anwendungsfälle sind zwar größtenteils dieselben, aber die Codestruktur von Compute unterscheidet sich stark von VCL. VCL Services verwenden eine State Machine, mit der Kundencode in einer Reihe vordefinierter Unterprogramme ausgeführt werden kann, zum Beispiel in Fenstern oder Hooks, Diese wiederum ermöglichen den Zugriff auf den Anfragen- und Antwortzyklus in verschiedenen Phasen. Ihr Service funktioniert auch dann noch, wenn Sie keinen VCL Code schreiben – allerdings nur als herkömmlicher Caching Reverse Proxy. Bei Compute Programmen wird der Zugriff auf den Anfragen- und Antwortzyklus hingegen über einen einfachen Zugang gewährt, wobei Sie für den gesamten Zyklus verantwortlich sind. Wenn Sie keinen Compute Code schreiben, lässt sich Ihr Service nicht aktivieren.

Damit Sie Ihren Service dennoch nutzen können, werden die vertrauten Unterprogramm-Felder für VCL durch ein einziges Feld namens „MAIN“ ersetzt, wenn Sie eine andere Sprache als VCL in Fiddle auswählen. Hier schreiben Sie Ihren gesamten Code. Da Compute ein Minimum an Code erfordert, fügen wir Ihrem Fiddle einen simplen Boilerplate-Code hinzu. Wählen Sie also einfach Ihre bevorzugte Sprache aus und klicken Sie auf „RUN“. Eines der wichtigsten Designziele von Fiddle ist, dass Sie mit einem einzigen Klick eine funktionierende Konfiguration erhalten. Die Einrichtung erfolgt im Handumdrehen, damit Sie sofort mit der Iteration loslegen können.

Wenn Sie bereits mit Fastly Fiddle für VCL vertraut sind, wissen Sie, dass Sie von uns bei Ausführung einer Anfrage eine Reihe von Informationen erhalten, die Ihnen Aufschluss darüber bieten, wie Ihre Anfrage von unseren Cache-Servern verarbeitet wurde – einschließlich der dabei ausgeführten VCL Unterprogramme. Bei Compute läuft das Ganze allerdings ein bisschen anders.

Instrumentierung in Compute

Einige Prozesse bei der Verarbeitung einer Anfrage mit Compute ähneln denen von VCL. So werden Ihnen weiterhin folgende Informationen angezeigt:

  • Die Client-Anfrage und -Antwort

  • Sämtliche Origin-Anfragen und -Antworten

  • Sämtliche Inhalte, die an einen Logging Endpoint ausgegeben werden (bei Compute zum Beispiel stdout und stderr)

Die Unterprogramme können wir Ihnen allerdings nicht anzeigen, da es keine gibt. Stattdessen erhalten Sie Informationen zu Instanz-Events, wobei es sich in der Regel um „Instance started“ und „Instance terminated“ handelt.  Diese sind grün hinterlegt:

Das wohl spannendste Feature ist aber, dass wir Ihnen Host Calls anzeigen können. Dabei handelt es sich um die Aufrufe, die Ihr Code tätigt, um Verhaltensweisen außerhalb der Wasm Runtime, wie zum Beispiel die Weiterleitung einer Anfrage an einen Origin-Server, auszulösen. VCL Services führen in der Regel keine Host-Aufrufe durch, da sie bereits als nativer Code ausgeführt werden, dessen Sicherheit durch den VCL Compiler garantiert wird. Die durch Wasm garantierte Sicherheit sorgt in Compute für einen zusätzlichen Vorteil: Wir können sehen und einrichten, wann der Service einen Call an eine Ressource außerhalb des Programms ausführt.  

Wir haben begonnen, in Fiddle Host Calls mit Unterstützung für Geolocation Lookups zu integrieren:

Dieses Feature wollen wir in den kommenden Monaten um Dictionary und ACL Lookups sowie Cache-Interaktionen erweitern, die sich in VCL Programmen nicht effektiv instrumentieren ließen.

Bestimmung von Abhängigkeiten

Ein wesentlicher Unterschied zwischen VCL und Compute besteht darin, dass Compute Programme möglicherweise von importierten Paketen abhängig sind. Mit VCL waren nie nutzerdefinierte Importe möglich. In Compute werden Importe, die in Ihrem Paketmanifest deklariert sind, bei der Kompilierung in das Programm eingebaut. Aus Sicherheitsgründen kann Fiddle aber keine Importe auf crates.io oder npm zulassen. Aktuell sind eine Reihe der am häufigsten verwendeten Abhängigkeiten definiert (siehe Auflistung in unserem Developer Hub für JavaScript und Rust), und Sie können jede dieser Abhängigkeiten in Ihrem Code verwenden. Dieser Ansatz lässt sich mit dem von Tools wie Rust Playground vergleichen.

Wir sind große Fans des Ansatzes von Runkit, wonach ein beliebiges npm Modul zu einem Sketch hinzugefügt werden kann, indem Sie es einfach anfordern oder importieren, als ob es bereits in Ihrem Projekt vorhanden wäre. Allerdings ist dafür ein sprachspezifisches Parsing erforderlich, das wir umgehen möchten, um maximale Kompatibilität mit der größtmöglichen Anzahl an Sprachen zu gewährleisten.  Daran arbeiten wir bereits, und eine bessere Unterstützung für weitere Abhängigkeiten ist in Kürze geplant.

In der Zwischenzeit können Sie Compute Fiddle nutzen, um Hunderte von Anwendungsfällen aufzuzeigen.

Probieren Sie es aus

Klingt spannend? Dann überzeugen Sie sich doch einfach selbst! Und wenn Sie Compute noch nicht nutzen, registrieren Sie sich jetzt, um die Power von Serverless selbst zu entdecken. Oder nutzen Sie unser Angebot, um Fiddle für Compute kostenlos und unverbindlich zu testen.