Qu'est-ce que Cloud Code (fonctions serverless) ?

Mis à jour : septembre 2026

Cloud Code est un modèle serverless où la logique backend s’exécute en fonctions côté serveur, déclenchées par appels, événements de données ou cron. Deux clarifications d’entrée de jeu, parce que cette famille de termes vit dans la confusion. Premièrement, “serverless” signifie que les serveurs sont le problème de quelqu’un d’autre — ils existent, invisibles, mis à l’échelle pour vous. Deuxièmement, les fonctions existent en deux architectures : le FaaS autonome, où chaque fonction est une unité isolée câblée à des services externes, et la variante BaaS qui donne son nom à cet article — des fonctions déployées dans votre backend, partageant leur environnement avec la base de données, l’authentification et les fichiers sur lesquels elles agissent.

Points clés

QuestionRéponse
Les quatre propriétésDéclenchée par événements · stateless · mise à l’échelle auto · paiement à l’usage
Les deux saveursUnités FaaS autonomes vs. Cloud Code vivant avec votre backend
Les familles de triggersAppel par nom · événements de données · événements d’auth · cron · webhooks
Pourquoi côté serveurLes clients peuvent être décompilés ; les fonctions ne peuvent pas être trafiquées
Les limites honnêtesTimeouts, statelessness et cold starts (là où l’échelle à zéro s’applique)

Une fonction, appelée de partout

L’exemple classique de l’agrégation — calculer à côté des données, n’expédier que la réponse :

// JavaScript / Node.js — Back4app JS SDK
// Calling a Cloud Code function: server-side logic, one line from the client
const avg = await Parse.Cloud.run('averageStars', { movie: 'Arrival' });
// The aggregation ran NEXT TO the database — only the answer crossed the wire

// The function itself (cloud/main.js — deployed to your backend, not the app):
// Parse.Cloud.define('averageStars', async (req) => {
//   const q = new Parse.Query('Review').equalTo('movie', req.params.movie);
//   const reviews = await q.find({ useMasterKey: true });
//   return reviews.reduce((s, r) => s + r.get('stars'), 0) / reviews.length;
// });

Faire la moyenne de mille avis sur le téléphone, c’est télécharger mille avis ; la version en fonction ne déplace qu’un seul nombre. Cet argument de bande passante se généralise en l’argumentaire complet pour la logique côté serveur, juste en dessous.

La taxonomie des triggers

Les explications superficielles listent les triggers en une phrase ; la structure mérite une table :

Famille de triggerSe déclenche quandUsage canonique
Fonctions invocablesUn client invoque par nom avec des paramètres JSONLogique métier, agrégations, actions
Triggers de donnéesAvant/après save, delete, find sur une classeValidation, valeurs par défaut, cascades, audit
Triggers d’authAvant la connexion, après inscription/déconnexionBlocklists, parcours de bienvenue, audit
Jobs planifiésExpressions cronRapports, nettoyages, purges TTL, digests
Webhooks entrantsUn système externe POSTe un événementConfirmations de paiement, notifications CI
Sources d'événements déclenchant des fonctions serverless à côté d'un backend géréAppels clients, événements de sauvegarde en base de données, événements d'authentification, plannings cron et webhooks externes déclenchent des fonctions côté serveur, qui lisent et écrivent dans la base de données gérée, appellent des API externes avec des secrets conservés côté serveur et renvoient des résultats, la plateforme mettant l'exécution à l'échelle automatiquement.

les secrets restent côté serveur

Appel client
par nom

Fonction
(votre logique, runtime géré)

Événement de données
avant/après le save

Événement d'auth
login, inscription

Planning
cron

Webhook externe

Base de données gérée
ACL appliquées

API tierces

Appels clients, événements de sauvegarde en base de données, événements d'authentification, plannings cron et webhooks externes déclenchent des fonctions côté serveur, qui lisent et écrivent dans la base de données gérée, appellent des API externes avec des secrets conservés côté serveur et renvoient des résultats, la plateforme mettant l'exécution à l'échelle automatiquement.

Pourquoi la logique appartient au serveur

Quatre arguments, presque toujours absents des explications habituelles. Ne faites pas confiance au client : les apps se décompilent et les requêtes se falsifient ; les calculs de prix, vérifications de permissions et scores de jeu calculés sur l’appareil sont des suggestions, tandis que la même logique dans une fonction fait loi — un trigger beforeSave valide chaque écriture, quel que soit le client qui l’a envoyée. Les secrets restent à la maison : les clés d’API tierces vivent dans l’environnement de la fonction, jamais dans un bundle que n’importe qui peut déballer — la discipline des clés d’API rendue structurelle. Mettez à jour sans release : les changements de logique serveur se déploient instantanément chez tous les utilisateurs, sans cycle de revue d’app store entre le correctif et le corrigé. Calculez près des données : l’agrégation, le façonnage des recherches et le fan-out s’exécutent à quelques microsecondes de la base de données, pas à l’autre bout d’un réseau mobile.

