Einführung in das serverlose Swift: Entwickeln auf Compute mit Andrew Barba

Andrew Barba, der Entwickler von Swift Cloud, hat kürzlich ein hochleistungsfähiges und voll ausgestattetes Swift SDK für unsere Compute Plattform veröffentlicht. Und er hat das erste Release in nur vier Tagen erstellt! Wir waren verständlicherweise beeindruckt und haben uns mit Andrew zusammengesetzt, um mehr über seine Ziele und den Build-Prozess für das Projekt zu erfahren.

Entwickeln Sie im Apple Ökosystem oder einem verwandten Ökosystem? Dann haben Sie wahrscheinlich schon von Swift gehört – der Programmiersprache, die von Apple und der Open Source Community für iOS, iPadOS, macOS, tvOS und watchOS entwickelt wurde.

Obwohl das Ökosystem von Apple auf Geräten wie Tablets und Smartphones sehr weit verbreitet ist, hat die Swift Community lange nach einem Weg gesucht, ihre Lieblingssprache auf Servern auszuführen. Die Programmierer der Sprache haben die Grundlagen dafür geschaffen, einschließlich der Unterstützung für die Kompilierung von Code in WebAssembly. In der Community lief die Sprache aber nur schleppend an ... Bis jetzt. 

Hier einige Auszüge aus unserem Gespräch mit Andrew Barba: 

Was macht Swift zu einer guten Wahl? Was gefällt Ihnen daran?

Ich bin als iOS Entwickler in die Branche eingestiegen und habe Swift schon früh genutzt. Swift ist ein wichtiger Bestandteil des iOS Ökosystems, und ich bin begeistert von seiner Sicherheit und Performance. Meine Karriere führte mich schließlich in eine andere Richtung – zum Backend –, sodass ich Swift nicht mehr so oft nutzte und stattdessen eine Menge JavaScript auf Node.js schrieb.

Ich fand das Entwicklererlebnis im Vergleich zur Erstellung nativer Anwendungen in Swift sehr mangelhaft. Es war sehr aufregend, als Apple vor ein paar Jahren einen Vorstoß für Swift auf Servern unternahm, indem es CI-Tools und öffentliche Pakete zur Ausführung von Swift auf AWS Lambda usw. veröffentlichte.

Was hat Sie dazu bewogen, eine Swift Laufzeitumgebung für Compute zu schreiben?

Der Overhead dafür, Swift Pakete in AWS zu integrieren, war zu hoch – man muss zu viel über die Cloud-Architektur, Docker Dateien usw. wissen. Ich wollte die Einstiegshürde für die iOS Entwickler-Community verringern, um Swift auf dem Server zu nutzen. 

Es gibt ein Swift Wasm Team, das erstaunliche Arbeit geleistet hat, um Swift in WebAssembly zu kompilieren. Während ich mich in ihre Arbeit vertiefte, ging mir ein Licht auf: „Lasst uns die gesamte Laufzeitspezifikation so implementieren, dass nichts zwischen dem Compiler und der Plattform steht!”

Warum haben Sie sich für Compute entschieden?

Ich habe versucht, die Swift Integration auf Cloudflare Workers aufzubauen, stellte dabei aber fest, dass zu viele Abhängigkeiten erforderlich waren, um ein Paket innerhalb der Größenanforderungen von Workers zu erstellen. Außerdem war es unklar, wie man die Plattformfunktionen wie ausgehende HTTP Requests und den Cache Layer nutzen kann. Ich habe es geschafft, Swift und Compute direkt zu integrieren, weil Fastly die Host-Aufrufe des Hauptsystems von Compute offenlegt, was zu weniger Abstraktionsebenen und viel kleineren Paketen führt.

Im Grunde genommen ist Fastly ein Polyglott und unterstützt mehrere Sprachen.

Das Edge Computing entwickelt sich derzeit in viele interessante Richtungen. Was glauben Sie, wie wollen Entwickler mit Edge Plattformen interagieren, und kann man sich auf einen Standard einigen?

Es gibt eine standardisierte Spezifikation für HTTP, sodass man heute potenziell mehrere universelle Abstraktionen für Edge Computing definieren könnte. Ich glaube, dass Entwickler generell eine granulare Cache-Steuerung haben möchten. Die Plattformen können sich in Dingen wie dem Zustand weiter voneinander unterscheiden. Jeder versucht, die gleiche Sache neu zu erfinden, aber mit kleinen Unterschieden.
Die Komplexität dieser Plattformen und die Menge an Aufgaben, die sie jetzt für Sie erledigen, machen es immer schwieriger, ein der Produktivumgebung ähnliches Setup lokal zu testen. Daher sehen wir auch mehr Tools, die Ihnen helfen, den Remote-Service als Teil von Entwicklungs- oder Test-Workflows zu nutzen – Tunnel, Playgrounds usw. Fiddle- und Viceroy-Tools von Fastly sind großartig. Es spricht viel für „Single-File-Anwendungen“ – d. h. die Fähigkeit, alles an einem Ort zu erfassen und die Möglichkeit, schnell zu testen und zu iterieren. 

