Koordynacja usług i zarządzanie stanem

Tworzenie aplikacji na AWS

Ricardo Sueiras

Principal Technologist

Koordynacja usług

 

service coordination

  • Wiele usług musi ze sobą współpracować, aby ukończyć przepływ pracy.
  • Potrzebują strategii koordynacji.
  • Dwa podejścia: orchestracja i choreografia.
Tworzenie aplikacji na AWS

Orchestracja

 

orchestration pattern

  • Centralny orkiestrator koordynuje przepływ pracy.
  • Kontroluje kolejność i decyduje, która usługa uruchomi się następna.
  • Przydatny przy ponownych próbach, logice warunkowej i obsłudze błędów.
  • Na AWS: realizowany przez Step Functions — Lambda, ECS, DynamoDB.
Tworzenie aplikacji na AWS

Orchestracja

 

orchestration pattern

  • Logika przepływu jest w jednym miejscu, co ułatwia debugowanie i monitoring.
  • Kompromis: wprowadza centralną zależność.
Tworzenie aplikacji na AWS

Choreografia

  • Brak centralnego kontrolera.
  • Usługi reagują na zdarzenia niezależnie.
  • Każda usługa nasłuchuje odpowiednich zdarzeń i wykonuje swoje zadanie.
  • Żadna usługa nie musi znać całego przepływu pracy.
  • Poprawia luźne powiązania i skalowalność.

 

choreography

Tworzenie aplikacji na AWS

Choreografia

  • Na AWS: EventBridge, SNS, SQS.
  • Wysoka skalowalność.
  • Kompromis: trudniejsza do zrozumienia i debugowania w miarę rozrastania się przepływów.

 

choreography

Tworzenie aplikacji na AWS

Architektura sterowana zdarzeniami

  • Usługi komunikują się, produkując i konsumując zdarzenia.
  • Sprzyja luźnemu powiązaniu między usługami.
  • Zapewnia wysoką skalowalność.
  • Umożliwia równoległe przetwarzanie zdarzeń.
  • Nowe usługi mogą się subskrybować bez modyfikowania istniejących.

 

event-driven-arch

Tworzenie aplikacji na AWS

Architektura sterowana zdarzeniami

 

event-driven-arch

  • Kompromisy przy wdrażaniu EDA:
  • Projektuj z myślą o spójności ostatecznej.
  • Zadbaj o idempotentność.
  • Obsługa błędów jest bardziej złożona.
Tworzenie aplikacji na AWS

Idempotentność

 

idempotency

  • Wielokrotne wykonanie tej samej operacji daje ten sam wynik.
  • Kluczowa zasada projektowania w systemach asynchronicznych i sterowanych zdarzeniami.
  • Systemy rozproszone mogą dostarczać zduplikowane zdarzenia (ponowne próby, awarie sieci, ponowne przetwarzanie).
  • Gwarantuje poprawność i niezawodność systemu.
Tworzenie aplikacji na AWS

Kolejki niedostarczonych wiadomości

 

ltq

  • Zarządza błędami w komunikacji asynchronicznej.
  • Izoluje problematyczne wiadomości-„trucizny".
  • Po wielokrotnych nieudanych próbach wiadomość trafia do DLQ.
  • Główny przepływ przetwarzania działa bez zakłóceń.
Tworzenie aplikacji na AWS

Kolejki niedostarczonych wiadomości

  • Stosuj, gdy kolejność wiadomości nie jest istotna.
  • Pomiń w niekrytycznych systemach, gdzie sporadyczna utrata danych jest akceptowalna.
  • Unikaj, gdy kolejność wiadomości musi być zachowana.

 

ltq

Tworzenie aplikacji na AWS

Zarządzanie stanem

  • Zarządzanie stanem jest podstawą aplikacji natywnych dla chmury.
  • Stan to dane zachowywane między kolejnymi interakcjami.
  • Przechowywanie stanu lokalnie na serwerze ogranicza skalowalność i odporność.

 

managing state

Tworzenie aplikacji na AWS

Zarządzanie stanem

  • Zarządzanie stanem wiąże się z kompromisami zależnymi od tego, co budujesz.
  • Zewnętrzny stan poprawia skalowalność i odporność.
  • Koszty: dodatkowe opóźnienia i złożoność.
  • Warto rozważyć: spójność, buforowanie i wzorce dostępu do danych.

 

managing state

Tworzenie aplikacji na AWS

Stanowy

 

state full design

  • Dane sesji są przechowywane na serwerze.
  • Żądania muszą trafiać do tej samej instancji (sticky sessions).
  • Ogranicza elastyczność skalowania.
  • Gdy instancja ulegnie awarii, sesja przepada.
Tworzenie aplikacji na AWS

Bezstanowy

 

stateless

  • Każde żądanie jest traktowane niezależnie.
  • Serwer nie przechowuje żadnego stanu.
  • Stan znajduje się w systemach zewnętrznych.
  • Preferowane podejście w aplikacjach natywnych dla chmury.
  • Dowolna instancja może obsłużyć dowolne żądanie, co upraszcza skalowanie poziome.
Tworzenie aplikacji na AWS

Czas na praktykę!

Tworzenie aplikacji na AWS

Preparing Video For Download...