L’architecture client-serveur est un modèle de communication réseau dans lequel deux entités jouent des rôles distincts et complémentaires :
- Le client : entité (logicielle ou matérielle) qui initie une demande de service ou de ressource.
- Le serveur : entité qui écoute les requêtes, les traite, et renvoie une réponse.
Principe fondamental
Le client consomme, le serveur fournit.
Caractéristiques essentielles
- Asymétrie des rôles : le client ne répond pas aux serveurs ; le serveur n’initie pas de connexion.
- Centralisation partielle : un serveur peut servir de nombreux clients (1 → N).
- Protocoles standardisés : HTTP, FTP, SMTP, etc., définissent comment dialoguer.
- Séparation des responsabilités : interface utilisateur (côté client) vs logique métier et données (côté serveur).
Exemples concrets
| Contexte | Client | Serveur |
|---|---|---|
| Web | Navigateur (Firefox) | Serveur web (Apache, Nginx) |
| Thunderbird | Serveur IMAP/SMTP (Gmail, ProtonMail) | |
| Base de données | Application PHP | MySQL, PostgreSQL |
| CMS | WP-CLI (outil en ligne de commande) | Site WordPress hébergé |
Enjeux modernes
- Fiabilité : si le serveur tombe, tous les clients sont affectés.
- Évolutivité : le serveur doit gérer la charge (mise à l’échelle horizontale/verticale).
- Sécurité : le serveur est une cible privilégiée (attaques DDoS, injections, etc.).
- Latence : la performance dépend de la distance réseau entre client et serveur.
Dans les architectures modernes (cloud, microservices, edge computing), le modèle client-serveur reste dominant même si certains composants adoptent des schémas pair-à-pair ou serverless.
Synonymes / termes associés
Communication requête-réponse
Modèle client-serveur