SessionLess : Pourquoi et      Comment ? Guillaume Wallet Thomas Recloux
HTTP : Rappels● HTTP est un protocole applicatif basé sur TCP● Fonctionne en mode requête / réponse● HTTP est un protocole...
HTTP Rappels  ○ Chaque requête est associée à un verbe daction     ■ GET, POST, PUT, DELETE, ....     ■  ○ Et à lURL de la...
HTTP et SessionHTTP nintègre pas de notion de session .... mais nosapplications oui.Comment : Lors du premier accès à une ...
HTTP et Session● Ex : Recherche dun article   ○ GET /search.do -> affichage du champs de recherche   ○ POST /search.do -> ...
HTTP & SessionLes inconvénients de la session ● Lespace mémoire est localisé sur un serveur     ○ Difficulté de gérer cet ...
HTTP & Session● Répartition de charge / haute disponibilité   ○ Mes requêtes doivent être redirigées vers le même      ser...
Mais comment faire sans session ?● Rôle : faire du cache   ○ Utiliser .... des solutions de cache :)       ■ Au sein de la...
Mais comment faire sans session ?● Ex :   ○ GET /search -> affichage du champs de recherche   ○ GET /search?txt=shoes -> r...
Serveur sans état  ○ Stocker létat ailleurs     ■ Sur le client         ■ Applis Ajax avec une seule page : Stocker létat ...
Prochain SlideShare
Chargement dans…5
×

Http SessionLess : Pourquoi, comment ?

3 036 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
3 036
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1 684
Actions
Partages
0
Téléchargements
7
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Http SessionLess : Pourquoi, comment ?

  1. 1. SessionLess : Pourquoi et Comment ? Guillaume Wallet Thomas Recloux
  2. 2. HTTP : Rappels● HTTP est un protocole applicatif basé sur TCP● Fonctionne en mode requête / réponse● HTTP est un protocole déconnecté : chaque couple requête / réponse est indépendant ○ Pas de notion native de session.
  3. 3. HTTP Rappels ○ Chaque requête est associée à un verbe daction ■ GET, POST, PUT, DELETE, .... ■ ○ Et à lURL de la ressource associée ■ Chaque requête et réponse sont couplées à des entêtes ■ Négociation de contenu ■ Encoding ■ Taille ■ Cache ■ ...
  4. 4. HTTP et SessionHTTP nintègre pas de notion de session .... mais nosapplications oui.Comment : Lors du premier accès à une application, le serveur gun ID de session, associe un espace mémoire à cet ID etfournit lID sous forme de Cookie au client.Cette session est bien pratique pour ● Faire du cache ● Stocker létat de la conversation entre le navigateur et le serveur
  5. 5. HTTP et Session● Ex : Recherche dun article ○ GET /search.do -> affichage du champs de recherche ○ POST /search.do -> résultat de la recherche ○ GET /search-result?idx=1 -> Affichage du premier résultat de la recherche
  6. 6. HTTP & SessionLes inconvénients de la session ● Lespace mémoire est localisé sur un serveur ○ Difficulté de gérer cet espace mémoire dans le temps (fourre tout) ○ Nécessité de dimensionner linfrastructure de production en conséquence ■ Combien dutilisateurs en pic, quelle taille de session par utilisateur ○ Au bout de combien de temps purger cet espace mémoire ?
  7. 7. HTTP & Session● Répartition de charge / haute disponibilité ○ Mes requêtes doivent être redirigées vers le même serveur ■ Impact sur les composants de répartition de charge ○ Et si mon serveur tombe ? ■ Option 1 : Je suis redirigé vers un nouveau serveur qui ne connait pas ma session -> Plouf ■ Option 2 : je suis redirigé vers un autre serveur qui connait ma session mais doit encaisser beaucoup de requêtes supplémentaires -> Plouf aussi● Scalabilité : Si je rajoute une machine, les sessions existentes ne pourront pas en profiter.● Mise à jour : Les objets en session sont liés à une version de lapplication => complexité de déploiement dune nouvelle version
  8. 8. Mais comment faire sans session ?● Rôle : faire du cache ○ Utiliser .... des solutions de cache :) ■ Au sein de lapplication : ehCache, osCache ■ Dans des systèmes dédiés : memcache, terracota, ... ○ Ne pas faire de cache : faire confiance à linfrastructure (OS, Base, ...)● Rôle : stocker létat de la conversation ○ Avoir un minimum détat conversationnel .... ■ Penser bookmark ■ URL significatives autosuffisantes
  9. 9. Mais comment faire sans session ?● Ex : ○ GET /search -> affichage du champs de recherche ○ GET /search?txt=shoes -> résultat de la recherche ○ GET /catalog/shoes/453-black-shoes-women -> Affichage du premier résultat de la recherche
  10. 10. Serveur sans état ○ Stocker létat ailleurs ■ Sur le client ■ Applis Ajax avec une seule page : Stocker létat sous forme dobjets JavaScript (GWT) ■ Autres clients riches : Flex , ... ■ Capacités de stockage HTML5 (LocalStorage, ....) ■ Dans la base de données ■ (Retour de la vengeance du cache) ■ Faire transiter ces données à chaque requête / réponse ■ Champs cachés ■ Cookies

×