Skip to main content
AI EducademyAIEducademy
🌳

Fondations IA

🌱
AI Seeds

Alphabétisation de l'IA pour le monde réel

🌿
AI Sprouts

Les fondements des systèmes intelligents

🌳
AI Branches

Construisez avec les capacités d’IA d’aujourd’hui

🏕️
AI Canopy

Ingénieur de systèmes GenAI fiables

🌲
AI Forest

Expédier les produits d’IA de manière responsable

🔨

Maîtrise IA

✏️
AI Sketch

Bases d'ingénierie pour les constructeurs d'IA

🪨
AI Chisel

Modèles pour résoudre des problèmes plus difficiles

⚒️
AI Craft

Concevoir des systèmes qui font évoluer l'IA

💎
AI Polish

Communiquer et diriger à l’ère de l’IA

🏆
AI Masterpiece

Votre pierre angulaire de l'IA de production

🚀

Prêt pour la Carrière

🚀
Rampe de lancement entretien

Naviguez sur le marché du travail en ingénierie de l'IA

🌟
Maîtrise comportementale

Racontez l'histoire de la façon dont vous créez un impact

💻
Entretiens techniques

Résoudre, concevoir et communiquer sous pression

🤖
Entretiens IA et ML

Préparez-vous aux entretiens modernes ML et GenAI

🏆
Offre et au-delà

Faites un prochain pas en toute confiance et en connaissance de cause

Voir tous les programmes→

Laboratoire

7 expériences chargées
🧠Terrain de jeu neuronal🤖IA ou humain ?💬Labo de prompts🎨Generateur d'images😊Analyseur de sentiment💡Constructeur de chatbot⚖️Simulateur d'ethique
🎯Entretien simuléEntrer dans le labo→
ParcoursBlogue
🎯
À propos

Rendre l’éducation à l’IA accessible à tous, partout

❓
Questions fréquentes

Réponses aux questions courantes

🧰
Outils IA

Une sélection d'outils que nous utilisons et recommandons

✉️
Contacter

Contactez-nous

⭐
Open source

Construit publiquement sur GitHub

Tarifs
Commencer
AI EducademyAIEducademy

© 2026 AI Educademy. Tous droits réservés.

Apprendre

  • Programmes
  • Leçons
  • Labo
  • Kit de démarrage IA
  • Tarifs

Communauté

  • GitHub
  • Contribuer
  • Code de conduite
  • À propos
  • Questions fréquentes

Soutien

  • Offrez-moi un café ☕
  • Conditions d'utilisation
  • Politique de confidentialité
  • Contacter
  • Sitemap
Programmes d'IA et d'ingénierie›⚒️ AI Craft›Leçons›Les fondamentaux du System Design - Les briques essentielles des systèmes scalables
🏗️
AI Craft • Avancé⏱️ 20 min de lecture

Les fondamentaux du System Design - Les briques essentielles des systèmes scalables

Pourquoi le System Design est important

Chaque application à grande échelle est construite à partir des mêmes briques fondamentales. Les recruteurs ne s'attendent pas à ce que vous inventiez une nouvelle technologie - ils veulent voir que vous savez sélectionner et combiner les bons composants pour un problème donné. Cette leçon couvre la boîte à outils que vous utiliserez dans chaque entretien de design.

Architecture Client-Server

À la base, le web suit un modèle simple : les clients envoient des requêtes, les servers les traitent, et les réponses reviennent. Mais les systèmes modernes ajoutent des couches entre ces deux points pour gérer le scale, la fiabilité et la performance.

Une requête typique peut traverser : client → CDN → load balancer → API gateway → application server → cache → database. Chaque couche résout un problème spécifique, et comprendre quand chaque couche est nécessaire distingue les bons candidats des moyens.

💡

En entretien, commencez toujours par esquisser le flux client-server de haut niveau avant d'entrer dans les détails. Cela démontre une réflexion structurée.

Load Balancers : Distribuer le trafic

Un server unique a une capacité limitée. Les load balancers distribuent les requêtes entrantes sur plusieurs servers grâce à des stratégies comme :

  • Round-robin - les requêtes sont réparties séquentiellement entre les servers
  • Least connections - dirige vers le server qui gère le moins de requêtes actives
  • Consistent hashing - associe les requêtes à des servers spécifiques selon une clé (utile pour le caching)

Les load balancers effectuent aussi des health checks, retirant automatiquement les servers défaillants du pool. Dans les environnements cloud, des services comme AWS ALB ou Azure Front Door gèrent cela de manière transparente.

🧠Vérification rapide

Un service de fil d'actualité reçoit 10 fois plus de lectures que d'écritures. Quelle approche de load balancing garantit le mieux que les utilisateurs atteignent systématiquement le même server avec un cache chaud ?

Caching : De la vitesse à chaque couche

Le caching stocke les données fréquemment consultées au plus près du consommateur. Il existe à plusieurs niveaux :

Leçon 1 de 100% terminé
←Retour au programme
Continuer : Concevoir un URL Shortener - Votre premier entretien de System Design→

Discussion

Connectez-vous pour rejoindre la discussion

Suggérer une modification de cette leçon

| Couche | Exemple | Latency | |--------|---------|---------| | Browser cache | Assets statiques, réponses API | ~0ms | | CDN | Images, fichiers CSS, JS | ~10-50ms | | Application cache | Redis, Memcached | ~1-5ms | | Database cache | Cache des résultats de requêtes | ~5-10ms |

