Fonctions serverless vs. microservices : lequel choisir ?

Mis à jour : septembre 2026

Une fonction serverless est une unité de déploiement unique de logique backend ; un microservice est un service complet exploité de façon indépendante. Cette seule phrase est toute la comparaison en miniature — tout le reste (charge d’ops, courbes de coût, cold starts, état) découle de ce qu’est l’unité de déploiement : une fonction que vous confiez à une plateforme, ou un service que vous exploitez vous-même.

Points clés

QuestionRéponse
La différence centraleL’unité de déploiement : une opération (fonction) vs. une capacité possédée (service)
Qui l’exploiteFonctions : la plateforme. Microservices : votre équipe, par service
Coût à l’inactivitéLes fonctions retombent à zéro ; une flotte de services facture jour et nuit
L’impôt des fonctionsCold starts, limites de durée d’exécution, absence d’état
L’impôt des servicesPipelines, orchestration, monitoring, astreinte — multipliés par service

L’unité de déploiement, en code

Voici le déployable complet d’une opération de checkout — une fonction, pas de dépôt par service, pas d’image de conteneur, pas de pipeline :

// JavaScript / Node.js — the function is the whole deployable
// cloud/main.js — runs on the platform; there is no service to operate
Parse.Cloud.define('checkout', async (request) => {
  const cart = await new Parse.Query('Cart').get(request.params.cartId, {
    sessionToken: request.user.getSessionToken(),
  });
  // …price the cart, reserve stock, write the order…
  return { orderId: cart.id, status: 'confirmed' };
});

// Any client calls it by name — no gateway, container, or pipeline
const result = await Parse.Cloud.run('checkout', { cartId });

L’équivalent microservice de ce snippet est un dépôt entier : un serveur HTTP, un build de conteneur, des manifestes de déploiement, du service discovery, des health checks, un dashboard et une rotation d’astreinte — avant la première ligne de logique de checkout.

Fonctions serverless vs. microservices sur mesure

DimensionFonctions serverlessMicroservices sur mesure
Unité de déploiementUne fonctionUn service (processus + API + données)
Infrastructure que vous exploitezAucune — gérée par la plateformeConteneurs, orchestration, réseau par service
Mise à l’échelleAutomatique, par invocation, jusqu’à zéroÀ vous de la configurer ; la capacité tourne même inactive
ÉtatStateless par contrat ; l’état vit dans la base de donnéesPeut tenir un état en mémoire (à un prix)
Profil de latenceLes appels chauds sont rapides ; les instances inactives paient un cold startConstant — le processus est toujours debout
RuntimeFourni par la plateforme (typiquement un runtime JavaScript géré)Tout ce que vous pouvez conteneuriser
Travail de longue duréeCoupé par les limites de durée d’exécutionIllimité
Forme d’équipeDes ingénieurs produit seulementExige une capacité plateforme/DevOps
Courbe de coûtÀ l’exécution ; imbattable en pics, se croise à charge soutenuePlate ; efficace à volume élevé et régulier

La littérature des microservices est explicite : les bénéfices de l’architecture s’achètent avec une sérieuse maturité opérationnelle — déploiement automatisé, monitoring sophistiqué, conception pour la panne. Les fonctions externalisent exactement cette facture à la plateforme, et c’est pourquoi l’analyse serverless de Mike Roberts présente le FaaS comme l’échange du contrôle contre radicalement moins d’ops. Aucun des deux échanges n’est gratuit ; la question est de savoir quel impôt votre équipe peut payer.

Ce qui arrive réellement à une requête

Trajet d'une requête à travers une fonction serverless versus une flotte de microservices sur mesureDans le modèle fonction, un client appelle un endpoint géré et la plateforme exécute la fonction contre la base de données gérée, en mettant à l'échelle les instances automatiquement. Dans le modèle microservices, le client passe par une API gateway vers l'un de plusieurs services exploités par l'équipe, chacun avec son propre déploiement de conteneur et son propre magasin de données.

Modèle microservices — exploité par l'équipe

Client

API gateway

Service panier

Service commandes

BD panier

BD commandes

Modèle fonction — exploité par la plateforme

Client

Endpoint géré

checkout()

Base de données gérée

Dans le modèle fonction, un client appelle un endpoint géré et la plateforme exécute la fonction contre la base de données gérée, en mettant à l'échelle les instances automatiquement. Dans le modèle microservices, le client passe par une API gateway vers l'un de plusieurs services exploités par l'équipe, chacun avec son propre déploiement de conteneur et son propre magasin de données.

