Microservices vs. monolithe : quelle architecture, et quand ?

Mis à jour : septembre 2026

Un monolithe est une application déployée d’un seul bloc ; les microservices la découpent en petits services déployés indépendamment qui dialoguent via des API. Le débat a l’air architectural, mais il est surtout organisationnel : la vraie question est de savoir si la structure de vos équipes, votre connaissance du domaine et votre maturité opérationnelle peuvent payer le découpage — parce que le découpage envoie toujours la facture.

Points clés

QuestionRéponse
MonolitheUn codebase, un déploiement, des appels in-process, une base de données
MicroservicesPlusieurs services, des déploiements indépendants, des appels réseau, une base de données par service
La troisième option cachéeLe monolithe modulaire — une seule unité de déploiement, des frontières internes appliquées
Le choix par défaut consensuelCommencez monolithique ; découpez quand la coordination des déploiements fait mal, pas avant
Le piègeLe monolithe distribué — les coûts des microservices avec le couplage du monolithe

La différence en un exemple de code

Dans un monolithe, appeler un autre module est un appel de fonction — rapide, atomique, et incapable d’échouer à moitié :

// Monolithe : appel in-process — une transaction, un domaine de panne
const receipt = await billing.chargeOrder(order.id);

// Microservices : le même appel traverse le réseau — et vous héritez
// des timeouts, des retries, des pannes partielles et de la cohérence à terme
const res = await fetch('https://billing.internal/charge', {
  method: 'POST',
  body: JSON.stringify({ orderId: order.id }),
  signal: AbortSignal.timeout(3000),   // et si billing est lent ?
});
if (!res.ok) await compensateOrder(order.id); // et s'il a réussi à moitié ?

Toute la douleur des microservices tient dans ces trois dernières lignes. La voie médiane gérée garde la logique sur mesure déployable indépendamment sans vous refiler la gestion des pannes — une fonction s’appelle comme un service, mais s’exécute sur une infrastructure gérée par la plateforme :

// JavaScript / Node.js — Back4app JS SDK
// One deployable unit of business logic, no service mesh required
const receipt = await Parse.Cloud.run('chargeOrder', { orderId: 'ord_481' });
console.log(`Charged: ${receipt.status}`);

Trois formes, pas deux

Monolithe, monolithe modulaire et microservicesUn monolithe est une application dont le code est enchevêtré ; un monolithe modulaire est une seule unité de déploiement avec des frontières internes de modules appliquées ; les microservices sont des unités de déploiement séparées qui communiquent via un réseau.

Microservices

réseau

réseau

Service A

Service B

Service C

Monolithe modulaire

Une unité de déploiement
frontières strictes entre modules

Monolithe

Une app
modules enchevêtrés

Un monolithe est une application dont le code est enchevêtré ; un monolithe modulaire est une seule unité de déploiement avec des frontières internes de modules appliquées ; les microservices sont des unités de déploiement séparées qui communiquent via un réseau.

L’article canonique sur les microservices décrit la destination ; MonolithFirst décrit la route : presque tous les systèmes de microservices réussis ont commencé par un monolithe devenu trop gros, et le monolithe modulaire est la façon de garder l’option ouverte — les frontières d’abord, le réseau ensuite, et seulement là où il est mérité.

Microservices vs. monolithe : les différences pratiques

DimensionMonolitheMicroservices
DéploiementUne unité, un train de releasesIndépendant, par service
Mise à l’échelleToute l’app monte en charge ensemblePar service, là où la charge se trouve vraiment
Appels entre les partiesIn-process, nanosecondesRéseau, millisecondes + modes de panne
Cohérence des donnéesTransactions ACIDSagas et cohérence à terme
Isolation des pannesUn bug peut tout faire tomberPannes contenues — si l’architecture le prévoit
Où vit la complexitéDans le codeDans l’exploitation
Taille d’équipe adaptéeUne équipe, jusqu’à ~10 devsPlusieurs équipes autonomes
DébuggingUne stack traceTracing distribué entre services
Profil de coûtUn runtime, bon marchéInfra par service + observabilité + équipe plateforme

