Chapitre 1 · Leçon 2
Concevoir une plateforme éducative pour 1M d'utilisateurs
Section 1
Step 1
Avant tout design, clarifier les requirements fonctionnels et non-fonctionnels. Ce sont eux qui déterminent les choix d'architecture.
snippet.typescript
1/*
2 * USHER PLATFORM — System Design
3 *
4 * ── REQUIREMENTS FONCTIONNELS ─────────────────────────────────
5 *
6 * Utilisateurs :
7 * - Inscription / login (email + Google OAuth)
8 * - Profil avec progression
9 *
10 * Contenu :
11 * - Catalogue de tutoriels (texte + code + vidéo)
12 * - Navigation par catégorie et niveau
13 * - Recherche full-text
14 *
15 * Progression :
16 * - Marquer une leçon comme terminée
17 * - Progression par tutoriel en %
18 * - Certificat de complétion
19 *
20 * Admin :
21 * - CRUD tutoriels, chapitres, leçons
22 * - Analytics : vues, progressions, DAU
23 *
24 * ── REQUIREMENTS NON-FONCTIONNELS ────────────────────────────
25 *
26 * - 1M utilisateurs inscrits, 100K DAU
27 * - Latence p99 < 200ms pour les APIs de contenu
28 * - Disponibilité 99.9% (8.7h de downtime/an acceptable)
29 * - Cohérence éventuelle acceptable pour la progression
30 * (si un leçon est marquée complétée avec 2s de retard → OK)
31 * - Cohérence forte pour l'authentification et les paiements
32 * - Contenu rarement modifié (fortement cacheable)
33 *
34 * ── ESTIMATIONS ──────────────────────────────────────────────
35 * Lecture/écriture : 95% lecture, 5% écriture
36 * 100K DAU × 30 req/session = 3M req/jour = 35 req/s moyen
37 * Pic : 350 req/s (10× la moyenne)
38 * Stockage contenu : 5000 leçons × 20KB = 100MB (trivial)
39 * Stockage vidéo : 500 vidéos × 200MB = 100GB (CDN requis)
40 */Step 2
Design de l'architecture complète avec les raisons derrière chaque choix.