C'est la rentrée. Lancez votre app — devis gratuit sous 24 h au 07 56 84 91 14

Accueil/Blog/Tech

Quelle architecture backend quand on ne sait pas encore si on va scaler

Monolithe, microservices ou serverless : les critères réels pour choisir l’architecture backend d’une jeune application, sans se punir dans 18 mois.

Structure modulaire en couches, connectée par des flux lumineux

À retenir

  • Commencez par un monolithe modulaire : c’est le choix qui coûte le moins cher à changer d’avis.
  • Les microservices résolvent un problème d’organisation, pas un problème de charge.
  • Une base de données relationnelle correctement indexée tient bien plus loin qu’on ne le croit.
  • Le serverless est excellent pour les charges irrégulières, coûteux pour un trafic constant.
  • Découpez quand une équipe distincte a besoin de livrer indépendamment, pas avant.

« On part sur des microservices, comme ça on sera prêts à scaler. » Cette phrase a coûté plus cher à plus de jeunes entreprises que n’importe quelle erreur de marché.

Elle part d’une bonne intention et repose sur une confusion : les microservices ne résolvent pas un problème de charge, ils résolvent un problème d’organisation. Tant que vous n’avez pas ce problème d’organisation, ils ne vous apportent que leur coût.

Les trois architectures, honnêtement

Monolithe modulaireMicroservicesServerless
Coût de démarrageFaibleÉlevéFaible
Complexité opérationnelleFaibleÉlevéeMoyenne
Vitesse de développement au débutRapideLenteRapide
Coût à trafic constantPrévisiblePrévisibleÉlevé
Coût à trafic irrégulierMoyenMoyenTrès faible
DébogageSimpleDifficileMoyen
Nombre d’équipes supporté1 à 3Plusieurs1 à 3

Pourquoi le monolithe modulaire gagne au départ

Un monolithe modulaire, c’est une seule application déployée d’un bloc, mais organisée en modules aux frontières nettes : chaque module possède ses données, expose une interface explicite, et n’accède jamais directement aux tables d’un autre.

C’est le meilleur compromis pour trois raisons.

Il coûte le moins cher à changer d’avis. Un module bien isolé s’extrait en microservice en quelques semaines quand le besoin apparaît réellement. L’inverse — recoller trois microservices prématurés — est beaucoup plus douloureux.

Il se débogue. Une trace d’exécution complète dans un seul processus, contre une enquête distribuée sur cinq services et une file de messages. Sur un produit jeune qui change tous les jours, cette différence se compte en semaines par trimestre.

Il se déploie. Un pipeline, un artefact, une base. La charge opérationnelle d’un système distribué est un travail à temps partiel que personne n’a budgété.

Le signal réel du découpage : deux équipes distinctes ne peuvent plus livrer sans se coordonner, ou un composant précis a besoin d’être mis à l’échelle indépendamment (traitement vidéo, calcul lourd, ingestion massive). Tant qu’aucun des deux n’est vrai, découper coûte sans rapporter.

Les décisions qui comptent vraiment

Le débat d’architecture masque souvent les choix qui déterminent réellement votre capacité à tenir la charge.

La base de données

Une base relationnelle unique, avec des index posés sur les bons champs et des requêtes surveillées, tient beaucoup plus loin que la réputation ne le laisse croire. Les problèmes de performance que nous rencontrons viennent presque toujours de trois causes, jamais du choix de moteur :

  • des requêtes en boucle qui font des centaines d’allers-retours là où une seule suffirait ;
  • des index manquants sur des colonnes filtrées à chaque requête ;
  • des colonnes volumineuses chargées systématiquement alors qu’elles sont rarement lues.

Les frontières entre modules

C’est la décision la plus structurante et la moins coûteuse à prendre correctement dès le premier jour. Si le module « facturation » lit directement les tables du module « utilisateurs », vous avez un monolithe spaghetti, et aucune architecture ne vous sauvera plus tard.

