Builder d'Architecture

Construisez une architecture logicielle étape par étape en choisissant les composants, les couches et les connexions selon les exigences du système.

Objectif

Dans ce laboratoire, vous allez concevoir une architecture logicielle à partir de zéro. Vous partirez d’un ensemble d’exigences métier et techniques, et vous devrez choisir les composants, les couches et les connexions qui résolvent le mieux le problème posé.

L’objectif n’est pas d’arriver à « la bonne réponse » — mais de pratiquer le processus de prise de décisions architecturales avec discernement.

Scénario : Plateforme d’e-commerce

Imaginez qu’on vous demande de concevoir l’architecture d’une plateforme de commerce électronique répondant aux exigences suivantes :

  • Utilisateurs concurrents : jusqu’à 10 000 simultanés
  • Catalogue : 50 000 produits avec recherche et filtres
  • Paiements : intégration avec au moins 2 prestataires externes
  • Notifications : email et push en temps réel
  • Disponibilité : 99,9 % d’uptime

Étape 1 — Choisir le style architectural

Avant de penser aux technologies, définissez le style général :

StyleAvantagesInconvénientsQuand le choisir ?
Monolithe modulaireSimple à déployer, facile à déboguerMise à l’échelle limitée, couplage internePetites équipes, MVP
MicroservicesMise à l’échelle indépendante, déploiement autonomeComplexité opérationnelle, latence réseauGrandes équipes, domaines clairs
HybrideÉquilibre entre simplicité et scalabilitéExige de la discipline sur les frontièresCroissance progressive

Exercice

Compte tenu du scénario, quel style choisiriez-vous ? Prenez en compte :

  1. La taille de l’équipe disponible
  2. Le besoin de mettre à l’échelle des composants de façon indépendante (catalogue vs paiements)
  3. La complexité opérationnelle que vous pouvez assumer

Étape 2 — Définir les couches du système

Une fois le style choisi, définissez les couches principales :

Couche de présentation

  • SPA, SSR ou site statique ?
  • Avez-vous besoin d’un BFF (Backend for Frontend) ?
  • Comment gérez-vous l’authentification côté frontend ?

Couche applicative

  • De combien de services avez-vous besoin ?
  • Comment communiquent-ils entre eux (sync vs async) ?
  • Où réside la logique métier critique ?

Couche de données

  • Une base de données ou plusieurs ?
  • SQL, NoSQL ou les deux ?
  • Avez-vous besoin d’un cache ? Où ?

Couche d’infrastructure

  • Cloud, on-premise ou hybride ?
  • Conteneurs, serverless ou VMs ?
  • Comment gérez-vous les secrets et la configuration ?

Étape 3 — Connecter les composants

Définissez comment communiquent les différentes pièces :

[Frontend SPA]


[API Gateway / BFF]

    ├──► [Service de Catalogue] ──► [PostgreSQL + Redis Cache]

    ├──► [Service de Commandes] ──► [PostgreSQL]
    │         │
    │         ▼
    │    [Event Bus]
    │         │
    │         ├──► [Service de Paiements] ──► [Prestataire Externe]
    │         └──► [Service de Notifications] ──► [Email/Push]

    └──► [Service d'Auth] ──► [Redis Sessions]

Questions clés

  • Que se passe-t-il si le service de paiements ne répond pas ?
  • Comment garantissez-vous qu’une commande ne soit pas traitée deux fois ?
  • Où implémentez-vous les circuit breakers ?
  • Comment gérez-vous la cohérence à terme (eventual consistency) entre les services ?

Étape 4 — Évaluer les compromis

Toute décision architecturale comporte des compromis. Documentez les vôtres :

DécisionCompromis acceptéAtténuation
Microservices pour le catalogue et les paiementsComplexité opérationnelle accrueKubernetes + CI/CD automatisé
Event bus pour la communication asyncCohérence à termeIdempotence + retry avec backoff
Redis comme cache du catalogueDonnées potentiellement obsolètes (stale)TTL de 5 minutes + invalidation par événements
PostgreSQL pour les données transactionnellesMise à l’échelle verticale limitéeRead replicas + partitionnement

Étape 5 — Valider par rapport aux exigences

Vérifiez que votre architecture satisfait chaque exigence initiale :

  • Supporte-t-elle 10 000 utilisateurs concurrents ? Où se situe le goulot d’étranglement ?
  • La recherche dans le catalogue est-elle rapide ? Utilisez-vous des index ou un moteur de recherche ?
  • Les paiements sont-ils résilients face aux pannes du prestataire ?
  • Les notifications arrivent-elles en temps réel ?
  • Pouvez-vous atteindre 99,9 % d’uptime avec cette architecture ?

Réflexion

En terminant, posez-vous ces questions :

  1. Quelle décision a été la plus difficile ? Pourquoi ?
  2. Que changeriez-vous si l’équipe comptait 3 personnes au lieu de 15 ?
  3. Que changeriez-vous si les exigences de disponibilité étaient de 99,99 % ?
  4. Y a-t-il un composant que vous pourriez supprimer sans perdre de fonctionnalité critique ?

L’architecture parfaite n’existe pas — mais une architecture bien raisonnée et bien documentée est inestimable.