Oracle startet Angebot zu Serverless Computing

Project Fn ist ähnlich wie Amazon Lambda und Azure Functions ein System zum Ausführen von Funktionen, ohne vorher eine Infrastruktur bereitstellen zu müssen. Der Einsatz des Open-Source-Projekts ist aber nicht auf einen Cloud-Anbieter begrenzt.

 –  13 Kommentare
Oracle startet Angebot zu Serverless Computing
Anzeige

Mit Projekt Fn ist diese Woche schließlich auch Oracle dem Kreis der Serverless-Anbieter beigetreten und muss sich dort nun einer bereits recht breiten Konkurrenz stellen. Mitstreiter wie Amazon, Google, Microsoft oder IBM haben teilweise schon vor Jahren das Feld besetzt. Ob und wie noch Platz für einen weiteren Kandidaten ist, lässt sich erst nach einem Blick drauf beantworten, was das Projekt ist und wie es sich von den anderen Angeboten am Markt abgrenzt.

Das Projekt Fn ist eine Container-native, Apache 2.0 lizenzierte Serverless-Computing-Plattform, die Nutzer sowohl in der Cloud als auch im eigenen Rechenzentrum betreiben können. Hiermit unterscheidet sich das Projekt bereits stark von Amazon Web Services und Google, da deren FaaS-Angebote (Function as a Service) ausschließlich in der jeweils proprietären Cloud-Umgebung lauffähig sind.

Anzeige

Da Projekt Fn auf Docker basiert, unterstützt es theoretisch beliebige Programmiersprachen. Fertige FDKs (Function Development Kits) gibt es bereits für Java, Go, Ruby, Python, PHP, Rust, .NET Core, und Node.js. Entwickler können auch AWS-Lambda-Funktionen dank eines speziellen Wrapper im Fn-Server zum Laufen bringen. Letzterer ist übrigens kein Widerspruch zum Serverless-Paradigma, denn das Projekt ist deutlich mehr als ein FaaS-SDK.

Das Projekt Fn besteht im Kern aus drei Komponenten:

  • Fn Plattform: Ein Docker-basierter Fn-Server als Laufzeitumgebung für die einzelnen Fn-Funktionen. Das Deployment erfolgt als Docker-in-Docker, und Fn CLI dient als Befehlsfenster zur Interaktion mit dem Fn-Server.
  • Fn Java FDK: Function Development Kit mit dem Entwickler Fn-Funktionen in Java schreiben und via jUnit-Integration (lokal) testen können.
  • Fn Flow: API zur Orchestrierung von Fn-Funktionen, die es ermöglicht, auf einer höheren Ebene Fn-Arbeitsabläufe unter anderem mit Fehlerbehandlung, asynchronen Aufrufen und Parameterübergaben zu implementieren.

Mit Hilfe des FDKs lassen sich sowohl die Fn-Funktionen als auch deren Tests implementieren. Die zugehörige API erlaubt dabei unter anderem den Zugriff auf den Laufzeitkontext. Zum Deployment einer Funktion ist ein Fn-Server als Laufzeitumgebung erforderlich. Anders als die Mitbewerber bietet Oracle sie aktuell noch nicht als Service in der Cloud an, was sich aber nach Aussage der Teammitglieder von Projekt Fn in sehr naher Zukunft ändern soll.

Statt also einen Oracle-Fn-Server zu nutzen, installieren und starten ihn Nutzer derzeit einmalig entweder lokal, beispielsweise um die Funktionen zu testen, oder auf einer beliebigen Cloud-Plattform. Lokal erfordert der Vorgang nicht mehr als den Aufruf von Fn start in der Konsole. Auch das Deployment des Servers in der Cloud gestaltet sich dank Docker einfach und lässt sich mit Kubernetes, Mesosphere oder Docker Swarm beliebig skalieren.

Das Einrichten einer einzelnen Funktion beziehungsweise eines Funktionen-Bundles bedarf ebenfalls nur eines einzigen CLI-Kommandos. Ein anschließender Aufruf startete einen neuen Docker-Container inklusive Virtual Machine innerhalb des FN-Servers und führt dort die Funktion aus. Im Anschluss entsorgt das System den Docker-Container wieder und benötigt daher nur dann Ressourcen, wenn die Funktion arbeitet. Was sich in der Theorie eher umständlich anhört, ist in der Praxis extrem effizient.

Wie bei AWS Lambda benötigt der erste Aufruf einer Java-basierten Funktion aufgrund der Startup-Zeit der VM allerdings etwas länger. Folgeaufrufe sind dagegen extrem schnell, da der Container und die VM standardmäßig noch 30 Sekunden nach dem Abarbeiten eines Aufrufs existieren.

Das Projekt Fn ist inklusive aller Komponenten Open-Source-Software. Interessierte finden auf GitHub den Code und eine Reihe Tutorials, die einen einfachen Einstieg ermöglichen.

Siehe dazu auf heise Developer:

(Lars Röwekamp) / (rme)
Anzeige