Aplikacje sterowane zdarzeniami

Tworzenie aplikacji na AWS

Ricardo Sueiras

Principal Technologist

Czym jest zdarzenie?

 

event-vs-messages

  • Wiadomość to jednostka pracy przesyłana między komponentami.
  • Zdarzenie rejestruje coś, co już nastąpiło.
  • Serwisy komunikują się, publikując zdarzenia.
  • Inne serwisy reagują na te zdarzenia niezależnie od siebie.
  • Rozdzielenie zależności zmniejsza sprzężenie i poprawia skalowalność.
Tworzenie aplikacji na AWS

Producenci zdarzeń

 

event producers

  • Producenci tworzą i publikują zdarzenia, gdy coś się dzieje.
  • Zdarzenia mogą generować zarówno serwisy AWS, jak i własne aplikacje.
  • Przykładem jest przesłanie pliku do Amazon S3.
  • Amazon S3 emituje wtedy zdarzenie o utworzeniu obiektu.
Tworzenie aplikacji na AWS

Konsumenci zdarzeń

 

consumers

  • Konsumenci odbierają i przetwarzają zdarzenia asynchronicznie.
  • Źródła zdarzeń stosują różne modele dostarczania.
  • Model push: zdarzenia są dostarczane natychmiast.
  • Model poll: konsument pobiera zdarzenia podczas odpytywania.
Tworzenie aplikacji na AWS

Mapowanie źródeł zdarzeń

  • AWS Lambda to popularny konsument zdarzeń.
  • Automatycznie odpytuje źródła i pobiera partie rekordów.

 

event source mapping

Tworzenie aplikacji na AWS

Dostrajanie mapowań źródeł zdarzeń Lambda

  • Dostrajaj mapowania źródeł zdarzeń, aby zwiększyć przepustowość.
  • Dostosuj rozmiar partii, aby kontrolować liczbę rekordów na wywołanie.
  • Skonfiguruj parametry ponawiania dla nieudanych rekordów.
  • Korzystaj z częściowych odpowiedzi partii na obsługiwanych źródłach.
  • ReportBatchItemFailures zapobiega ponownemu przetwarzaniu udanych rekordów.

 

event source mapping

Tworzenie aplikacji na AWS

Amazon EventBridge

  • EventBridge kieruje zdarzenia między serwisami i aplikacjami.
  • Umożliwia dynamiczne routing bez ścisłego sprzężenia serwisów.
  • Aplikacje publikują zdarzenia do EventBridge.
  • Reguły routingu decydują, które cele otrzymują dane zdarzenie.

 

event bridge

Tworzenie aplikacji na AWS

Możliwości EventBridge

 

capabilities

  • EventBridge oferuje kilka możliwości routingu.
  • Reguły rozsyłają jedno zdarzenie do wielu celów.
  • Zaplanowane reguły eliminują potrzebę serwerów cron.
  • Harmonogramy obsługują wyrażenia rate(), at() i cron().
  • Pipes zapewniają integrację punkt-punkt.
  • Pipes umożliwiają też filtrowanie i transformację.
Tworzenie aplikacji na AWS

Szyny zdarzeń

 

event bus

  • Różne szyny zdarzeń optymalizują sposób ich kierowania.
  • Domyślna szyna odbiera zdarzenia z serwisów AWS.
  • Szyny niestandardowe obsługują zdarzenia specyficzne dla aplikacji.
  • Szyny partnerskie odbierają zdarzenia od zewnętrznych dostawców.
  • Reguły działają między każdą szyną a jej celami.
Tworzenie aplikacji na AWS

Odkrywanie schematów

 

event schema and registry

  • Producenci i konsumenci często rozwijają się niezależnie.
  • Znajomość struktury zdarzeń jest kluczowa.
  • Odkrywanie schematów przechwytuje strukturę przychodzących zdarzeń.
  • Używaj go do inspekcji ładunków zdarzeń.
  • Używaj go do walidacji integracji.
  • Używaj go do generowania powiązań dla obsługiwanych języków.
Tworzenie aplikacji na AWS

Rejestr schematów

  • Rejestr schematów przechowuje schematy zdarzeń.
  • Pomaga programistom zrozumieć strukturę zdarzeń i generować powiązania.

 

event schema and registry

Tworzenie aplikacji na AWS

Filtrowanie zdarzeń

  • Filtrowanie ogranicza zbędne przetwarzanie.
  • Definiuj dopasowania za pomocą wzorców zdarzeń JSON.
  • Wzorce pasują tylko do wybranych przez ciebie zdarzeń.
  • Dalsze systemy przetwarzają wtedy wyłącznie istotne zdarzenia.

 

event filtering

Tworzenie aplikacji na AWS

Kolejność zdarzeń

  • Kolejność zdarzeń nie zawsze jest gwarantowana.
  • Niektóre serwisy mogą przetwarzać zdarzenia poza kolejnością.
  • Używaj mechanizmów kontroli kolejności, aby wymusić ją jawnie.

 

event ordering

Tworzenie aplikacji na AWS

Archiwizowanie i odtwarzanie zdarzeń

 

archiving and replaying

  • EventBridge może archiwizować zdarzenia i odtwarzać je później.
  • Odtwarzaj zdarzenia, aby odzyskać sprawność po awarii.
  • Odtwarzaj zdarzenia, aby testować nowych konsumentów.
  • Odtwarzaj zdarzenia, aby przebudować systemy downstream.
Tworzenie aplikacji na AWS

Obsługa błędów

 

handling errors

  • Aplikacje sterowane zdarzeniami muszą bezpiecznie obsługiwać błędy.
  • Do typowych awarii należą: zduplikowane zdarzenia,
    • nieudane przetwarzanie,
    • niedostępni konsumenci.
  • Projektuj konsumentów jako idempotentnych tam, gdzie to możliwe.
Tworzenie aplikacji na AWS

DLQ i miejsca docelowe

 

handling errors

  • Używaj DLQ, aby izolować wielokrotnie nieudane zdarzenia.
  • W EventBridge DLQ konfiguruje się na poziomie celu reguły, nie funkcji.
  • Lambda Destinations rozszerzają ten routing.
  • Destinations kierują zarówno wyniki sukcesów, jak i niepowodzeń.
Tworzenie aplikacji na AWS

Testowanie i walidacja zdarzeń

  • Testowanie aplikacji sterowanych zdarzeniami weryfikuje routing.
  • Sprawdza też filtrowanie zdarzeń.
  • Oraz mechanizmy ponowień.
  • Potwierdza przetwarzanie w rozproszonych systemach.
  • Użyj AWS SAM do generowania przykładowych zdarzeń testowych.
  • Przykładowe zdarzenia odwzorowują dokładne wyjście JSON.

 

testing

Tworzenie aplikacji na AWS

Co testować?

  • SAM pozwala testować lokalnie przed wdrożeniem.
  • Weryfikuj dopasowywanie wzorców zdarzeń.
  • Weryfikuj zachowanie przy ponowieniach.
  • Weryfikuj scenariusze ograniczania przepustowości.
  • Weryfikuj dostarczanie zduplikowanych zdarzeń.
  • Weryfikuj idempotentne zachowanie konsumentów.

 

testing

Tworzenie aplikacji na AWS

Czas na praktykę!

Tworzenie aplikacji na AWS

Preparing Video For Download...