Account Connexion
Jump to section

Stateless et stateful : 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 « avec état » ou « sans état » 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 sans état 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 sans état 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 sans état. 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 sans état sont comparables à des distributeurs automatiques : une seule requête et une seule réponse. 

Les applications et processus avec état, 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 avec état utilisent les mêmes serveurs chaque fois qu'elles traitent une requête d'un utilisateur.  

Si une transaction avec état est interrompue, le contexte et l'historique sont stockés et vous pouvez ainsi reprendre là où vous en étiez. Les applications avec état 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 avec état 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 avec état. 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, avec ou sans état, 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 sans état, 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 avec état 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 avec état et sans état 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 avec état et la question n'est plus de savoir s'il faut utiliser des conteneurs avec état, mais dans quel cas les employer. 

Le choix de l'utilisation de conteneurs avec ou sans état 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 sans état. 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

Red Hat OpenShift

Plateforme de conteneurs Kubernetes pour les entreprises qui automatise l'exploitation de toute la pile pour la gestion des déploiements multicloud, de clouds hybrides et d'edge computing.

Ressources

Résumé

Stimuler l'innovation dans le secteur des services financiers avec les applications cloud-native

Livre numérique

La voie vers les applications natives pour le cloud

Formations

Formation gratuite

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

Illustration - mail

Ce type de contenu vous intéresse ?

Inscrivez-vous à notre newsletter Red Hat Shares.