La cache invalidation est célèbre pour être l'un des problèmes les plus difficiles en informatique. Les stratégies courantes incluent le TTL (time-to-live), le write-through (mise à jour du cache à chaque écriture) et le cache-aside (l'application gère le cache explicitement).

🤯

La célèbre citation de Phil Karlton - « Il n'y a que deux choses difficiles en informatique : la cache invalidation et nommer les choses » - est tellement citée qu'elle est devenue un passage obligé dans les entretiens de system design.

Databases : SQL vs NoSQL

Choisir la bonne database est l'une des décisions de design les plus déterminantes :

Les SQL databases (PostgreSQL, MySQL) offrent des transactions ACID, une strong consistency et des schemas structurés. Elles excellent quand les données ont des relations claires et que des requêtes complexes avec des jointures sont nécessaires.

Les NoSQL databases se déclinent en plusieurs catégories :

  • Document stores (MongoDB) - schemas flexibles, idéales pour des structures de données variées
  • Key-value stores (DynamoDB, Redis) - lookups ultra-rapides par clé
  • Wide-column stores (Cassandra) - throughput d'écriture massif, distribué par conception
  • Graph databases (Neo4j) - données riches en relations comme les réseaux sociaux
🧠Vérification rapide

Vous concevez un système qui stocke des profils utilisateurs avec des données semi-structurées qui changent fréquemment (des champs différents selon le type d'utilisateur). Quel type de database convient le mieux ?

Message Queues : Traitement asynchrone

Toutes les opérations n'exigent pas une réponse immédiate. Les message queues (RabbitMQ, Apache Kafka, AWS SQS) découplent les producteurs des consommateurs, permettant :

  • Traitement asynchrone - envoyer un e-mail après l'inscription sans bloquer la réponse
  • Load levelling - absorber les pics de trafic en mettant les requêtes en tampon
  • Fault tolerance - si un consommateur tombe en panne, les messages attendent dans la queue

Kafka mérite une mention spéciale : ce n'est pas qu'une simple queue mais un distributed event log, permettant des architectures event-driven où plusieurs consommateurs peuvent traiter indépendamment le même flux d'événements.

Architecture diagram showing client, load balancer, application servers, cache layer, database, and message queue
Les briques fondamentales d'un système scalable - chaque couche répond à un besoin spécifique.

Microservices vs Monolith

| Aspect | Monolith | Microservices | |--------|----------|---------------| | Deployment | Unité unique | Services indépendants | | Scaling | Tout est scalé ensemble | Scaling par service | | Complexité | Plus simple au départ | Overhead opérationnel | | Données | Database partagée | Database par service |

Commencez par un monolith, extrayez des microservices quand c'est nécessaire. La plupart des recruteurs apprécient les candidats qui reconnaissent que les microservices introduisent une complexité de système distribué (pannes réseau, cohérence des données, orchestration du deployment) et ne sont pas toujours le bon choix.

🤔
Think about it:

Netflix a migré d'un monolith vers des microservices sur plusieurs années. Mais Shopify - qui traite des milliards en transactions - fonctionne toujours sur un monolith modulaire. Quels facteurs pourraient rendre une approche meilleure que l'autre pour une entreprise donnée ?

Le CAP Theorem simplifié

Le CAP theorem stipule qu'un système distribué ne peut garantir simultanément que deux des trois propriétés suivantes :

  • Consistency - chaque lecture retourne l'écriture la plus récente
  • Availability - chaque requête reçoit une réponse
  • Partition tolerance - le système continue de fonctionner malgré les pannes réseau

Puisque les network partitions sont inévitables dans les systèmes distribués, le vrai choix se fait entre CP (consistency plutôt qu'availability) et AP (availability plutôt que consistency).

  • Systèmes CP (ex : HBase, MongoDB avec majority reads) - retournent des erreurs plutôt que des données obsolètes
  • Systèmes AP (ex : Cassandra, DynamoDB) - répondent toujours, mais les données peuvent être légèrement obsolètes
🧠Vérification rapide

Vous concevez un système de transactions bancaires où des soldes incorrects pourraient entraîner des pertes financières. Quel compromis CAP devez-vous privilégier ?

Le framework d'entretien

Lors d'un entretien de system design, suivez cette structure :

  1. Requirements - clarifiez les exigences fonctionnelles et non fonctionnelles (5 min)
  2. API design - définissez les endpoints ou interfaces clés (5 min)
  3. Data model - choisissez les databases et définissez les schemas (5 min)
  4. Architecture haut niveau - esquissez le système avec les briques d'aujourd'hui (10 min)
  5. Deep dives - scalez les bottlenecks, gérez les pannes, optimisez (15 min)
🤔
Think about it:

Pensez à un système que vous utilisez quotidiennement - Instagram, Uber ou Spotify. Pouvez-vous identifier quelles briques de cette leçon il utilise probablement ? Où se situerait le load balancer ? Qu'est-ce qui serait en cache ? Quel type de database conviendrait à son modèle de données ?

Points clés à retenir

  • Tout système scalable utilise les mêmes briques fondamentales - apprenez-les une fois, appliquez-les partout
  • Les load balancers, caches et message queues résolvent chacun des défis de scaling distincts
  • Le choix de database (SQL vs NoSQL) dépend de la forme des données, des besoins en consistency et des patterns d'accès
  • Le CAP theorem impose des compromis - sachez quel côté votre système doit favoriser
  • Suivez le framework structuré : requirements → API → data → architecture → deep dives

Prochaine leçon : nous appliquerons ces fondamentaux pour concevoir un URL shortener à partir de zéro.