Fonctions serverless co-localisées
Code TypeScript / JavaScript serverless, cold start < 100 ms, latence DB < 5 ms, facturation à l'invocation. Idéal pour webhooks, hooks d'auth, RAG.
Fonctions serverless co-localisées
Les fonctions serverless du Pool C permettent de déployer du code TypeScript ou JavaScript co-localisé avec le backend du projet. Cold start < 100 ms (warm < 10 ms), latence DB < 5 ms, facturation à l'invocation. Remplacent un serveur Node séparé pour la logique métier légère, les webhooks et les intégrations tierces.
Quand l'utiliser — quand non
Idéal pour
- Webhooks (Stripe, GitHub, etc.)
- Hooks d'authentification (enrichir le JWT, valider l'email)
- Logique métier légère (calculs, validations)
- Intégrations API tierces (envoi email, SMS, paiement)
- RAG : embedding + recherche vectorielle + appel LLM
Pas adapté
- Workloads CPU intensifs (préférer un service Pool A)
- Long-running jobs > 150 s (préférer un worker Pool A)
- Sockets WebSocket persistants (préférer Pool A ou Realtime)
Structure d'une fonction
// functions/hello-world/index.ts
import { serve } from "https://deno.land/std/http/server.ts";
serve(async (req: Request) => {
const { name } = await req.json();
return new Response(
JSON.stringify({ message: `Bonjour ${name} !` }),
{ headers: { "Content-Type": "application/json" }, status: 200 }
);
});
Déploiement
# Déployer une fonction paas backends fn deploy hello-world \ --project wzfbhd \ --code ./functions/hello-world/ # Toutes les fonctions du dossier paas backends fn deploy-all --project wzfbhd # Lister paas backends fn list --project wzfbhd # Supprimer paas backends fn delete hello-world --project wzfbhd
Déploiement aussi possible depuis le Studio, avec éditeur de code intégré.
Invocation
curl -L -X POST "https://wzfbhd.runtime.di2amp.com/functions/v1/hello-world" \
-H "Authorization: Bearer $ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Alice"}'
# Réponse : { "message": "Bonjour Alice !" }
Accès à la base de données
Variables d'environnement injectées automatiquement : PAAS_BAAS_URL, PAAS_BAAS_ANON_KEY, PAAS_BAAS_SERVICE_ROLE_KEY. La latence DB depuis une fonction co-localisée est inférieure à 5 ms.
// Requêtes via fetch standard vers /rest/v1/
const url = Deno.env.get("PAAS_BAAS_URL")!;
const serviceKey = Deno.env.get("PAAS_BAAS_SERVICE_ROLE_KEY")!;
const todos = await fetch(`${url}/rest/v1/todos?done=eq.false&limit=10`, {
headers: {
apikey: serviceKey,
Authorization: `Bearer ${serviceKey}`,
},
}).then(r => r.json());
Gestion des secrets
# Configurer les secrets d'une fonction (chiffrés via vault KMS) paas backends fn secrets set --project wzfbhd \ STRIPE_SECRET_KEY=sk_live_... \ SENDGRID_API_KEY=SG.... # Lister (clés uniquement, pas les valeurs) paas backends fn secrets list --project wzfbhd
// Dans la fonction
const stripeKey = Deno.env.get("STRIPE_SECRET_KEY");
Isolation et sécurité
Chaque invocation s'exécute dans un isolat séparé : pas d'accès aux données mémoire d'autres invocations ou d'autres projets. Pas d'accès au filesystem hôte. Réseau entrant via l'endpoint HTTP uniquement (pas de sockets raw). Réseau sortant autorisé pour les requêtes vers APIs tierces. Pour une isolation au niveau VM, voir runtime isolé renforcé.
Limites par plan
| Plan | Invocations / mois | Compute inclus |
|---|---|---|
| Free | 500 000 | 2 millions ms CPU |
| Pro | 2 millions | 10 millions ms CPU |
| Business | 10 millions | 100 millions ms CPU |
| Entreprise | illimité | illimité |
| Métrique | Valeur |
|---|---|
| Cold start | < 100 ms |
| Warm start | < 10 ms |
| Latence DB co-localisée | < 5 ms |
| Timeout par invocation | 10 s (configurable jusqu'à 150 s) |
| RAM par invocation | 128 MB (configurable jusqu'à 1 GB) |
Logs et observabilité
# Logs en temps réel paas backends fn logs hello-world --project wzfbhd --follow # Dernières invocations paas backends fn logs hello-world --project wzfbhd --last 50
Le Studio affiche aussi les logs (console.log, erreurs, durées) avec filtres et export.
Pour aller plus loin
Tarification associée
Invocations et compute inclus jusqu'au quota du plan. Au-delà : facturation à l'invocation. Voir tarifs.