Style architektury i wzorce komunikacji

Tworzenie aplikacji na AWS

Ricardo Sueiras

Principal Technologist

Twój instruktor

instructor

Tworzenie aplikacji na AWS

Czym są wzorce architektoniczne?

 

 

Application architecture

 

  • Gotowe rozwiązanie powtarzającego się problemu.
  • Wzorce pokazują, jak łączyć usługi AWS.
  • Architektura decyduje o zachowaniu aplikacji pod obciążeniem.
  • Poznasz kilka kluczowych wzorców architektonicznych.
Tworzenie aplikacji na AWS

Monolity

 

 

diagram of an example monolith architecture

 

 

  • Jedna, ściśle powiązana całość.
  • Jedna baza kodu, jedno wdrożenie.
  • Na początku prosta w tworzeniu.
  • Trudna do skalowania: wszystko skaluje się razem.
Tworzenie aplikacji na AWS

Mikroserwisy

 

microservices architecture

 

  • Małe, niezależne serwisy — każdy odpowiada za jedną funkcję biznesową.
  • Każdy serwis można wdrażać, skalować i aktualizować niezależnie.
  • Kompromis: większa złożoność operacyjna i komunikacja między serwisami.
Tworzenie aplikacji na AWS

Serverless

  • Żadnej infrastruktury do zarządzania — tylko kod i konfiguracja.
  • Budujesz, składając zarządzane usługi AWS.
  • AWS zajmuje się provisioningiem, skalowaniem i utrzymaniem.
  • Kompromis: limity czasu wykonania, zimne starty, uzależnienie od dostawcy.
  • Minimalne koszty operacyjne i automatyczne skalowanie.

 

serverless architecture

Tworzenie aplikacji na AWS

Architektura sterowana zdarzeniami (EDA)

  • Komponenty komunikują się przez zdarzenia, nie bezpośrednie wywołania.
  • Zdarzenie rejestruje fakt, który nastąpił (złożono zamówienie, odebrano płatność, wysłano towar).
  • Producenci emitują zdarzenia.
  • Konsumenci subskrybują interesujące ich zdarzenia.

 

event driven architecture

Tworzenie aplikacji na AWS

Systemy silnie i luźno powiązane

  • Nowoczesne aplikacje chmurowe składają się z wielu serwisów.
  • Serwisy muszą się komunikować i koordynować pracę.
  • Komunikacja synchroniczna — silne powiązanie.
  • Komunikacja asynchroniczna — luźne powiązanie.

tight and loosely coupled systems

Tworzenie aplikacji na AWS

Komunikacja synchroniczna

 

synch comms

  • Serwis wysyła żądanie i czeka na odpowiedź.
  • Wywołujący jest blokowany do czasu odpowiedzi lub przekroczenia limitu czasu.
  • Prosta w implementacji i zrozumieniu.
  • Silne powiązanie: spowolnienie lub awaria niżej mogą kaskadowo się rozchodzić.
  • Zaradź temu przez limity czasu, ponawianie i wyłączniki automatyczne.
Tworzenie aplikacji na AWS

Wzorzec: żądanie/odpowiedź

request response

  • Podstawa większości interfejsów aplikacji.
  • Przewidywalne zachowanie.
  • Natychmiastowa informacja zwrotna dla użytkowników.
Tworzenie aplikacji na AWS

Komunikacja asynchroniczna

 

aysnc comms

  • Nadawca nie czeka na odpowiedź.
  • Wysyła wiadomość lub zdarzenie i kontynuuje przetwarzanie.
  • Odbiorca przetwarza wiadomość niezależnie.
  • Luźne powiązanie: lepsza skalowalność i odporność na awarie.
  • Dobrze radzi sobie ze skokami ruchu i częściowymi awariami.
  • Wyzwania: zduplikowane wiadomości, kolejność, spójność ostateczna.
Tworzenie aplikacji na AWS

Wzorzec: rozdzielanie przez kolejkę

  • Producent wysyła wiadomości do kolejki.
  • Konsument pobiera i przetwarza wiadomości niezależnie.
  • Zapobiega kaskadowemu rozchodzeniu się awarii.
  • Producent i konsument skalują się niezależnie.

  queue based

Tworzenie aplikacji na AWS

Wzorzec: kolejka robocza

  • Wiele workerów pobiera wiadomości z jednej kolejki.
  • Wiadomości przetwarzane równolegle.
  • Umożliwia skalowanie poziome i wyższą przepustowość.
  • Kolejność wiadomości nie jest gwarantowana.

worker-queue

Tworzenie aplikacji na AWS

Wzorzec: publikuj/subskrybuj

  • Wydawcy wysyłają wiadomości do tematu SNS.
  • Wielu subskrybentów otrzymuje tę samą wiadomość.
  • Rozgłaszanie w czasie rzeczywistym do wielu konsumentów.

 

pub subscribe pattern

Tworzenie aplikacji na AWS

Wzorzec: fan-out

fanout

  • Jedna wiadomość dostarczana jednocześnie do wielu konsumentów.
  • Szeroko stosowany w architekturach sterowanych zdarzeniami.
  • Przydatny, gdy wiele serwisów musi reagować na to samo zdarzenie.
Tworzenie aplikacji na AWS

Kolejność wiadomości

message ordering

  • Niektóre zadania wymagają przetwarzania wiadomości w odpowiedniej kolejności.
  • Amazon SQS FIFO i Kinesis obsługują przetwarzanie w kolejności.
  • Ścisła kolejność zmniejsza przepustowość.
  • Znajdź balans między poprawnością a skalowalnością.
Tworzenie aplikacji na AWS

Czas na praktykę!

Tworzenie aplikacji na AWS

Preparing Video For Download...