Jump to section

Stateful et stateless : quelle est la différence ?

Copier l'URL

L'état d'une application (ou de tout autre élément) correspond à sa condition ou sa qualité à un moment donné dans le temps. Les qualificatifs « stateful » ou « stateless » dépendent de la durée pendant laquelle l'état de l'interaction avec un élément est enregistré ainsi que de la manière dont cette information doit être stockée. 

Un processus ou une application stateless est indépendant. Il ne stocke pas de données et ne fait référence à aucune transaction passée. Chaque transaction est effectuée à partir de rien, comme si c'était la première fois. Les applications stateless fournissent un service ou une fonction et utilisent un réseau de diffusion de contenu, le web ou des serveurs d'impression pour traiter ces requêtes à court terme. 

Par exemple, une recherche en ligne pour répondre à une question quelconque est une transaction stateless. Vous tapez votre question dans le moteur de recherche et appuyez sur Entrée. Si votre transaction est accidentellement interrompue ou fermée, vous devez en démarrer une nouvelle. Les transactions stateless sont comparables à des distributeurs automatiques : une seule requête et une seule réponse. 

Les applications et processus stateful, quant à eux, peuvent être réutilisés indéfiniment. Les plateformes bancaires en ligne et les messageries en sont deux exemples. Les transactions précédentes sont prises en compte et peuvent affecter la transaction actuelle. C'est pour cela que les applications stateful utilisent les mêmes serveurs chaque fois qu'elles traitent une requête d'un utilisateur.  

Si une transaction stateful est interrompue, le contexte et l'historique sont stockés et vous pouvez ainsi reprendre là où vous en étiez. Les applications stateful gardent une trace de divers éléments, comme l'URL de la page, les paramètres de préférence et l'activité récente. Les transactions stateful sont comparables à une conversation continue et périodique avec la même personne.

La majorité des applications que nous utilisons au quotidien sont des applications stateful. Toutefois, les technologies évoluent et les microservices ainsi que les conteneurs facilitent le développement et le déploiement d'applications dans le cloud. 

À l'instar du cloud computing et des microservices, la conteneurisation des applications, stateful ou stateless, gagne en popularité. Les conteneurs sont des unités de code pour une application qui sont empaquetées, avec leurs bibliothèques et leurs dépendances, afin de faciliter leur déplacement et leur exécution dans n'importe quel environnement, que ce soit sur un poste de travail, une infrastructure traditionnelle ou dans le cloud. 

À l'origine, les conteneurs étaient stateless, ce qui convenait parfaitement à leur nature portable et flexible. Cependant, avec la démocratisation des conteneurs, les développeurs se sont mis à conteneuriser (repenser et ré-empaqueter pour une exécution à partir de conteneurs) les applications stateful existantes. Ces applications ont ainsi profité de la flexibilité et de la rapidité des conteneurs, sans cesser de stocker des informations et du contexte.

Ainsi, les applications stateful et stateless se ressemblent parfois énormément. Par exemple, certaines applications stateless, qui ne nécessitent aucun stockage à long terme, permettent quand même au serveur de garder une trace des requêtes en provenance d'un même client à l'aide de cookies. 

Au vu de la popularité croissante des conteneurs, plusieurs entreprises ont commencé à proposer des solutions de gestion pour les conteneurs stateful et stateless, basées sur le stockage des données, Kubernetes et des StatefulSets. Aujourd'hui, la majeure partie du stockage en conteneurs est stateful et la question n'est plus de savoir s'il faut utiliser des conteneurs stateful, mais dans quel cas les employer. 

Le choix de l'utilisation de conteneurs avec ou stateless dépend du type d'application que vous développez et de sa fonction. Si vous avez besoin d'informations rapidement et temporairement, optez pour des conteneurs stateless. En revanche, si votre application doit se baser sur les données issues de sessions précédentes, privilégiez les conteneurs stateful.

Stateful ou stateless, Red Hat a tout prévu. Que vous cherchiez à orchestrer des conteneurs stateful sur notre plateforme Kubernetes d'entreprise, Red Hat OpenShift, ou à créer un environnement unifié pour le développement d'applications avec la solution Red Hat Integration, notre service d'assistance primé ainsi que le plus vaste écosystème de partenaires du secteur sont là pour vous aider. 

Découvrez comment l'ensemble de nos produits permettent de concevoir des solutions, améliorent la productivité des développeurs et encouragent l'innovation, selon le modèle Open Source.

Pour aller plus loin

ARTICLE

Stateful et stateless : quelle est la différence ?

Les qualificatifs « stateful » ou « stateless » dépendent de la durée pendant laquelle l'état de l'interaction avec un élément est enregistré ainsi que de la manière dont cette information doit être stockée.

ARTICLE

Quarkus, qu'est-ce que c'est ?

Quarkus est une pile Java native pour Kubernetes conçue pour les machines virtuelles Java (JVM) et la compilation native, qui permet d'optimiser Java spécifiquement pour les conteneurs.

ARTICLE

Le serverless ou informatique sans serveur, qu'est-ce que c'est ?

Le serverless est un modèle de développement cloud-native qui permet aux développeurs de créer et d'exécuter des applications sans avoir à gérer des serveurs.

En savoir plus sur les applications cloud-native

Produits

Une plateforme d'applications d'entreprise comprenant un ensemble unifié de services testés conçus pour distribuer des applications sur votre choix d'infrastructure.

Ressources

Formations

Formation gratuite

Développement d'applications cloud-native avec des architectures de microservices