Ce qui se passe quand un appel externe échoue

Délai maximal, nombre de tentatives, comportement en cas d’indisponibilité prolongée. C’est ce qui distingue un système qui ralentit d’un système qui s’effondre — et cela n’a rien à voir avec le nombre de services.

1Nombre de bases de données nécessaires au démarrage
3Nombre d’équipes au-delà duquel le découpage devient utile
≈ 80 %Des problèmes de performance causés par des requêtes, pas par l’architecture

Quand le serverless est le bon choix

Il l’est vraiment dans trois situations :

  1. Charge très irrégulière : un pic quotidien court, des périodes creuses longues. Vous ne payez que l’usage réel.
  2. Traitements ponctuels : génération de documents, redimensionnement d’images, tâches planifiées, réactions à des événements.
  3. Équipe sans compétence opérationnelle : personne pour administrer un serveur, et pas de budget pour cela.

Il l’est beaucoup moins pour une API sollicitée en permanence : à trafic constant, la facture dépasse rapidement celle d’un serveur correctement dimensionné, et les temps de démarrage à froid dégradent l’expérience.

La bonne architecture n’est pas celle qui supportera dix millions d’utilisateurs. C’est celle qui vous permettra d’en servir mille correctement, tout en restant modifiable quand vous découvrirez ce que veulent vraiment les dix millions suivants.

Notre recommandation par défaut

Pour un produit jeune, avec une équipe de un à cinq développeurs :

  • Un monolithe modulaire dans un langage que l’équipe maîtrise, avec des frontières de modules explicites et vérifiées en revue de code.
  • Une base relationnelle unique, avec les migrations versionnées et les requêtes lentes journalisées dès le premier jour.
  • Du serverless pour les tâches asynchrones : envois d’emails, traitements d’images, exports.
  • Un déploiement automatisé en une commande, dès la première semaine — le sujet de notre article sur la mise en place d’un CI/CD.

Cette pile ennuyeuse a un immense avantage : elle vous laisse toute votre énergie pour le seul problème qui décidera de votre sort, qui est de savoir si quelqu’un veut votre produit.

55 · agency

Studio produit, design & ingénierie — Paris · Nice · Lyon

Depuis 2013, 55 · agency conçoit et développe des applications mobiles, des sites web et des produits IA pour des startups, des PME et des grands comptes, depuis Paris, Nice et Lyon.

FAQ

Questions fréquentes

À partir de combien d’utilisateurs faut-il passer aux microservices ?

Le nombre d’utilisateurs n’est pas le bon critère. On découpe quand plusieurs équipes se gênent mutuellement dans le même dépôt, ou quand un composant précis a des besoins de mise à l’échelle radicalement différents du reste. Des applications servant des millions d’utilisateurs tournent très bien en monolithe.

PostgreSQL suffit-il pour une application en croissance ?

Dans l’immense majorité des cas, oui, et bien plus longtemps que ce que la plupart des équipes imaginent. Correctement indexée, avec des requêtes surveillées et un cache devant les lectures fréquentes, une base relationnelle unique tient des dizaines de milliers d’utilisateurs actifs sans difficulté.

Le serverless est-il moins cher ?

Pour une charge irrégulière ou faible, oui, souvent nettement. Pour un trafic constant et soutenu, il devient plus cher qu’un serveur dimensionné correctement, parfois d’un facteur trois à cinq. Le vrai gain du serverless est opérationnel : pas de serveur à administrer.

Peut-on migrer d’un monolithe vers des microservices plus tard ?

Oui, à condition d’avoir construit un monolithe modulaire : des modules aux frontières nettes qui communiquent par des interfaces explicites. Extraire un module bien isolé prend quelques semaines. Découper un monolithe spaghetti prend un an.

À lire ensuite
Prêt à démarrer ?

Parlons de votre prochain projet.

Échange de 30 minutes, gratuit et sans engagement. Vous repartez avec une vision claire et chiffrée de votre projet.