HTTP, MPA, SPA et SSR

Chapitre 3

Acteurs du Web
04:18

La particularité du Web est qu'elle réside sur une architecture client-serveur.

Client/Serveur

Ceci requiert une connectivité permanente mais donne également énormément de possibilités.

Par exemple, ChatGPT requiert une puissance de calcul gigantesque (258 000 cores de processeurs pour GPT-3) mais est accessible via n'importe quel ordinateur ou smartphone.

Le client
04:18

Definition (Client)

Programme qui effectue des requêtes HTTP pour accéder à un service ou une ressource fourni par un serveur.

Example

  • Le navigateur de votre ordinateur ou smartphone
  • L'application calendrier sur votre téléphone
  • Dropbox, Google Drive
  • Un programme/script qui accède à des ressources sur le Web

Remark

Par abus de langage, nous utiliserons parfois le terme client pour désigner l'ordinateur sur lequel tourne le navigateur.

Le serveur
04:18

Server room

Definition (Serveur)

Le serveur est un programme qui écoute sur le réseau et qui répond aux requêtes HTTP des clients.

Analogie douteuse: cuisiniers du McDonalds

Le protocole HTTP
04:18

Definition

Le protocole HTTP est le standard qui dictent comment serveurs et clients communiquent.

Clients et serveurs communiquent par message structuré (première ligne, l'en-tête, corps).

Messages HTTP

Méthodes HTTP
04:18

Voici les principales méthodes HTTP

GET
Demande de récupération de données (par défaut)
POST
Envoi de données via un formulaire
DELETE
Demande de suppression
PATCH
Demande de modification partielles
PUT
Demande de modification

Pour plus de détails, vous pouvez visiter la documentation

Remark

Ceci est ce qui se passe en théorie. En pratique, le programmeur backend n'est pas obligé d'honorer ces conventions.

Codes Réponse
04:18

  • Réponses informatives (100-199)
  • Réponses de succès (200-299)
  • Messages de redirection (300-399)
  • Erreurs Client (400-499)
  • Erreurs serveur (500-599)

Examples

200 OK
La requête a réussi
403 Forbidden
Le client n'a pas les droits d'accès au contenu
404 Not Found
Le serveur n'a pas trouvé la ressource demandée

Pour plus d'information, consultez la documentation

Requêtes GET
04:18

Definition (Requête GET)

Une requête GET est une demande faite par un client au serveur de consulter une ressource à une URL donnée. Le serveur y répond ou renvoie une erreur.

Examples

  • Consulter une page
  • Consulter une image

Requêtes POST
04:18

Definition (Requête POST)

Une requête POST est utilisée par un client pour envoyer des données supplémentaires au serveur.

Examples

  • Envoi de formulaire

Stateless
04:18

Dory

Le protocole HTTP est comme Dory, il oublie les requêtes des clients dès qu'il les a traitées.

Remark

Le protocole HTTP est stateless: les requêtes sont traitées indépendemment des requêtes précédentes et les communications sont coupées dès qu'elles sont terminées.

Le client doit rappeler à chaque requête qui il est via ce qu'on appelle des cookies (dans quelques slides)

Cookies
04:18

L'idée des cookie est que le client rappelle au serveur qui il est à chaque requête parce que le serveur a oublié (une promenade en mer, une promenade en mer).

Definition (Cookie)

Un cookie est un bloc de données créé par le serveur et utilisé pour les requêtes suivantes jusqu'à son expiration.

Cookie HTTP

Cookies: diagramme de séquence
04:18

Cookies: Authentification
04:18

Question

Comment implémenter l'authentification si le protocole est stateless?

Cookies: Tracking
04:18

Le tracking est le business model du Web. Les géants du Web ont pratiquement votre historique complet.

Cryptographie asymétrique
04:18

La sécurité du Web fonctionne sur la cryptographie asymétrique.

Cryptographie asymétrique
  • Deux clés inverses l'une de l'autre: un message crypté avec l'un peut être déchiffré avec l'autre.
  • Objectifs:
    • Confidentialité
    • Authentification de l'expéditeur
  • Le nom public/privé vient de si cette clé est partagée ou non.

HTTPS
04:18

Les requêtes HTTP sont lisibles par toute personne qui se trouve sur le réseau entre le client et le serveur. En particulier, une personne peut lire vos mots de passe et données bancaires.

Différentes architectures
04:18

Il existe plusieurs manières de créer un site ou une application web. La décision qui différencie ces architectures est la répartition du travail entre serveur et client.

  1. Sites statiques
  2. MPA
  3. SPA
  4. SSR

Sites statiques
04:18

Dans un site statique, le serveur ne traite généralement que les requêtes GET. Les chemins de l'URL font référence à un chemin sur le disque dur du serveur relativement à un dossier racine.

En particulier, on n'a pas accès à des base de données, on ne peut pas traiter de formulaires, etc.

Applications
04:18

Pour fournir une expérience personnalisée à l'utilisateur, nous voulons que la page soit potentiellement différente pour chaque utilisateur. On parle alors d'application.

Definition

Une application web utilise un programme pour répondre aux requêtes.

Nous distinguerons deux types d'application:

  • MPA
  • SPA

SPA vs MPA
04:18

La distinction SPA/MPA se fait sur le nombre de pages que comporte l'application.

  • Si l'application a une page, c'est une SPA.
  • Si l'application a plusieurs page, c'est une MPA.

Remark

Ce critère n'est pas aussi simple qu'il en a l'air, puisque les SPA font souvent semblant de se comporter comme des MPA. Les applications plus complexes et plus interactives ont tendance à être des SPA.

Idea

Le but d'une SPA est de se comporter plus comme un "vrai" programme natif, et d'éviter les rechargements complets de page.

Examples

  • WhatsApp Web, Facebook, Instagram, YouTube sont des SPA
  • Versions web de Teams, Word, Excel, Google Sheets sont des SPA
  • Wikipedia, Moodle, etc. sont des MPA

Avantages des SPA
04:18

  • Les SPA sont plus rapides (après le premier chargement) puisqu'elles ne contactent le serveur spécifiquement que pour des informations manquantes.
  • Les SPA surchargent moins le serveur puisque plus de travail est effectué côté client.
  • Les SPA offrent plus de possibilités d'UX (scroll infini, offline mode, position du curseur, etc.)

Remark

Un argument clé pour l'emloi de l'usage des SPA est qu'elles sont faciles à créer avec des frameworks (comme React, Svelte, Angular, etc.)

Client-Side Routing
04:18

Question

Dans une SPA, vous remarquerez que votre navigateur change d'URL mais pas de page. Pourquoi?

Example

Regardez vos conversations dans Facebook ou instagram. Rechargez la page. Ensuite faites la même chose avec WhatsApp Web. Que remarquez-vous?

Cette technique s'appelle le client-side routing: on emploie le JavaScript pour faire semblant de changer de page.

Kim Kardashian
04:18

Kardashian's Instagram page throughout the years

Question

Que s'est-il passé en 2016?

Fonctionnement d'une MPA
04:18

Fonctionnement d'une SPA
04:18

Remark

Au premier rendu, l'application renvoie une "shell page", c'est-à-dire une page blanche que avec du JavaScript. Ceci a une consequence pour le SEO. Remarquons également qu'il y a plusieurs aller-retours pour la première requête.

MPA vs SPA
04:18

MPA

  • Rendu effectué côté serveur
  • Premier rendu plus rapide
  • Accessibilité
  • Meilleur référencement (SEO)
  • Peut fonctionner sans JavaScript
  • Moins de problèmes et de bugs

SPA

  • Rendu effectué côté client
  • Performance après le premier rendu
  • Meilleure UX
  • Intégration plus simple avec d'autres applications/services
  • Meilleure architecture si on veut rajouter une application mobile

Le SSR
04:18

Question

Serait-il possible d'avoir le meilleur des deux mondes et de combiner les avantages des SPA et des MPA?

Idea

Le JavaScript est un langage de programmation qui peut s'exécuter côté serveur et côté client. On laisserait les deux côtés s'occuper du rendu.

SSR: fonctionnement
04:18

Hydration
04:18

Chaque fois qu'on résoud un problème en frontend, on en crée un nouveau. Le SSR crée le problème de l'hydration, une période durant laquelle la page est affichée mais pas interactive.

Le processus d'hydration

Ce problème n'est pas encore résolu de manière satisfaisante, bien qu'il existe des projets prometteurs tels que Qwik ou Astro