Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-002 - Architecture monolithe modulaire

  • Statut : Accepté
  • Date : 2026-04-05

Contexte

Le projet est développé sur une durée courte avec une équipe restreinte. Le périmètre fonctionnel est bien défini (gestion de parcelles, missions de drone, marketplace) et ne nécessite pas de distribution complexe des services. Le choix architectural doit permettre un développement rapide tout en maintenant une bonne séparation des responsabilités.

Décision

Nous choisissons une architecture monolithique modulaire : un seul serveur Fastify avec une organisation interne par domaines métier via les packages oRPC (packages/api).

Alternatives considérées

  • Microservices : indépendance de déploiement par service, mais complexité opérationnelle (service discovery, communication inter-services, monitoring distribué) inadaptée à la taille du projet
  • Architecture serverless : coûts maîtrisés à faible charge, mais cold starts et difficulté de débogage local
  • Monolithe non structuré : développement encore plus rapide initialement, mais dette technique rapide et difficultés de maintenabilité

Conséquences

  • Développement et débogage plus rapides (un seul process à lancer)
  • Déploiement simplifié (un seul artefact serveur)
  • Moins de complexité opérationnelle
  • Bonne séparation des responsabilités via les routers oRPC par domaine
  • Moins scalable horizontalement qu’une architecture microservices — acceptable pour le volume actuel
  • Un bug critique dans un module peut affecter l’ensemble du serveur
  • Migration vers des microservices rendue plus difficile si le besoin émerge, bien qu’atténuée par la modularité interne