
Wszystko w naszej branży byłoby lepsze bez stanu. Funkcje bez efektów ubocznych. Bezstanowe kontenery z łatwy autoskalowaniem. Frontend bez karkołomnej propagacji zmian. Aplikacje webowe bez kosztownej replikacji sesji. Zdalna współpraca nad jednym dokumentem bez magicznej synchronizacji i konfliktów. Bazy danych bez uciążliwego wersjonowania schematu. Ale świat nie jest taki prosty.
Stan jest wszędzie. Ten mały boolean który mówi, że obiekt jest poprawny? Właśnie stworzyłeś maszynę stanową. WebSocket, którym przesyłasz aktualizacje do przeglądarki? Nagle rozwiązujesz problem replikacji stanu i kolejności zdarzeń. A może prosty zapis do transakcyjnej bazy? Ani się obejrzysz, a wybierasz między optymistycznym a pesymistycznym blokowaniem, jednym z czterech poziomów izolacji transakcji i poznajesz różnice między ACID a BASE.
Przechowywanie, przesyłanie, synchronizacja i reagowanie na zmianę stanu to esencja naszej pracy. Zamiast przymykać oko, nauczmy się podstawowych wzorców i technik. By na koniec dnia bezpiecznie i niezawodnie wyświetlić zawartość koszyka lub stan konta. PS: za to nie będzie o blockchainie i superpozycji stanu w qbitach.