Welche neuen Anwendungsfälle werden sich Ihrer Meinung nach auf der Edge entwickeln?

Es ist schwer zu sagen, ob es irgendetwas gibt, was Sie nur mit Edge Computing machen können. Bildoptimierung ist eine meiner Lieblingsfunktionen, und ich denke, dass maschinelles Lernen eine weitere große Chance für das Edge Computing ist. 

Die Netzwerkstabilität ist eine der wichtigsten Eigenschaften von Edge-Netzwerken. Zustandslose Edge-Compute-Anwendungen sind einfach. Die Probleme liegen im Bereich des Zustands und der Konsistenz. Deswegen ist Spanner von Google wirklich interessant.

Welche Ratschläge haben Sie für Entwickler, die gerade erst anfangen? Inwiefern unterscheidet sich das von dem Rat, den Sie sich selbst geben würden, wenn Sie nochmal von vorne beginnen müssten?

Wir schreiben jetzt eher funktional und deklarativ. Wir entfernen uns also von der imperativen Logik und machen es uns leichter zu verstehen, was eine Anwendung wirklich tut. Am besten entscheidet man sich für ein Tool, das es einem erleichtert, über seinen Code nachzudenken. Die Tools sind heute so viel leistungsfähiger, sodass man nicht mehr in die Tiefe gehen muss. Wenn man erst einmal eine gute Plattform gefunden hat, die den eigenen Bedürfnissen entspricht, kann man unglaublich produktiv sein.

Möchten Sie Swift auf Compute testen (oder Andrew Barba sogar bei der Feinabstimmung des SDK helfen)? Sehen Sie sich das Repo für Andrew Barbas Laufzeitumgebung hier an. Und wenn Sie seine Arbeit dazu inspiriert hat, Ihren eigenen Build-Prozess auf Compute zu verlagern, können Sie hier damit beginnen.

Bei Fastly sprechen wir oft von unserem Ethos von Entwicklern, für Entwickler. Wenn wir „von Entwicklern” sagen, meinen wir nicht nur die Fastly Teams, die unsere Produkte entwickeln – wir meinen auch die breitere Community von Entwicklern, die zu unserem Ökosystem beitragen, damit unsere gesamte Nutzer-Base so entwickeln kann, wie sie will – in den Sprachen, die sie kennt und mag.
Möchten Sie Ihre Arbeit in unserem Blog vorstellen oder Ihre Erfahrungen beim Experimentieren mit Andrew Barbas Swift SDK mit anderen teilen? Dann schreiben Sie uns einfach auf Twitter!

Andrew Betts
Principal Developer Advocate
Hannah Aubry
Senior Community Manager
Veröffentlicht am

Lesedauer: 4 Min.

Sie möchten sich mit einem Experten austauschen?
Sprechen Sie mit einem Experten
Diesen Beitrag teilen
Andrew Betts
Principal Developer Advocate

Andrew Betts ist Principal Developer Advocate bei Fastly und arbeitet mit Entwicklern auf der ganzen Welt zusammen, um das Web schneller, sicherer, zuverlässiger und einfacher zu machen. Er gründete ein Web-Beratungsunternehmen, das schließlich von der Financial Times übernommen wurde, leitete das Team, das die bahnbrechende HTML5-Web-Anwendung der FT entwickelte und gründete die Labs-Abteilung der FT. Außerdem ist Andrew ein gewähltes Mitglied der W3C Technical Architecture Group, einem Gremium aus neun Personen, das die Entwicklung des World Wide Web vorantreibt.

Hannah Aubry
Senior Community Manager

Hannah Aubry ist eine Community Managerin, die sich auf Communities im Bereich der Open-Source-Entwicklung spezialisiert hat und auf die Entwicklung offener Systeme konzentriert, die eine positive Zusammenarbeit und ein freundliches Klima fördern. In ihrer Funktion betreut sie auch Fastlys Open-Source-Initiative Fast Forward und arbeitet ehrenamtlich als Hauptorganisatorin für CHIditarod, eine gemeinnützige Organisation, die sich für Hungerleidende in Chicago einsetzt. Die Frage, was sie als Vogel wäre, beantwortete sie mit „ein Rosalöffler“. Auf Mastodon finden Sie sie unter @haubles@fosstodon.org und auf Bluesky unter [@haub.les].(https://staging.bsky.app/profile/haubl.es).

Sie möchten loslegen?

Setzen Sie sich mit uns in Verbindung oder erstellen Sie einen Account.