System design : la trame en 6 étapes
En system design, on n'attend pas la bonne réponse mais une démarche : clarifier, dimensionner, proposer, arbitrer.
À retenir
- 1. Clarifier les besoins et les contraintes.
- 2. Estimer le volume (utilisateurs, requêtes/s, stockage).
- 3. Dessiner le schéma de base : client, API, base, cache.
- 4. Identifier le goulot d'étranglement.
- 5. Proposer une évolution (cache, réplicas, file).
- 6. Assumer les compromis à voix haute.
Cache
Le cache réduit la latence et la charge mais introduit l'invalidation. Explique ta stratégie : durée de vie, invalidation à l'écriture, ou les deux.
Mise à l'échelle
Verticale = machine plus grosse (simple, limitée). Horizontale = plus de machines (nécessite des services sans état et un répartiteur de charge).
Files de messages
Une file découple producteur et consommateur : elle absorbe les pics et permet les traitements asynchrones (emails, exports, notifications).
Pièges fréquents
- Dessiner une architecture complexe sans besoin.
- Oublier les pannes et la reprise.
- Ne jamais chiffrer la charge attendue.
Questions que le recruteur peut poser
- Comment scalerais-tu ce service à 10× le trafic ?
- Où mettrais-tu un cache ?
- Que se passe-t-il si la base tombe ?