La question « monolithe ou microservices ? » est l'un des problèmes les plus mal répondus en génie logiciel. Peu de réponse car elle est presque toujours décidée par la mode, par le programme ou par l'imitation des grandes technologies, et presque jamais par le vrai problème que l'équipe a devant elle.
Ce texte s'adresse à ceux qui ont vraiment besoin de décider. Leaders techniques, CTO, chefs de produits confrontés au choix de l'architecture. Je ne défendrai pas un camp comme étant supérieur. Je vais montrer les cas d'utilisation pour chacun et vous fournir une liste de contrôle honnête pour que vous puissiez prendre la décision en fonction de votre contexte, et non de celui de Netflix.
La thèse est simple et impopulaire : pour la plupart des projets, la plupart du temps, le monolithe bien fait est le bon choix. Les microservices résolvent des problèmes spécifiques que de nombreuses équipes n'ont pas encore, et les adopter trop tôt est l'une des erreurs les plus coûteuses que vous commettiez.
Ce qu'est réellement chaque architecture
Monolith est le système construit comme une unité : une application, un déploiement, une banque principale. Tout est ensemble, étroitement intégré. Le mot a longtemps porté un ton injuste et péjoratif, monolithe n'est pas synonyme de désordre. Un monolithe mal organisé est un désastre. Bien organisé, c'est la simplicité.
Les microservices découpent le système en petits services indépendants, chacun possédant une capacité, communiquant via des interfaces. Ils gagnent en autonomie et en évolutivité granulaire au prix d’une complexité distribuée.
Le choix entre eux n’est pas technique dans l’âme. Il s'agit d'une décision commerciale : concernant la taille de l'équipe, la vitesse du changement, l'échelle et la tolérance à la complexité opérationnelle.
Cas d'utilisation où le monolithe gagne
monolithe est la bonne réponse le plus souvent.
Il gagne lorsque l'équipe est petite. Peu de développeurs travaillant dans un seul code se coordonnent naturellement, sans avoir à gérer des dizaines de services. Il gagne lorsque le produit en est à ses débuts, encore en train de déterminer ce qu'il est, car changer les frontières au sein d'un monolithe est trivial et changer les frontières entre les services est douloureux.
Il gagne lorsque l'échelle est modérée, la grande majorité des systèmes n'atteignent jamais le volume qui justifie la distribution. Et il gagne lorsque la simplicité opérationnelle compte : un déploiement, un endroit pour déboguer, une pile à maîtriser. Dans le secteur public et dans les équipes lean, cette simplicité est souvent ce qui garantit la continuité.
Cas d'utilisation où les microservices gagnent
Les microservices brillent dans des conditions spécifiques.
Ils gagnent lorsque l'équipe est grande et que plusieurs équipes doivent travailler en parallèle sans se bousculer, chaque propriétaire de son service et de son déploiement. Ils gagnent lorsqu'il y a une échelle très inégale, avec des parties du système nécessitant des ressources que d'autres n'ont pas, ne permettant que ce qui est nécessaire pour évoluer.
Ils gagnent lorsque différentes parties ont des besoins techniques divergents qui justifient des piles différentes. Et ils gagnent lorsque l'isolation des pannes est critique, lorsqu'une fonction ne peut, en aucun cas, en renverser une autre.
Remarquez le schéma : tous ces cas supposent un problème de taille. Grande équipe, grande échelle, grande complexité. Sans problème, la solution devient un poids mort.
La liste de contrôle de décision
Avant de choisir, répondez honnêtement. Plus il y a de « oui » pour le deuxième groupe, plus la balance penche vers les microservices.
Signe en faveur de monolithe. L'équipe est-elle inférieure, disons, à une douzaine de personnes ? Le produit valide-t-il toujours ce qu'il est ? L’échelle actuelle est-elle confortable pour un seul système ? L'équipe a-t-elle peu d'expérience avec les systèmes distribués ? La simplicité opérationnelle et les faibles coûts d’infrastructure sont-ils une priorité ? Si la majorité est « oui », restez avec le monolithe.
Des signes en faveur des microservices. Plusieurs équipes se croisent sur le même code et les déploiements deviennent une file d'attente ? Y a-t-il des pièces dont l'échelle est radicalement différente ? Y a-t-il un réel besoin de différentes piles ? Les pannes doivent-elles être isolées en raison des exigences de l’entreprise ? L'organisation a-t-elle déjà une maturité en observabilité, automatisation et fonctionnement distribué ? Si la majorité est « oui », la migration commence à se justifier.
La question qui résume la checklist
Si vous n'avez besoin que d'une seule question : « Quelle douleur concrète les microservices résoudraient-ils pour moi cette semaine ?" Si la réponse est vague, « devenir plus moderne », « préparer l’avenir », vous n’en avez pas encore besoin. Si c'est spécifique et douloureux, vous en avez peut-être besoin.
La voie du milieu que peu de gens envisagent
La maturité exige de parler d’une troisième voie. La décision doit rarement être binaire et définitive.
Pour la plupart, la voie la plus judicieuse est le monolithe modulaire : un système unique, mais organisé en interne en modules avec des limites claires, comme s'il s'agissait de services qui n'avaient pas encore été séparés. Vous bénéficiez de la simplicité opérationnelle du monolithe et, lorsqu'un module spécifique doit réellement devenir un service, l'extraction est beaucoup plus facile car la frontière existe déjà.
Cette voie évite les deux erreurs opposées : la boule de boue monolithique, impossible à séparer par la suite, et l'explosion prématurée des microservices qui étouffe une petite équipe. Commencez simplement, gardez les limites claires et laissez l’architecture évoluer sous une réelle pression.
Réflexion : le coût caché d'un mauvais choix
Les deux erreurs ont un coût, mais elles sont différentes.
Choisir un monolithe quand on en a besoin microservices crée des frictions de coordination et des limites d'échelle, de vrais problèmes, mais ils apparaissent progressivement et laissent le temps de réagir. Choisir des microservices trop tôt crée une complexité distribuée immédiate : la petite équipe se noie dans la mise en réseau, la cohérence des données et le débogage distribué, et perd des mois à construire une infrastructure plutôt qu'un produit. Cette erreur a tendance à être plus mortelle, car elle consomme la ressource la plus rare pour ceux qui débutent : le temps.
Clôture
Monolith versus microservices n'est pas un débat sur la meilleure architecture. Il s'agit de savoir quel problème vous avez. Sans problème d’échelle, d’équipe ou d’isolement, les microservices ne constituent pas une avancée, mais une sophistication qui coûte cher et offre peu.
Une décision mûrie commence simplement et évolue selon la demande. Un bon leader technique résiste à la tentation de construire pour un avenir qui pourrait ne jamais arriver et choisit l'architecture qui répond aux problèmes d'aujourd'hui sans fermer les portes de demain.
Si vous êtes actuellement à la croisée des chemins, cela vaut la peine de parcourir honnêtement la liste de contrôle avant de prendre une décision. J'ai d'autres articles de blog sur l'architecture des microservices, l'évolutivité et les cas d'utilisation, et si vous souhaitez détailler votre scénario spécifique, c'est le genre de conversation qui vaut la peine d'avoir.
A lire aussi
- Les microservices dans les applications : des cas d'usage qui apparaissent dans la vie quotidienne -Monolith Vs Microservices - Cas d'utilisation avec exemples
- Monolith vs Microservices : quelle architecture choisir
- Monolith vs Microservices : cas d'utilisation en pratique -Evolutivité de l'application : stratégies et liste de contrôle avant de croître
- Microservices dans les applications : architecture distribuée pour mobile
