Stanowe aplikacje Webowe

@Horusiath

http://bartoszsypytkowski.com

Agenda

  • Jak zmienił się świat IT?
  • Bezstanowe protokoły
  • Stanowe aplikacje
  • Aktorzy
  • Maszyny stanów
  • Uwagi

Trochę historii

IT kiedyś i dziś

Dawniej Obecnie
Mała droga pamięć RAM Tani RAM
1-rdzień CPU Wiele rdzeni
1 maszyna Chmury obliczeniowe
Opóźnienia - sekundy Opóźnienia - milisekundy
Modemy Gigabitowe łącza
Tysiące użytkowników Miliony użytkowników

Programowanie

Znane wzorce i koncepty

  • Relacyjne bazy danych - 1970 r.
  • MVC (Model-View-Controller) - lata 70-te
  • Model aktorowy - 1973 r.
  • TCP - 1974 r.
  • ...
  • HTTP - 1997 r.

Aplikacje

Gry komputerowe

Procesowanie dokumentów, wniosków, aplikacji

Zarządzanie zasobami

Reagowanie na zdarzenia

Kilka przykładów domen

Sieci społecznościowe,

komunikatory

Internet of Things

Wiele aplikacji to aplikacje stanowe

HTTP to protokół bezstanowy

Problem?

Jak to obchodzimy?

Kilka popularnych "hacków"...

ORM

Caching

There are only two hard things in Computer Science: cache invalidation and naming things.

-- Phil Karlton

Jeden problem wciąż pozostaje

Separacja logiki od stanu aplikacji

Czy można inaczej?

Aktorzy

Aktorzy cd.

Aktorzy w aplikacjach stanowych

... i jak ma się do tego Domain Driven Design

Nie odtwarzamy agregatów z bazy danych 

Pozwalamy im żyć w pamięci pod postacią aktorów

Baza danych służy za backup

Maszyny stanów skończonych

Do prostych problemów...

... i tych bardziej złożonych

Upraszczamy logikę poprzez zmianę zachowania

Inne zalety...

Modułowość

Komunikacja oparta o wiadomości

  • Fire-and-forget
  • RPC (request-response)
  • Progressive response
  • Long pooling
  • Publish / Subscribe
  • Streaming / data flows

Świat jest większy niż RPC

Microservices

Kompromisy

bo życie to sztuka wyboru

Łyżka nie istnieje...

baza danych przestaje pełnić rolę jedynego źródła prawdy

ACID no more

życie bez kwasu może okazać się nie do zniesienia

RPC

stare przyzwyczajenia ciężko umierają

Koniec

Stateful web applications

By Bartosz Sypytkowski

Stateful web applications

  • 1,200