Une approche de l'évolutivité élevée consiste à utiliser l'équilibrage de la charge réseau pour répartir la charge de traitement entre plusieurs serveurs.
Un défi que cette approche présente est celui où les serveurs sont conscients de l'état - stockant l'état de l'utilisateur dans une "session".
Une solution à ce problème est la "session persistante" (alias "affinité de session") où chaque utilisateur est affecté à un seul serveur et ses données d'état sont contenues sur ce serveur exclusivement pendant toute la durée de la session.
Quels sont les avantages et les inconvénients de l'approche "session collante"? L'utilisez-vous et si oui, en êtes-vous satisfait?
Avantages:
Inconvénients:
Mais si vous devez utiliser l'état de session local du serveur, les sessions persistantes sont certainement la voie à suivre - et même si vous n'utilisez pas l'état de session local du serveur, l'adhérence présente des avantages en ce qui concerne l'utilisation du cache (voir ci-dessus). Votre équilibreur de charge devrait être en mesure d'examiner les cookies HTTP (pas seulement l'adresse IP) pour déterminer l'adhérence, car les adresses IP peuvent changer au cours d'une seule session (par exemple, ancrer un ordinateur portable entre un réseau câblé et sans fil).
Encore mieux, n'utilisez pas du tout l'état de la session sur le serveur Web! Si l'état de la session est très douloureux à perdre (par exemple, des paniers d'achat), stockez-le dans une base de données centrale et supprimez régulièrement les anciennes sessions. Si l'état de la session n'est pas critique (par exemple, le nom d'utilisateur/l'URL de l'avatar), collez-le dans un cookie - assurez-vous simplement de ne pas insérer trop de données dans le cookie.
Les versions modernes de Rails, par défaut, stockent les variables de session dans un cookie pour les raisons ci-dessus. D'autres frameworks Web peuvent avoir une option "stocker dans les cookies" et/ou "stocker dans la base de données".