Remarquez ce que la moitié du bas ajoute et que celle du haut ne peut pas exprimer : des appels de service à service, des magasins de données par service et une gateway — la surface de coordination où vit réellement la complexité des microservices. Les transactions distribuées, les retries et les pannes partielles entre les services panier et commandes sont votre code ; dans le modèle fonction, le même workflow est généralement une fonction et une base de données, et les briques orientées événements (triggers, jobs planifiés) s’accrochent à la plateforme plutôt qu’à des files que vous exploitez.

Quand les fonctions remplacent une flotte de microservices — et quand elles ne peuvent pas

L’observation honnête derrière le pattern BaaS : la plupart des microservices d’un produit typique sont minces. Ils valident une entrée, appliquent une règle, lisent ou écrivent une base de données et appellent un voisin — la coquille opérationnelle autour de cette logique représente 90 % de leur poids. Les fonctions cloud dans un BaaS suppriment la coquille : la base de données, l’authentification, le stockage de fichiers et les API sont des services de la plateforme, si bien que chaque « service » se réduit à une poignée de fonctions et de triggers. Les équipes de une à dix personnes qui livrent des produits CRUD-plus-logique ont rarement besoin de plus.

Le plafond est tout aussi honnête. Les fonctions ne peuvent pas héberger un modèle de recommandation qui exige du matériel spécialisé, un transcodeur vidéo qui tourne une heure, un moteur de fan-out WebSocket au tuning sur mesure, ni un composant dont le débit soutenu fait du prix à l’invocation l’option coûteuse. Quand un composant franchit ces lignes, extrayez-le comme un vrai service et laissez-le interopérer avec les fonctions — extraire un hot spot avéré est une migration bien moins chère que décomposer une flotte spéculative construite trop tôt, la même leçon que l’argument monolith-first enseigne un niveau au-dessus.

Cas d’usage courants

  • Fonctions : backends d’API et mobiles. De la logique en forme de requête sur une base de données gérée — le cas dominant, et celui que les plateformes BaaS empaquettent de bout en bout.
  • Fonctions : triggers et glu. Valider à la sauvegarde, redimensionner à l’upload, synchroniser vers une API tierce, lancer des jobs nocturnes — des réactions brèves qui feraient honte à un service dédié.
  • Fonctions : trafic en pics ou inconnu. Lancements, campagnes, MVP — la retombée à zéro absorbe le pic comme le silence.
  • Microservices : composants lourds et soutenus. Recherche, feeds, moteurs de prix — une charge régulière où la capacité toujours active est moins chère et réglable.
  • Microservices : runtimes particuliers. Langages hors standard, dépendances natives, GPU, processus de longue durée.
  • L’hybride. Des fonctions pour la surface d’API et les événements ; un ou deux services extraits pour les composants dont les chiffres l’exigent.

Devriez-vous construire des fonctions ou des microservices ? Matrice de décision

Votre situationPenchez pour
Petite équipe, la logique produit est surtout du CRUD + règlesFonctions sur un BaaS — la flotte ajoute du coût, pas de la capacité
Le trafic est en pics, faible ou imprévisibleFonctions — la retombée à zéro est tout l’argument
Un composant tourne de quelques minutes à des heures par jobMicroservice (ou un système de background jobs) — les timeouts éliminent les fonctions
Débit élevé et soutenu sur un chemin chaudMicroservice — la capacité à tarif fixe gagne la courbe de coût
Budget strict de latence de queue sur chaque requêteMicroservice — pas de variance de cold start
Runtime personnalisé, dépendances natives, matériel spécialMicroservice — les plateformes exécutent ce qu’elles exécutent
Vous n’avez aucune capacité ops dédiéeFonctions — l’impôt de la flotte arrive, budgété ou non
Un hot spot dans un produit en forme de fonctionsHybride — extrayez ce seul service, gardez le reste en fonctions

Limites et trade-offs

  • Fonctions : les limites d’exécution sont des murs infranchissables. Le travail long doit migrer vers des systèmes de jobs ou des services — aucune astuce n’étire un timeout avec élégance.
  • Fonctions : cold starts et chaînes. Rares par invocation, mais les architectures de fonction-appelle-fonction les empilent ; gardez les chemins chauds peu profonds.
  • Fonctions : le couplage à la plateforme. Le runtime et ses API appartiennent à la plateforme — une fondation open-source que vous pouvez auto-héberger est la couverture pratique contre le lock-in.
  • Microservices : la facture d’ops est par service. Pipelines, monitoring, contrats versionnés et astreinte se multiplient avec la flotte ; la sous-estimer est le mode d’échec classique.
  • Microservices : les problèmes de systèmes distribués arrivent dès le premier jour. Partitions réseau, pannes partielles et cohérence inter-services sont des constantes architecturales, pas des cas limites.
  • Les deux : l’état est externalisé de toute façon. Les fonctions l’imposent ; les services bien exploités le choisissent. C’est la base de données, pas le calcul, qui finit par détenir la vérité dans les deux conceptions.

