Question 1Dans quelle couche places-tu le traitement qui vérifie si des réservations se chevauchent sur la même heure ?
Le modèle Web à trois couches — la répartition entre Web, application et base de données
Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
Frontend et backend sont deux autres noms pour l'une des trois couches : Web, application et base de données. Des schémas montrent comment une requête traverse les couches.
Cet article traite du modèle Web à trois couches.
C'est une façon de voir une application web comme trois rôles : Web, application et base de données.
Le frontend et le backend des livres pour débutants sont d'autres noms pour l'une de ces trois couches.
Le texte emploie les noms complets ; faute de place, les schémas abrègent en couche Web, couche App et couche BDD.
Le modèle à trois couches découpe une seule application en rôles Web, application et base de données
Le modèle à trois couches (three-tier architecture : une structure bâtie sur trois rôles, Web, application et base de données) est la forme de base d'une application web, et chacune des parties séparées s'appelle une couche (tier).
| Nom dans cet article | Terme anglais | Ce dont elle s'occupe | Nom dans les livres pour débutants |
|---|---|---|---|
| Couche serveur Web | presentation tier | Renvoie les fichiers de l'écran | Frontend |
| Couche App | application tier | Décide et calcule | Backend |
| Couche BDD | data tier | Stocke et lit les données | Base de données |
Les fichiers renvoyés par la couche serveur Web sont exécutés par le navigateur de l'utilisateur, qui dessine l'écran.
La structure elle-même — en quelles parties tu découpes une application et comment tu les relies — est l'architecture, et l'« architecture trois couches » des livres pour débutants désigne la même chose que le modèle à trois couches de cet article.
- Affiche le formulaire et la liste des réservations
- Reçoit une saisie du type 12/24 18:00, 2 personnes
- S'exécute dans le navigateur de l'utilisateur
- Vérifie si le 12/24 18:00 est libre
- Confirme la réservation et renvoie le résultat à la couche serveur Web
- S'exécute sur le serveur
- Enregistre les réservations et les données des membres
- Lit et renvoie les enregistrements demandés
- Se trouve sur le serveur de base de données
Les trois couches vont du haut vers le bas, de la plus proche de l'utilisateur à la plus éloignée.
La seule chose que l'utilisateur manipule directement est l'écran renvoyé par la couche serveur Web, les deux autres restent invisibles.
L'écran renvoyé par la couche serveur Web s'exécute dans le navigateur, un par utilisateur.
Avec trois utilisateurs il y a trois écrans, et les trois se partagent les deux couches restantes.
Les trois écrans de gauche tournent chacun sur un ordinateur ou un téléphone différent.
Entre A et B, qui ont choisi la même heure, celui qui est traité en second se voit refuser sa réservation parce que les enregistrements sont regroupés dans une seule couche base de données.
Quel que soit le nombre d'écrans, il n'y a qu'une destination et qu'un seul jeu d'enregistrements.
Le modèle à trois couches répartit le travail à l'intérieur d'une seule application
Le modèle à trois couches est une façon de découper une seule application en trois responsabilités : Web, application et base de données.
Le frontend des livres pour débutants correspond à la couche serveur Web et le backend à la couche serveur d'application ; l'écran renvoyé par la couche serveur Web existe en un exemplaire par utilisateur, tandis qu'une seule couche serveur d'application et une seule couche base de données servent tout le monde.
Pourquoi découper en couches — un seul endroit à corriger, un seul endroit pour décider pour tous
Il y a deux raisons de découper.
La première : quand tu veux changer quelque chose, l'endroit à corriger tient dans une seule couche.
Si c'est découpé, la seule chose que tu touches est un fichier de la couche serveur Web.
Si tout est d'un seul bloc, tu cherches d'abord l'endroit qui fixe la couleur, puis tu revérifies que les traitements sans rapport fonctionnent toujours.
La seconde : il faut un endroit qui juge les demandes de tout le monde ensemble et qui enregistre le résultat.
L'écran renvoyé par la couche serveur Web s'exécute dans le navigateur d'un seul utilisateur et ignore ce que les autres ont saisi.
Les règles de ces décisions propres à l'application forment la logique métier (business logic), et elles se placent dans la couche serveur d'application.
- Si le champ de date a été envoyé vide
- Si le nombre de personnes est bien un nombre
- Peut prévenir sur place, avant l'envoi
- Si des réservations se chevauchent au 12/24 18:00
- Si le membre dépasse son nombre de réservations
- Peut décider après avoir lu les enregistrements de tous
Même l'écran renvoyé par la couche serveur Web vérifie certaines choses, comme le fait que le champ de date ne soit pas vide.
Mais cette vérification est faite par un fichier arrivé dans le navigateur de l'utilisateur, donc celui-ci peut le modifier ou sauter la vérification.
C'est pourquoi la couche serveur d'application vérifie les mêmes choses une seconde fois.
Prenons le cas où deux personnes envoient le même 12/24 18:00 au même moment, et comparons comment le résultat change selon la couche où l'on place cette décision.
La différence est ce que l'on regarde au moment de décider.
Le côté écran ne regarde que la liste de son propre navigateur, tandis que la couche serveur d'application lit les enregistrements de tout le monde avant de décider.
Côté écran, les utilisateurs A et B ne voient chacun que leur propre liste, donc tous les deux concluent que le créneau est libre.
Dans la couche serveur d'application, toutes les requêtes arrivent au même endroit et elle peut lire les enregistrements puis vérifier les demandes une par une.
Découper, c'est pour l'endroit où l'on corrige et l'endroit où l'on décide
Si tu as découpé en couches, tu n'as qu'un seul endroit à toucher quand tu veux corriger quelque chose.
L'autre raison est qu'il faut voir et décider pour tout le monde au même endroit : comme les écrans sont séparés par utilisateur, ils ne savent pas ce que les autres ont envoyé.
Comment les données traversent les couches avant qu'une réservation soit enregistrée
La couche serveur Web et la couche serveur d'application sont reliées par des requêtes et des réponses ; la couche serveur d'application et la couche base de données sont reliées par des ordres de lecture et d'écriture.
| Couche | Ce qu'elle y fait | Destinataire | Ce qu'elle transmet |
|---|---|---|---|
| Couche Web | Reçoit la saisie | Couche App | 12/24 18:00, 2 personnes |
| Couche App | Vérifie si c'est libre | Couche BDD | Ordre de lire les réservations du jour |
| Couche BDD | Lit les enregistrements | Couche App | 0 réservation le 12/24 |
Chaque couche fait uniquement son travail et passe à la suivante.
La couche serveur Web ne se connecte jamais directement à la couche base de données ; la couche serveur d'application se place toujours entre les deux.
Une fois les enregistrements revenus de la couche base de données, la couche serveur d'application décide du résultat.
Quelle que soit la branche, une seule réponse repart vers la couche serveur Web.
Ces trois couches sont la forme de base retenue dans cet article, et les applications réelles comportent des exceptions.
Certaines configurations se connectent directement à un service externe au lieu de construire soi-même une couche serveur d'application, et dans d'autres la couche serveur d'application est découpée en plusieurs morceaux.
Même là, tu peux les lire en te demandant laquelle des trois — Web, application ou base de données — chaque partie prend en charge.
Un seul chemin, à l'aller et au retour
La saisie de l'utilisateur descend de la couche serveur Web vers la couche serveur d'application, puis vers la couche base de données, et revient par le même chemin.
La couche serveur Web ne se connecte jamais directement à la couche base de données : la couche serveur d'application lit les enregistrements, décide du résultat et ne renvoie qu'une seule réponse.
Quelle partie de ton application est quelle couche — trois couches ne veut pas dire trois machines
Décide d'abord à quelle couche appartient chaque fichier et chaque framework d'un livre pour débutants, et les étapes prennent du sens.
La couche serveur Web, ce sont les mêmes fichiers dans les deux cas.
Ce que le navigateur peut lire directement, c'est HTML, CSS et JavaScript, donc tu ne choisis un langage qu'à partir de la couche serveur d'application.
Une couche est une façon de répartir des rôles, pas un nombre d'ordinateurs.
- Ouvrir http://localhost:3000 affiche le formulaire de réservation
- Lit index.html et script.js et dessine l'écran
- Lancé avec node server.js
- Attend sur le port 3000 et reçoit les requêtes
- Enregistre les réservations et les données des membres dans reserve.db
- Tourne sur le même ordinateur
Quand tu ouvres http://localhost:3000 sur ta machine, les trois couches sont toutes dans cet ordinateur.
Une fois en ligne, les couches sont souvent placées sur des serveurs séparés, et ce travail est traité dans l'article « Déploiement et variables d'environnement — de ce qui marche chez toi à la mise en ligne ».
Seul l'écran renvoyé par la couche serveur Web s'exécute sur l'appareil de l'utilisateur ; la couche serveur d'application et la couche base de données sont du côté du serveur public.
Même si tu déplaces la couche base de données sur une autre machine, la relation ne change pas : la couche serveur d'application lui envoie des ordres de lecture et d'écriture.
Le nombre de couches et le nombre d'ordinateurs sont deux choses différentes
Être découpé en trois couches ne veut pas dire que trois ordinateurs tournent.
Sur ta machine, les trois sont dans ton ordinateur ; une fois en ligne, les couches sont souvent placées sur des serveurs séparés.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Qu'est-ce qui circule entre la couche serveur Web et la couche serveur d'application ?
Question 3Tu ouvres http://localhost:3000 sur ta machine et tu fais aussi tourner la base de données sur ton ordinateur. Où sont les trois couches ?