Firebase Cloud Functions ist eine serverseitige Plattform zur Ausführung von Code in einer verwalteten Node.js-Umgebung, die auf Firebase-Ereignisse, HTTPS-Anfragen und Änderungen in Google Cloud-Diensten reagiert. Im Gegensatz zu herkömmlichen Backends muss der Entwickler keinen Server konfigurieren, keinen Webserver installieren oder sich um die Skalierung kümmern — jede Funktion wird in einem isolierten Container ausgeführt und erhält automatisch die benötigten Ressourcen. Laut Google Firebase (2026) verarbeitet die Plattform täglich über 2 Milliarden Funktionsaufrufe und bietet eine serverlose Architektur für Millionen mobiler Anwendungen.
Wichtige Punkte
Firebase Cloud Functions ist eine Computerplattform, die auf Google Cloud Functions (GCF) aufbaut und für das Firebase-Ökosystem angepasst ist. Funktionen sind normaler JavaScript- oder TypeScript-Code, der aus einem Modul exportiert und für einen bestimmten Ereignistyp registriert wird. Wenn ein Ereignis eintritt (z.B. ein Benutzer registriert sich oder lädt eine Datei hoch), führt Firebase Cloud Functions den entsprechenden Code aus und übergibt den Ereigniskontext.
Die Architektur von Cloud Functions folgt dem Prinzip der einzigen Verantwortung: Eine Funktion behandelt einen Ereignistyp und führt eine atomare Operation aus. Beispielsweise wird die Funktion sendWelcomeEmail ausgelöst, wenn ein neuer Benutzer in Firebase Authentication erstellt wird, und sendet eine Willkommens-E-Mail. Diese Isolierung vereinfacht das Debuggen, Testen und Wiederverwenden von Funktionen in verschiedenen Projekten.
Jede Funktion wird in einem isolierten Container mit einem temporären Lebenszyklus ausgeführt. Die maximale Ausführungszeit beträgt standardmäßig 60 Sekunden (HTTPS-Funktionen — 9 Minuten). Wenn eine Funktion nicht innerhalb des Timeouts abgeschlossen wird, schlägt die Anfrage mit Fehler 500 fehl. Für langlaufende Operationen verwenden Sie Cloud Tasks oder Pub/Sub mit Wiederholungen. Container können für nachfolgende Aufrufe wiederverwendet werden (Keep-Alive), was die Latenz bei Kaltstarts nach dem ersten Aufruf reduziert.
Firebase Cloud Functions unterstützt mehrere Node.js-Versionen: 18, 20 und 22 (empfohlen für neue Projekte). Die Version wird im Feld engines der Datei package.json angegeben. Die Firebase CLI konfiguriert die Laufzeitumgebung automatisch basierend auf der angegebenen Version. Wichtig: Firebase Cloud Functions unterstützt keine beliebigen Docker-Container — die Umgebung wird strikt von Google Cloud Functions vorgegeben.
Für neue Projekte wird Node.js 22 empfohlen, da es die neuesten V8-Optimierungen, verbesserte ESM-Modulunterstützung und WebSocket-Unterstützung auf Plattformebene enthält. Wenn ein Projekt Abhängigkeiten verwendet, die für eine bestimmte Node-Version erstellt wurden (z.B. native C++-Module), muss die Kompatibilität individuell geprüft werden — nicht alle nativen Module lassen sich in der GCF-Umgebung kompilieren.
Firebase Cloud Functions ist ein Wrapper um Google Cloud Functions mit vorinstalliertem Firebase SDK und Integration in Firebase-Dienste. Der Entwickler schreibt Code mit dem firebase-functions SDK, das typisierte Auslöser für alle Firebase-Dienste bereitstellt. Google Cloud Functions ist eine plattformnähere Umgebung, bei der Auslöser explizit über Eventarc oder Pub/Sub konfiguriert werden.
Der Hauptunterschied: In Firebase Cloud Functions wird ein Auslöser deklarativ über functions.firestore.document('path').onWrite() registriert, während er in Google Cloud Functions über Eventarc mit Ereignisattribut-Filterung konfiguriert wird. Firebase Cloud Functions wird außerdem mit dem Admin SDK geliefert, das automatisch mit den Dienstkonto-Anmeldeinformationen des Projekts initialisiert wird, was vollen Zugriff auf alle Firebase-Dienste ohne zusätzliche Einrichtung ermöglicht.
Firebase Cloud Functions unterstützt 8 Kategorien von Auslösern, die jeweils einem bestimmten Firebase- oder Google Cloud-Dienst entsprechen. Ein Auslöser ist eine Bedingung, die bei Eintreten automatisch eine Funktion aufruft. Der Entwickler verwaltet den Lebenszyklus der Funktion nicht direkt: Die Firebase CLI registriert den Auslöser in Google Cloud Eventarc, und die Cloud-Plattform führt die Funktion aus, wenn das Ereignis eintritt.
Die beliebtesten Auslöser sind Firestore-Auslöser: onWrite, onCreate, onUpdate, onDelete. Sie werden ausgelöst, wenn sich Dokumente in Firestore-Sammlungen ändern. Die Funktion erhält Snapshots des Dokuments vor und nach der Änderung, was den Vergleich von Werten und die Reaktion nur auf bestimmte Änderungen ermöglicht. Wenn sich z.B. der Bestellstatus von „ausstehend“ in „versendet“ ändert, kann eine Push-Benachrichtigung an den Benutzer gesendet werden.
Authentication-Auslöser (onCreate, onDelete) werden ausgelöst, wenn ein Benutzerkonto erstellt oder gelöscht wird. Sie werden verwendet, um Benutzerdaten zu initialisieren: Erstellen eines Benutzerdokuments in Firestore, Senden einer Willkommens-E-Mail, Schreiben in Analytics. Hinweis: Die Funktion kann die Benutzererstellung nicht abbrechen — sie wird ausgeführt, nachdem das Konto bereits erstellt wurde. Für die Vorvalidierung verwenden Sie Blocking Functions, die auf der Identity Platform verfügbar sind.
| Auslöser-Kategorie | Ereignis | Anwendungsbeispiel |
|---|---|---|
| Firestore | onWrite, onCreate, onUpdate, onDelete | Like-Zähler beim Hinzufügen eines Likes aktualisieren |
| Authentication | onCreate, onDelete | Benutzerprofil bei Registrierung erstellen |
| Realtime DB | onWrite, onCreate, onUpdate, onDelete | Chat-Nachrichten-Moderation |
| Storage | onFinalize, onArchive, onDelete | Thumbnail nach Bild-Upload generieren |
| Pub/Sub | onPublish | Geplante Ausführung (Cron) über Cloud Scheduler |
| HTTPS | onRequest | REST-API-Endpunkt für externe Dienste |
HTTPS-Funktionen (onRequest) ermöglichen die Erstellung vollständiger REST-API-Endpunkte, die über HTTP zugänglich sind. Im Gegensatz zu ereignisgesteuerten Auslösern werden HTTPS-Funktionen über eine URL der Form https://{region}-{project}.cloudfunctions.net/{functionName} aufgerufen. Es ist wichtig, CORS korrekt zu konfigurieren, wenn der Endpunkt von einem Browser oder einer mobilen Anwendung aufgerufen wird. Das Firebase SDK enthält keine CORS-Header automatisch — sie müssen manuell über Middleware hinzugefügt werden.
Für mobile Clients (Android, iOS) ist CORS nicht erforderlich, da native HTTP-Clients nicht durch die Cross-Origin-Richtlinie eingeschränkt werden. CORS ist nur für Webanfragen relevant. Wenn Ihre HTTPS-Funktion sowohl von der App als auch vom Web aufgerufen wird, fügen Sie eine universelle CORS-Behandlung hinzu: res.set('Access-Control-Allow-Origin', '*') für die Entwicklung oder eine Liste erlaubter Domains für die Produktion.
Für die periodische Ausführung (Cron-Jobs) verwenden Sie eine Kombination aus Cloud Scheduler und Pub/Sub. Cloud Scheduler sendet nach einem Zeitplan eine Nachricht an ein Pub/Sub-Thema, und der onPublish-Auslöser von Cloud Functions verarbeitet diese Nachricht. Die Firebase CLI unterstützt keine direkte Cron-Syntax — der Zeitplan wird über die Google Cloud-Konsole oder Terraform im Unix-Cron-Format konfiguriert: 0 3 * * * (täglich um 3:00 Uhr).
Beispielaufgaben: täglicher Newsletter, Bereinigen veralteter Daten, Erstellen von Berichten, Synchronisieren mit externen APIs. Wichtig: Cloud Scheduler ist ein kostenpflichtiger Google Cloud-Dienst (etwa 2 $ pro Monat pro Job). Jede Auslösung zählt als separater Funktionsaufruf und wird zu den Standard-Cloud-Functions-Preisen abgerechnet.
Die Entwicklung von Cloud Functions beginnt mit der Initialisierung eines Projekts über die Firebase CLI: firebase init functions. Dieser Befehl erstellt ein Verzeichnis functions/ mit einer index.js- (oder index.ts-) Vorlage, einer package.json-Datei und TypeScript-Konfiguration (falls ausgewählt). Nach der Initialisierung schreiben Sie einfach eine Funktion, exportieren sie aus dem Modul und führen firebase deploy --only functions zur Bereitstellung aus.
Jede Funktion wird durch Aufrufen der entsprechenden Auslösermethode registriert. Beispiel einer HTTPS-Funktion: exports.helloWorld = functions.https.onRequest((req, res) => { res.send(„Hello!“); }). Firebase Functions verwendet ein asynchrones Modell: Für ereignisgesteuerte Auslöser (nicht HTTPS) muss die Funktion ein Promise zurückgeben. Firebase wartet auf die Erfüllung des Promise, bevor der Container beendet wird. Wenn kein Promise zurückgegeben wird, kann die Funktion beendet werden, bevor die asynchronen Operationen abgeschlossen sind.
Die lokale Entwicklung erfolgt über die Firebase Emulator Suite, die einen Cloud Functions-Emulator enthält. Der Befehl firebase emulators:start startet einen lokalen Server mit Funktionen, die unter http://localhost:5001 erreichbar sind. Der Emulator unterstützt Hot Reload bei Codeänderungen und ist vollständig von der Produktionsumgebung isoliert, was Tests ohne Risiko für echte Daten ermöglicht.
Abhängigkeiten für Cloud Functions werden über package.json verwaltet. Firebase installiert nur Produktionsabhängigkeiten (dependencies, nicht devDependencies). Die Größe des Funktionspakets beeinflusst die Kaltstartzeit: Es wird empfohlen, die Anzahl der Abhängigkeiten zu minimieren. Die Abhängigkeit firebase-admin ist für das Firebase Admin SDK vorinstalliert — sie muss nicht manuell hinzugefügt werden.
Vertrauliche Daten (API-Schlüssel, Tokens) sollten nicht im Funktionscode gespeichert werden. Verwenden Sie functions.config() zum Speichern von Konfigurationen: firebase functions:config:set stripe.key=„sk_...“. Die Werte werden verschlüsselt und sind zur Laufzeit über functions.config().stripe.key verfügbar. Für große serialisierte Konfigurationen verwenden Sie Google Cloud Secret Manager.
Die Protokollierung in Cloud Functions erfolgt über console.log, console.warn und console.error. Alle Protokolle werden automatisch in Google Cloud Logging gesammelt und sind in der Firebase-Konsole (Functions > Logs) verfügbar. Für strukturierte Protokollierung verwenden Sie die Bibliotheken winston oder pino, die JSON-Formatierung und Protokollebenen unterstützen.
Die Fehlerbehandlung ist für die Zuverlässigkeit von entscheidender Bedeutung: Eine nicht behandelte Ausnahme in einem Promise beendet die Funktion mit einem Fehler, woraufhin Firebase automatisch mit exponentiellem Backoff wiederholt. Die Anzahl der Wiederholungen ist konfigurierbar: von 0 bis unendlich. Für ereignisgesteuerte Auslöser wird empfohlen, Wiederholungen zu aktivieren, um sicherzustellen, dass jedes Ereignis auch bei vorübergehenden Ausfällen externer Dienste verarbeitet wird.
Der Kaltstart (Cold Start) ist die Verzögerung beim ersten Aufruf einer Funktion nach einer Inaktivitätsperiode, wenn der Container mit dem Code neu geladen und initialisiert wird. Laut Firebase-Dokumentation (2026) dauert ein Kaltstart zwischen 200 ms und 2 Sekunden, abhängig von der Paketgröße, der Anzahl der Abhängigkeiten und der Region. Für die Benutzeroberfläche ist eine Verzögerung von über 1 Sekunde spürbar und kann die Benutzererfahrung beeinträchtigen.
Möglichkeiten zur Minimierung des Kaltstarts: Abhängigkeiten minimieren, TypeScript mit Kompilierung nach CommonJS verwenden, Paketgröße der Funktionen reduzieren, eine minimale Anzahl aktiver Instanzen festlegen. Firebase Cloud Functions v2 (2. Generation) ermöglicht die Einstellung von minInstances — der Mindestanzahl warmer Container, die immer bereit sind, Anfragen zu verarbeiten. Das Warmhalten von Containern verursacht Kosten für die Leerlaufzeit.
Die Skalierung von Cloud Functions erfolgt automatisch: Mit zunehmendem Anfragevolumen erstellt Firebase neue Container. Standardmäßig beträgt die maximale Anzahl paralleler Instanzen 3000 (Google Cloud-Projektkontingent). Jede Instanz bearbeitet jeweils eine Anfrage. Wenn eine Funktion schnell ist (unter 100 ms), kann eine Instanz bis zu 10 Anfragen pro Sekunde bearbeiten, was einen Spitzendurchsatz von bis zu 30.000 Anfragen pro Sekunde pro Projekt ergibt.
minInstances ist ein Parameter, der eine bestimmte Anzahl von Containern reserviert und sie warm hält. Er wird für kritische HTTPS-Funktionen empfohlen, bei denen Kaltstart-Latenz nicht akzeptabel ist. Für einen Authentifizierungs-Endpunkt setzen Sie z.B. minInstances: 1. maxInstances begrenzt die maximale Anzahl paralleler Instanzen, was nützlich ist, um unkontrollierte Kostensteigerungen bei plötzlichen Verkehrsspitzen zu verhindern.
Die Konfiguration erfolgt im Code: functions.runWith({ minInstances: 1, maxInstances: 10 }). Wichtig: minInstances erhöht die Kosten, da Container kontinuierlich laufen. Für Testprojekte sollte minInstances deaktiviert werden. Für die Produktion wird minInstances für alle öffentlichen HTTPS-Funktionen empfohlen und 0 für ereignisgesteuerte Auslöser, bei denen eine Verzögerung von 1 Sekunde nicht kritisch ist.
Die Bereitstellungsregion beeinflusst die Latenz für Endbenutzer und die Kosten des ausgehenden Datenverkehrs. Firebase Cloud Functions ist in über 30 Google Cloud-Regionen verfügbar. Für mobile Anwendungen wählen Sie die Region, die Ihrer Zielgruppe am nächsten liegt: us-central1 für Amerika, europe-west1 für Europa, asia-east2 für Asien. Die Region kann nach der Bereitstellung nicht ohne erneute Bereitstellung der Funktion geändert werden.
Die Änderung der Region erfolgt über den Parameter region im Code: functions.region('europe-west1'). Alle Funktionen in einer Datei können unterschiedliche Regionen haben. Für globale Projekte wird empfohlen, Funktionen in mehreren Regionen bereitzustellen und Cloud Load Balancing zur Verkehrsverteilung zu verwenden, obwohl für die meisten mobilen Anwendungen eine einzige Region ausreicht, wenn sie richtig gewählt wird.
Sehen wir uns praktische Beispiele für Cloud Functions in TypeScript an. Der Code verwendet das Firebase Functions SDK v2 (2. Generation) mit ES-Modul-Syntax. Die Beispiele umfassen die Behandlung eines Benutzererstellungsereignisses, die Generierung eines Thumbnails beim Bild-Upload und einen einfachen HTTPS-Endpunkt für eine REST-API. Alle Funktionen sind asynchron und geben ein Promise für die ordnungsgemäße Container-Beendigung zurück.
Stellen Sie vor der Ausführung sicher, dass die Firebase CLI auf Version 13+ aktualisiert ist: npm install -g firebase-tools. Funktionen v2 erfordern den Blaze-Tarifplan. Initialisierung: firebase init functions mit ausgewähltem TypeScript.
Das erste Beispiel — Erstellen eines Dokuments in Firestore bei der Registrierung eines neuen Benutzers. Die Funktion wird durch das Ereignis auth.user().onCreate ausgelöst und schreibt ein Basisprofil in die Sammlung users/{uid}. Dies stellt sicher, dass jeder registrierte Benutzer ein Dokument mit den erforderlichen Feldern hat.
import * as functions from "firebase-functions"
import * as admin from "firebase-admin"
admin.initializeApp()
export const createUserProfile = functions.auth
.user()
.onCreate(async (user) => {
const profile = {
email: user.email,
displayName: user.displayName ?? "User",
createdAt: admin.firestore.Timestamp.now(),
role: "free",
avatarUrl: null,
}
await admin.firestore()
.collection("users")
.doc(user.uid)
.set(profile)
console.log(`Profile created for ${user.uid}`)
})
Die Funktion createUserProfile ist asynchron — sie gibt ein Promise zurück, auf das Firebase vor der Beendigung wartet. Wenn das Schreiben in Firestore fehlschlägt (z.B. aufgrund unzureichender Berechtigungen), wird die Funktion automatisch wiederholt (falls Wiederholung aktiviert ist). Das Feld role mit dem Wert „free“ ermöglicht die Implementierung von Einschränkungen des kostenlosen Tarifs direkt in den Firestore Security Rules durch Vergleich von resource.data.role mit der erforderlichen Zugriffsebene.
Das zweite Beispiel — ein Storage-Auslöser zur automatischen Generierung eines Thumbnails nach dem Hochladen eines Bildes. Die Funktion erstellt eine verkleinerte Kopie mit 200x200 Pixeln und speichert sie unter dem Pfad der Originaldatei mit dem Präfix thumb_. Die Bildverarbeitung verwendet die Bibliothek sharp, die alle gängigen Formate unterstützt und in der Node.js-Umgebung ohne Systemabhängigkeiten funktioniert.
import * as path from "path"
import * as os from "os"
import * as sharp from "sharp"
export const generateThumbnail = functions.storage
.object()
.onFinalize(async (object) => {
if (!object.contentType?.startsWith("image/")) return
const filePath = object.name!
const thumbPath = filePath.replace(
/(\.\w+)$/, "_thumb$1"
)
const bucket = admin.storage().bucket()
const tempDir = os.tmpdir()
const tempFile = path.join(tempDir, path.basename(filePath))
await bucket.file(filePath).download({ destination: tempFile })
await sharp(tempFile)
.resize(200, 200, { fit: "cover" })
.toFile(tempFile.replace(/(\.\w+)$/, "_thumb$1"))
await bucket.upload(tempFile.replace(
/(\.\w+)$/, "_thumb$1"
), { destination: thumbPath })
})
Die Funktion generateThumbnail überprüft den Content-Type des Objekts und ignoriert Nicht-Bilder, was Ressourcen spart. Um sharp zu verwenden, muss die Abhängigkeit zu package.json hinzugefügt werden. Das Thumbnail wird mit dem Parameter fit: „cover“ erstellt, der das Bild von der Mitte auf ein 200x200-Pixel-Quadrat zuschneidet. Nach der Erstellung wird das Thumbnail mit einem modifizierten Namen zurück in denselben Bucket hochgeladen.
Das dritte Beispiel — eine HTTPS-Funktion, die einen REST-API-Endpunkt zur Überprüfung des Serverstatus implementiert. Die Funktion akzeptiert eine GET-Anfrage und gibt JSON mit Informationen über den Status der mit dem Projekt verbundenen Firebase-Dienste zurück. Dieser Endpunkt ist nützlich für die Überwachung und externe Systeme, die die Backend-Verfügbarkeit vor dem Senden von Daten überprüfen müssen.
import * as express from "express"
const app = express.Router()
app.get("/status", async (req, res) => {
try {
const db = admin.firestore()
await db.collection("_health").doc("check").get()
res.json({ status: "ok", timestamp: Date.now() })
} catch (error) {
res.status(503).json({ status: "error", message: error })
}
})
export const api = functions.https.onRequest(app)
Die Funktion api verwendet express Router für das Routing, was bei der Erstellung mehrerer Endpunkte in einer Funktion praktisch ist. Der Health Check schreibt in Firestore in die Sammlung _health, was eine gleichzeitige Überprüfung der Firestore-Verfügbarkeit ermöglicht. Für die Produktion wird empfohlen, eine Anfrageauthentifizierung über einen API-Schlüssel oder Firebase Auth-Token hinzuzufügen, um Missbrauch des öffentlichen Endpunkts zu verhindern.
Cloud Functions werden am häufigsten für Aufgaben verwendet, die nicht auf dem Client ausgeführt werden können oder sollten: Senden von Push-Benachrichtigungen, Generieren von Vorschauen hochgeladener Bilder, Integration mit externen Zahlungssystemen, Inhaltsmoderation, Synchronisieren von Daten zwischen Firebase und Drittanbieterdiensten. Das serverlose Modell macht diese Aufgaben kosteneffizient: Sie zahlen nur für die tatsächliche Code-Ausführungszeit.
Die Integration von Zahlungssystemen ist ein typisches Szenario für Apps mit In-App-Käufen. Cloud Functions empfängt einen Webhook vom Zahlungsanbieter (Stripe, PayPal), überprüft die Signatur der Anfrage, aktualisiert den Abonnementstatus in Firestore und sendet eine Bestätigung an den Benutzer. Der gesamte Code wird auf dem Server ausgeführt, ohne Risiko von Datenmanipulation auf dem Client. Laut Stripe-Dokumentation (2026) dauert die Webhook-Verarbeitung weniger als 500 ms.
Die intelligente Inhaltsmoderation verwendet einen Cloud Function Storage-Auslöser, um hochgeladene Bilder automatisch über die Google Cloud Vision API zu überprüfen. Die Funktion sendet das Bild zur Erkennung unsicherer Inhalte (Gewalt, Erwachseneninhalte) an die Vision API und löscht die Datei bei Überschreitung des Schwellenwerts und benachrichtigt den Administrator. Dieses Szenario ist für UGC-Anwendungen mit Benutzergalerien von entscheidender Bedeutung.
Datenaggregation — Cloud Functions als Ersatz für Firebase Realtime Database-Zähler. Anstatt einen Zähler auf dem Client zu lesen und zu schreiben (was zu Wettlaufsituationen führt), verwenden Sie einen Firestore onWrite-Auslöser für atomare Aktualisierungen aggregierter Felder. Beispielsweise zählt eine Funktion die Anzahl der Likes eines Beitrags bei jedem Hinzufügen oder Entfernen eines Dokuments in der Untersammlung /posts/{postId}/likes/{userId} und aktualisiert das Feld likesCount im übergeordneten Dokument.
Häufig gestellte Fragen
Die maximale Ausführungszeit hängt vom Typ ab: HTTPS-Funktionen — 9 Minuten, ereignisgesteuerte Auslöser — 60 Sekunden (v2: bis zu 60 Minuten). Für langlaufende Operationen verwenden Sie Cloud Tasks oder Pub/Sub mit asynchroner Verarbeitung. Das Zeitlimit wird im Code über runWith({ timeoutSeconds: 120 }) konfiguriert.
Verwenden Sie die Firebase Emulator Suite: firebase emulators:start --only functions. Der Emulator führt Funktionen lokal auf Port 5001 mit Hot-Reload-Unterstützung aus. Für Firestore- und Auth-Auslöser ersetzt der Emulator die echten Dienste und ermöglicht das Testen von Szenarien ohne Risiko für Produktionsdaten.
Die 2. Generation verwendet Google Cloud Run und Eventarc, bietet ein längeres Timeout (bis zu 60 Minuten), gleichzeitige Anfragebearbeitung durch eine einzelne Instanz und eine verbesserte Integration mit Google Cloud-Diensten. Die 1. Generation verwendet Google Cloud Functions und ist auf 60 Sekunden für ereignisgesteuerte Funktionen begrenzt. Firebase empfiehlt, neue Projekte mit der 2. Generation zu starten.
Firebase Cloud Functions unterstützt offiziell nur Node.js (JavaScript und TypeScript). Für Python verwenden Sie Google Cloud Functions direkt mit dem Firebase Admin SDK für Python. Das Firebase Admin SDK Python unterstützt alle Operationen mit Ausnahme einiger Firebase-spezifischer Auslöser, die nur über Node.js verfügbar sind.
Für authentifizierten Zugriff überprüfen Sie das Firebase-ID-Token im Authorization-Header: admin.auth().verifyIdToken(token). Für die Server-zu-Server-Integration verwenden Sie das Firebase Admin SDK mit einem Dienstkonto oder API-Schlüsseln. Für öffentliche Endpunkte mit Ratenbegrenzung verwenden Sie Ratenbegrenzung über Cloud Armor oder Middleware.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch