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

PlanInvocations / moisCompute inclus
Free500 0002 millions ms CPU
Pro2 millions10 millions ms CPU
Business10 millions100 millions ms CPU
Entrepriseillimitéillimité
MétriqueValeur
Cold start< 100 ms
Warm start< 10 ms
Latence DB co-localisée< 5 ms
Timeout par invocation10 s (configurable jusqu'à 150 s)
RAM par invocation128 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.