Fonctions serverless et microservices 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. C’est le côté fonctions de cette comparaison livré en entier : Cloud Code exécute des fonctions nommées comme le checkout ci-dessus, plus des triggers de base de données et des jobs planifiés, à côté de tout ce qu’une flotte de microservices existe pour fournir — si bien que la flotte que la plupart des produits auraient construite devient des fonctions sur des services gérés. Et parce que la fondation est open source et auto-hébergeable, le chemin d’extraction reste ouvert : quand un composant dépasse le modèle fonction, il peut être promu en service dédié sans abandonner la plateforme qui l’entoure.

Questions fréquentes

Une fonction serverless est-elle un microservice ?

Pas tout à fait — la granularité diffère d'un ordre de grandeur. Un microservice possède une capacité métier : son propre processus, sa propre base de données, son pipeline de déploiement et sa surface d'API. Une fonction possède une opération. Un seul microservice se décompose typiquement en plusieurs fonctions, et c'est la plateforme, pas votre équipe, qui fournit le processus, la mise à l'échelle et le runtime autour de chacune.

Les fonctions serverless peuvent-elles remplacer les microservices ?

Pour beaucoup de produits, oui — surtout quand les services ne feraient guère qu'envelopper une base de données avec de la validation et un workflow léger. Les fonctions dans un BaaS héritent de la base de données, de l'authentification et des API, ne laissant à écrire que la vraie logique métier. Les exceptions sont réelles : le travail de longue durée, les runtimes personnalisés, le débit lourd et soutenu et les planchers stricts de latence favorisent encore un service que vous exploitez.

Lequel est le moins cher : fonctions ou microservices ?

À volume faible ou en pics, les fonctions — vous payez à l'exécution et le coût à l'inactivité est nul, tandis qu'une flotte de microservices facture des conteneurs jour et nuit, plus le temps d'ingénierie pour les exploiter. À volume lourd et soutenu, les courbes se croisent : la capacité toujours active devient moins chère par requête. Comptez le salaire d'ops dans la comparaison ; il domine généralement la ligne d'infrastructure.

Les cold starts rendent-ils les fonctions plus lentes que les microservices ?

Seulement sur la fraction d'invocations qui tombe sur une instance inactive — typiquement de quelques millisecondes à environ une seconde, contre la latence constante d'un service toujours chaud. Un trafic régulier garde chaudes les instances de fonctions, et les fonctions chaînées sont le cas à surveiller, chaque saut pouvant ajouter son propre cold start. Pour des budgets stricts de latence de queue, un service toujours actif gagne encore.

Quand les microservices sur mesure gagnent-ils clairement ?

Le travail long ou stateful qui dépasse les timeouts des fonctions, les runtimes personnalisés ou les dépendances système que la plateforme n'offre pas, le matériel spécialisé, le débit élevé et soutenu où la capacité toujours active revient moins cher, et les équipes qui exigent le contrôle total du réseau et de la topologie de déploiement. Si plusieurs de ces points s'appliquent à un composant, ce composant veut être un service.

Les fonctions serverless peuvent-elles garder un état ?

Pas entre les invocations — chaque appel de fonction part d'une page blanche, et tout ce qui mérite d'être gardé doit vivre dans la base de données ou un cache. Les microservices peuvent tenir un état en mémoire, au prix d'une mise à l'échelle et d'un failover plus difficiles. En pratique, les deux architectures convergent vers la même discipline : externalisez l'état, traitez le calcul comme jetable.

Peut-on combiner fonctions et microservices ?

Oui, et les systèmes matures le font généralement. La division pragmatique : les fonctions prennent la logique d'API request/response, les triggers de base de données, les jobs planifiés et la glu événementielle ; les services dédiés prennent les rares composants à charge lourde et régulière ou aux besoins de runtime particuliers. Commencer par des fonctions et extraire un service quand les chiffres l'exigent coûte moins cher que la migration inverse.

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