Cloud Code vs. FaaS autonome vs. conteneurs

Cloud Code (fonctions BaaS)FaaS autonomeConteneurs
S’exécuteDans le runtime de votre backendUnités isolées par fonctionLà où vous les orchestrez
ContexteBase de données, auth et ACL déjà attachéesChaque service câblé à la mainCe que vous y construisez
Unité de déploiementUn codebase, un déploiementPar fonctionPar image
Cold startsAucun — le backend tourne déjàOui, au redémarrage depuis zéroSeulement si vous descendez à zéro
Opérations privilégiéesAccès master key pour la logique adminCâblage IAM par fonctionVotre propre tissu d’auth
Mise à l’échelleAvec le backendPar requête, jusqu’à zéroSelon votre configuration
Convient àBackends d’apps sur un BaaSTravail événementiel isolé et en picsServices longue durée et avec état

L’article architecture serverless couvre le modèle dans son ensemble et la place du FaaS dans l’échelle des services a son propre article ; la ligne qui compte ici est contexte : les fonctions Cloud Code naissent connectées — même SDK, même sémantique de session, ACL appliquées à leurs requêtes — là où le FaaS autonome commence chaque projet par la plomberie.

Cold starts et statelessness, sans détour

Deux propriétés découlent de la mise à l’échelle par requête, et toutes deux méritent d’être dites clairement. Les cold starts surviennent quand une fonction descendue à zéro doit initialiser un environnement avant de s’exécuter — de quelques centaines de millisecondes à plusieurs secondes sur les plateformes typiques, atténués par des instances chaudes minimales et des bundles légers, et architecturalement absents pour les fonctions hébergées sur un backend toujours actif, ce qui est une différence réelle entre les deux saveurs, pas une vantardise de fournisseur. La statelessness signifie que, par contrat, rien en mémoire ne survit entre les invocations : compteurs, caches et sessions conservés dans une fonction sont des bugs à retardement. L’état va dans la base de données — et l’avantage discret de la variante BaaS est que la base de données est à une ligne de code, pas derrière un service qu’il faut d’abord choisir, connecter et sécuriser.

Cas d’usage courants

  • Validation et règles métier — des portes beforeSave qui rendent les invariants non négociables sur tous les clients.
  • Agrégations et rapports — calculez à côté des données ; renvoyez des réponses, pas des datasets.
  • Intégrations tierces — paiements, e-mail, API d’IA appelées avec des secrets conservés côté serveur.
  • Récepteurs et émetteurs de webhooks — les fonctions comme visages HTTP des intégrations événementielles.
  • Maintenance planifiée — digests, nettoyages et purges sur cron, sans flotte de workers à opérer.

Devriez-vous en faire une fonction ? Matrice de décision

TravailDestination
Logique que les clients pourraient trafiquerFonction — toujours
Tâches en pics, en forme d’événementFonction
Calcul de longue durée (minutes et plus)Job en arrière-plan, pas une fonction
Services avec état, toujours actifs (sockets, files)Conteneurs / services de plateforme
Hot path critique en latence à très gros volume soutenuMesurez — le toujours-actif peut gagner
Tout ce qui touche un secretFonction — le secret n’est jamais embarqué

Limites et trade-offs

  • Les timeouts sont des contrats. Les fonctions sont plafonnées de quelques secondes à quelques minutes ; le travail qui pourrait dépasser le plafond exige une file de jobs, pas de l’espoir.
  • La statelessness est stricte. Tout ce qui est en mémoire est éphémère ; les conceptions qui l’oublient passent les tests et échouent sous scale-out.
  • La prolifération est le mode de défaillance. Cinquante petites fonctions sans modules partagés ni discipline de nommage deviennent un monolithe distribué avec un pire outillage.
  • Le débogage est distant par nature. Logs et traces remplacent les points d’arrêt ; les plateformes dotées de bonnes surfaces de logs montrent ici tout leur intérêt.
  • Le coût s’inverse sous charge soutenue. Le paiement à l’usage est imbattable pour le travail en pics mais peut être battu par des serveurs toujours actifs à débit élevé constant — chiffrez la courbe, pas la brochure.

Cloud Code sur Back4app