La ligne la plus tranchante de ce tableau est où vit la complexité : découper un système ne supprime pas la complexité — il la déplace du codebase vers le réseau, le pipeline de déploiement et le dashboard de 3 h du matin.

Les deux sens de l’histoire des migrations

Le sens célèbre : une grande plateforme de streaming vidéo a passé des années à découper son monolithe en plus d’un millier de services, pour résoudre un problème de mise à l’échelle qu’elle avait réellement. Le sens inverse est plus récent et tout aussi instructif : la même industrie a produit un service de monitoring qui a refusionné ses microservices serverless en un seul processus et réduit ses coûts d’infrastructure d’environ 90 % — déplacer les données entre les briques était la dépense dominante — et des équipes d’ingénierie qui ont consolidé plus d’une centaine de services en un seul, en invoquant des suites de tests et une gestion des dépendances devenues ingérables. Les deux sens étaient rationnels : la constante, c’est que l’architecture a suivi le problème mesuré, pas la tendance.

Cas d’usage courants

  • Monolithe : nouveaux produits, petites équipes, domaines encore flous — partout où la vitesse d’apprentissage l’emporte sur la théorie de la mise à l’échelle.
  • Monolithe modulaire : produits en croissance qui veulent des options futures sans surcharge présente ; le choix par défaut qui mérite d’être défendu.
  • Microservices : de nombreuses équipes qui livrent indépendamment, des composants aux mises à l’échelle divergentes (feed vs. checkout), des organisations qui pratiquent déjà le provisioning rapide, le monitoring et l’astreinte.
  • Hybride avec un backend géré : les fonctionnalités standard (auth, données, stockage) consommées en tant que service, la logique sur mesure sous forme de fonctions déployées indépendamment — l’autonomie de niveau service au coût d’ops d’un monolithe.

Devriez-vous découper ? Matrice de décision

Restez monolithique quand…Découpez quand…
L’équipe tient dans une pièce (< ~10 devs)15–20+ devs répartis en plusieurs équipes font la queue sur une seule release
Les frontières du domaine bougent encore chaque moisLes frontières sont stables depuis des trimestres
Les transactions traversent vos workflows centrauxLes composants ont des données réellement indépendantes
Maturité ops = « on déploie de temps en temps »Le provisioning, le tracing et l’astreinte sont déjà solides
La douleur, c’est la qualité du codeLa douleur, c’est la coordination des déploiements

Si la colonne de gauche vous décrit mais que celle de droite vous tente, le monolithe modulaire est le compromis honnête — et si vous découpez pour découvrir que chaque changement touche trois services, vous avez construit le monolithe distribué et devriez refusionner sans honte.

Limites et trade-offs

  • Monolithe : le train de releases ralentit à mesure que les équipes se multiplient ; une fuite mémoire devient la panne de tout le monde ; les enchevêtrements anciens résistent à l’extraction si la discipline des modules se relâche.
  • Microservices : la « MicroservicePremium » — transactions distribuées, gestion des pannes réseau, API versionnées entre vos propres équipes, et un stack d’observabilité qui devient sa propre ligne budgétaire.
  • Les deux : aucun ne répare un domaine mal modélisé. Des frontières de services tracées sur un mauvais modèle produisent une version distribuée du même désordre, avec de la latence en plus.
  • La contrainte organisationnelle est réelle : selon la loi de Conway, vous livrez votre structure de communication. Restructurer l’architecture sans restructurer les équipes produit l’anti-pattern à coup sûr.

Microservices vs. monolithe 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. Elle change les termes du débat : les 80 % standard du backend n’ont même plus à être architecturés par vous, et les 20 % sur mesure s’exécutent sous forme de fonctions Cloud Code — chacune déployable indépendamment comme un microservice, aucune ne traînant un service mesh, une base de données par service ou une rotation d’astreinte. Les équipes qui dépassent même ce cadre gardent la sortie : le stack est open source, si bien qu’extraire un vrai service plus tard part de frontières qui fonctionnent, pas d’une réécriture.

