branchway

Funktionen: Code ohne eigenen Server

Nicht jede Aufgabe braucht eine ganze App. Ein Kontaktformular, ein Webhook von Stripe oder GitHub, ein nächtlicher Abgleich: Du schreibst eine Funktion, sie bekommt eine Adresse, und sie läuft nur dann, wenn jemand sie aufruft.

Eine Datei, eine Adresse

Die Funktion schreibst du direkt in der Console – ein Repository oder ein Build ist nicht nötig. In Node.js bekommst du ein gewöhnliches Request-Objekt und gibst eine Response, einen Text oder ein Objekt zurück:

export default async function (anfrage) {
  const daten = await anfrage.json();
  await sendeMail(daten.email, daten.nachricht);
  return { ok: true };
}

In Python ist es eine Funktion handler(anfrage), die Text, ein dict oder ein Tupel aus Inhalt, Status und Headern zurückgibt. Nach dem Speichern ist die Funktion sofort unter einer eigenen Adresse wie kontaktformular.branchway.app erreichbar.

Pakete, Datenbank und Versionen

Neben dem Code hat jede Funktion eine package.json bzw. requirements.txt. Beim Speichern installiert Branchway die Pakete – schlägt das fehl, bleibt die laufende Fassung unverändert und du siehst die Ausgabe von npm oder pip.

  • Datenbanken und Speicher deines Teams verknüpfst du wie bei Apps. Die Funktion bekommt DATABASE_URL bzw. die S3-Zugangsdaten als Umgebungsvariablen.
  • Jedes Speichern ist eine Version. Mit einem Klick holst du eine frühere Fassung zurück, die letzten 50 bleiben erhalten.
  • Schutz vor Anfragefluten: Über der eingestellten Zahl von Aufrufen pro Sekunde (voreingestellt 50) antwortet Branchway mit 429 – das kostet dich nichts.
  • Adresse nur mit Schlüssel. Eine Funktion muss nicht öffentlich sein: Auf Wunsch antwortet sie nur, wenn der Aufruf einen Schlüssel mitbringt – als Authorization: Bearer oder als ?schluessel= in der Adresse, weil manche Webhooks keine Header senden können.

Bezahlt wird je Aufruf

Eine Funktion, die niemand aufruft, kostet nichts. Berechnet werden die Aufrufe und die Rechenzeit in Gigabyte-Sekunden – also Laufzeit mal Arbeitsspeicher, auf die Millisekunde genau.

  • 1 Million Aufrufe und 400.000 GB-Sekunden je Team und Monat frei.
  • Danach 20 Cent je Million Aufrufe und 0,0017 Cent je GB-Sekunde.
  • Kein Preis für den Kaltstart und keiner für die Zeit, in der eine Funktion auf den nächsten Aufruf wartet.

Aufrufe und Rechenzeit zählen zu den Monatskosten deines Teams und damit auch zur Kostenwarnung: Bei 80 und 100 Prozent deines Betrags kommt eine E-Mail. Die Funktion nimmt danach weiter Aufrufe an.

Kaltstart, warm und Grenzen

Beim ersten Aufruf startet ein abgeschotteter Container mit deiner Funktion, das dauert einen Moment. Danach bleibt er fünf Minuten warm und antwortet sofort. Kommt nichts mehr, wird er beendet.

  • Arbeitsspeicher wählbar von 128 MB bis 1 GB
  • Zeitlimit je Aufruf einstellbar bis 60 Sekunden
  • Anfragen bis 6 MB
  • Optional ein Zeitplan: alle fünf Minuten, stündlich, täglich oder wöchentlich

Häufige Fragen

Kann ich npm- oder pip-Pakete nutzen?

Ja. Trag sie in die package.json (Node.js) oder requirements.txt (Python) der Funktion ein – beim Speichern werden sie installiert. Der Code selbst bleibt eine Datei; wer ein ganzes Projekt mit vielen Dateien hat, nimmt eine App.

Wo sehe ich, was meine Funktion tut?

Auf der Detailseite in der Console: die letzten Aufrufe mit Status und Dauer, ein Verlauf der letzten 24 Stunden und alle Ausgaben von console.log oder print unter „Logs“.

Wo läuft der Code?

Auf denselben Servern in Deutschland wie deine Apps – in einem eigenen Container je Funktion.

Weiterlesen