Aplikacja bezstanowa

Aplikacja bezstanowa (ang. stateless application) – to aplikacja, która udostępnia funkcjonalności swoim klientom, w taki sposób, że informacja o stanie wielokrokowego użycia aplikacji[1] jest przechowywana po stronie klienta, a nie serwera.

Definicja ta jest rozszerzeniem pojęcia protokołu bezstanowego(inne języki) na aplikacje, rozszerzając zasadę przechowywania stanu sesji na stan wielokrokowego użycia aplikacji. Stan ten może być zapisywany w sesji użytkownika po stronie klienta (aplikacja bezstanowa) lub serwera (aplikacja stanowa, ang. stateful application).

Bezstanowość aplikacji nie oznacza braku przechowywania przez nią danych[2] (persystencji danych), taka aplikacja może posiadać dane zapisane w jakiejś formie persystencji (np. baza danych, pliki itd).

Aplikacja bezstanowa w komunikacji z klientem może korzystać zarówno ze stanowych jak i bezstanowych protokołów komunikacyjnych, użycie protokołu nie jest tu wyróżnikiem. Przykładowo bezstanowy protokół HTTP[3], używający stanowego protokołu TCP[4] może realizować komunikację zarówno dla stanowej jak i bezstanowej aplikacji.

Zalety bezstanowości aplikacji edytuj

  • łatwiejsze horyzontalne skalowanie na wielu serwerach[5]
  • poszczególne instancje aplikacji nie muszą wymieniać między sobą informacji o stanie wielokrokowego użycia aplikacji (sesji użytkownika)
  • dowolność połączeń klient - serwer, czyli każde wywołanie klienta może być obsłużone przez dowolną instancję aplikacji[6]
  • większa niezawodność aplikacji - gdy w trakcie użycia, używana przez klienta instancja aplikacji staje się niedostępna, klient może kontynuować użycie aplikacji, nie musi rozpoczynać od początku
  • łatwiejsze cache'owanie aplikacji

Aplikacja bezstanowa a aplikacja stanowa - przykład edytuj

Przykładowa aplikacja udostępnia informacje nt. stanu jakości powietrza. Przykładowa aplikacja nie wymaga uwierzytelniania. Udostępniana funkcjonalność jest wielokrokowa, gdyż wymaga:

  • wybrania czujnika spośród dostępnych
  • pobrania informacji nt. pomiaru z wybranego czujnika

Aplikacja taka może być zrealizowana zarówno w bezstanowy i jak i stanowy sposób. W obu przypadkach aplikacja może przechowywać dane pomiarowe.

aplikacja realizująca komunikację bezstanowo (ang. stateless) edytuj

 

aplikacja realizująca komunikację stanowo (ang. stateful) edytuj

 

Przypisy edytuj

  1. wielokrokowość jest elementem wymaganym do rozróżnienia aplikacji bezstanowej i stanowej. Jeżeli aplikacja udostępnia funkcjonalności jedynie jednokrokowo (jedynie jeden krok jest potrzebny do skorzystania z funkcjonalności), to nie można rozróżnić czy jest ona stanowa czy bezstanowa w świetle tej definicji
  2. Stateful vs. Stateless Web App Design [online], DreamFactory Software- Blog, 28 września 2020 [dostęp 2021-10-24] (ang.).
  3. HTTP is a stateless protocol [online], home.sandiego.edu [dostęp 2021-10-24].
  4. Is TCP protocol stateless? [online], NewbeDEV [dostęp 2021-10-24] (ang.).
  5. Rachna Singhal, Stateless Over Stateful Applications [online], Medium, 8 kwietnia 2019 [dostęp 2021-10-24] (ang.).
  6. Stateful vs Stateless Architecture: Why Stateless Won | Virtasant [online], www.virtasant.com [dostęp 2021-10-24] (ang.).