Back4app est une plateforme open-source de Backend as a Service (BaaS) qui combine une base de données gérée, des API REST et GraphQL générées automatiquement, l’authentification, le stockage de fichiers et des fonctions serverless avec Cloud Code. Ici, Cloud Code est la saveur BaaS dans sa forme originale : du JavaScript déployé dans votre backend Back4app — Parse.Cloud.define pour les fonctions invocables comme celle des onglets de code, des triggers beforeSave/afterSave pour les règles de données, des hooks d’auth et des jobs planifiés, le tout dans un codebase et un déploiement. Les fonctions s’exécutent avec le contexte attaché : le même SDK que vos clients, les ACL et permissions au niveau des classes appliquées aux requêtes, l’accès master key disponible quand la logique d’administration doit légitimement les contourner, et les secrets dans la configuration côté serveur. Comme le backend tourne en permanence, le cold start du redémarrage depuis zéro ne s’applique tout simplement pas — et comme la plateforme est open-source, les fonctions sont portables vers n’importe quel hôte qui l’exécute, ce qui est la réponse pratique à la question du lock-in.

Questions fréquentes

Qu'est-ce qu'une fonction serverless ?

Un petit bloc de code côté serveur, à usage unique, que la plateforme exécute à la demande en réponse à un événement — un appel HTTP, un changement de données, une tâche planifiée. Le fournisseur prend en charge le provisioning, la mise à l'échelle et la maintenance : vous déployez la logique, la plateforme possède toute la machinerie qui l'exécute.

Quelle est la différence entre FaaS et serverless ?

FaaS — Functions-as-a-Service — est la moitié compute du modèle serverless : des fonctions individuelles déclenchées par des événements. Serverless est le modèle plus large, qui inclut aussi les services backend gérés (base de données, authentification, stockage — la moitié BaaS). Cloud Code est le point où les deux moitiés se rejoignent : des fonctions qui tournent avec un backend géré.

Comment les fonctions serverless sont-elles déclenchées ?

Cinq familles : les appels directs (un client ou une API invoque la fonction par son nom), les événements de données (du code qui s'exécute avant ou après les sauvegardes et suppressions), les événements d'authentification (hooks sur la connexion et l'inscription), les tâches planifiées (jobs de type cron) et les webhooks entrants de systèmes externes. Une bonne plateforme expose les cinq comme un simple enregistrement de code, pas comme de l'infrastructure.

Qu'est-ce qu'un cold start ?

La latence — de quelques centaines de millisecondes à plusieurs secondes — quand la plateforme doit initialiser un environnement d'exécution neuf pour une fonction descendue à zéro. Les mitigations incluent des instances chaudes minimales et des bundles plus légers ; les fonctions hébergées sur un backend toujours actif esquivent entièrement le cas du redémarrage depuis zéro.

Pourquoi les fonctions serverless doivent-elles être stateless ?

Parce que n'importe laquelle des nombreuses instances parallèles et éphémères peut servir la requête suivante — la mémoire conservée entre invocations est un bug en sursis. L'état persistant appartient à une base de données ou à un cache. Dans la variante BaaS, la base de données est déjà attachée, et c'est là une bonne part de la commodité du modèle.

Quelles sont les limites des fonctions serverless ?

Les plateformes plafonnent le temps d'exécution (quelques secondes par défaut, quelques minutes au maximum), la mémoire et la taille des payloads — le travail de longue durée relève des jobs en arrière-plan, et un débit élevé et soutenu peut coûter plus cher qu'un serveur toujours actif. Les limites sont le prix de la mise à l'échelle par requête.

Quelle est la différence entre fonctions serverless et microservices ?

Des axes différents : les microservices sont une décomposition architecturale ; serverless est un modèle d'exécution. Une fonction est plus fine qu'un microservice, et un microservice peut être implémenté en fonctions, en conteneurs ou comme tranche de monolithe. Les conteneurs achètent du contrôle et des processus longue durée ; les fonctions achètent zéro opération et une mise à l'échelle par requête.

Les fonctions serverless causent-elles du vendor lock-in ?

Les formats d'événements et l'outillage propriétaires créent un couplage réel sur les plateformes fermées. Le contrepoids, c'est l'open source : des fonctions écrites contre des runtimes ouverts — y compris le Cloud Code open-source de Back4app, qui tourne sur n'importe quel hôte Node.js — se déplacent avec votre backend au lieu de vous lier au système d'événements d'un seul cloud.

Termes associés

À comparer avec

Lectures recommandées

Prêt à construire votre backend ?

Lancez votre projet sur Back4app en quelques minutes — base de données, authentification, API et Cloud Code inclus. Sans carte bancaire.

Écrit et révisé par Back4app Engineering, Back4app Engineering · Publié le 2026-09-08