Questions fréquentes

Lequel est le meilleur, les microservices ou le monolithe ?

Aucun des deux, universellement — ils optimisent des choses différentes. Le monolithe optimise la simplicité : un seul codebase, un seul déploiement, des appels in-process, de vraies transactions de base de données. Les microservices optimisent l'autonomie des équipes et la mise à l'échelle indépendante — au prix de la complexité des systèmes distribués. Les facteurs décisifs sont la taille de l'équipe, la stabilité du domaine et la maturité opérationnelle, pas la mode architecturale.

Une startup devrait-elle utiliser des microservices ?

Le consensus fort de l'industrie est non — commencez par un monolithe. L'argument canonique, tiré de l'essai MonolithFirst de Martin Fowler, observe que presque toutes les réussites en microservices ont commencé par un monolithe devenu trop gros, tandis que les systèmes conçus en microservices dès le départ peinent : vous finissez par tracer les frontières des services avant de comprendre le domaine, c'est-à-dire précisément au moment où vous allez les tracer de travers.

Qu'est-ce qu'un monolithe modulaire ?

La troisième option, délibérément ennuyeuse : une seule application déployable avec des frontières internes de modules strictement appliquées. Elle conserve la simplicité opérationnelle du monolithe tout en construisant les coutures qui rendent un découpage futur possible — et c'est le choix par défaut recommandé par consensus pour la plupart des équipes, parce que des modules bien tracés peuvent être extraits en services plus tard, alors qu'un monolithe enchevêtré ne le peut pas.

Qu'est-ce qu'un monolithe distribué ?

L'anti-pattern qui combine le pire des deux mondes : des services physiquement séparés qui doivent être modifiés et déployés ensemble — généralement parce que les frontières ont été mal tracées ou que les services partagent une base de données. Vous payez les coûts opérationnels des microservices (appels réseau, orchestration, observabilité) tout en gardant le couplage du monolithe. C'est le mode d'échec le plus courant du découpage prématuré.

Quand faut-il découper un monolithe en microservices ?

Quand la coordination des déploiements — pas la taille du code — devient le goulot d'étranglement : plusieurs équipes qui font la queue sur un seul train de releases, des composants aux besoins de mise à l'échelle réellement divergents et des frontières de domaine qui ont cessé de bouger. Seuils pratiques issus de l'expérience de l'industrie : en dessous d'une dizaine de développeurs, le monolithe a presque toujours raison ; le découpage commence à se rentabiliser à partir de quinze développeurs et plus répartis en plusieurs équipes.

Comment les microservices gèrent-ils la cohérence des données ?

Difficilement — c'est le coût le moins mis en avant. Chaque service possède sa base de données, si bien que la transaction ACID qui tenait en une ligne dans le monolithe devient une saga : une séquence de transactions locales avec des rollbacks compensatoires, qui converge vers une cohérence à terme. Les workflows qui ont réellement besoin de mises à jour atomiques entre services sont le signe que ces services n'auraient pas dû être séparés.

Quel rapport entre la loi de Conway et ce choix ?

Tout — les systèmes finissent par refléter la structure de communication des organisations qui les construisent. Les microservices fonctionnent quand de petites équipes autonomes possèdent chacune un service de bout en bout ; l'architecture est autant un organigramme qu'un schéma. Une seule petite équipe qui adopte les microservices hérite de la surcharge de coordination de plusieurs équipes sans en avoir plusieurs.

Des entreprises sont-elles revenues des microservices au monolithe ?

Oui, et les études de cas sont instructives. L'équipe monitoring d'une grande plateforme vidéo a, de façon célèbre, refusionné ses microservices serverless en un seul processus et réduit ses coûts d'infrastructure d'environ 90 % — le passage des données entre les briques était la dépense dominante. D'autres équipes d'ingénierie ont consolidé des centaines de microservices en un seul service, en invoquant une surcharge de tests et de dépendances. La leçon n'est pas « les microservices ont tort », mais que le découpage doit payer sa propre surcharge.

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-09