Amazon DOP-C02: Architektury sterowane zdarzeniami i automatyzacja — Przewodnik do nauki

Część AWS DevOps Engineer Professional DOP-C02 — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Amazon, albo rozwiąż testy na czas na ExamRoll.io.

Przegląd

Architektury sterowane zdarzeniami oddzielają producentów od konsumentów, kładą nacisk na komunikację asynchroniczną i sprawiają, że systemy są odporne na skoki obciążenia i awarie. Główne zasady to luźne powiązanie poprzez zdarzenia/wiadomości, skalowanie sterowane przez konsumentów, idempotentne procedury obsługi oraz jawna obsługa błędów i obserwowalność. AWS dostarcza elementy składowe do tworzenia trwałych kolejek, systemów pub/sub, magistral zdarzeń, przetwarzania strumieniowego, orkiestracji i automatyzacji operacyjnej. Opanowanie współdziałania pomiędzy Amazon SQS, Amazon SNS, Amazon EventBridge, AWS Step Functions, mapowaniami źródeł zdarzeń Lambda, AWS Systems Manager Automation i OpsCenter, a także Kinesis Data Streams i Firehose, pozwala budować skalowalne, odporne na awarie i audytowalne potoki automatyzacji i danych.

Wiadomości i pozyskiwanie danych: SQS, SNS, Kinesis i Firehose

Amazon SQS dostarcza trwałe, skalowalne kolejki do oddzielania komponentów. Kolejki standardowe oferują dostarczanie co najmniej raz (at-least-once) i porządkowanie na zasadzie „best-effort” z praktycznie nieograniczoną przepustowością; nadają się do obsługi przez równoległe procesy robocze, które tolerują zduplikowane i nieuporządkowane wiadomości dzięki kluczom idempotencji i zapisom warunkowym. Kolejki FIFO wymuszają uporządkowane dostarczanie w ramach grupy wiadomości i semantykę przetwarzania dokładnie raz (exactly-once) z deduplikacją (w oknie pięciu minut). Gwarantują one kolejność i pojedyncze przetworzenie, ale kosztem absolutnej przepustowości: użyj wielu grup wiadomości, aby zrównoleglić przetwarzanie w ramach FIFO, lub włącz tryb wysokiej przepustowości dla FIFO, aby przetwarzać tysiące wiadomości na sekundę. Skonfiguruj limit czasu widoczności (visibility timeout) dla kolejki lub pojedynczej wiadomości tak, aby przekraczał maksymalny czas przetwarzania; w przypadku konsumentów Lambda ustaw limit czasu widoczności na co najmniej sześciokrotność limitu czasu wykonania funkcji, aby umożliwić ponowienia, zanim wiadomość ponownie stanie się widoczna. Używaj odpytywania długiego (long polling), aby zredukować liczbę pustych odbiorów. Kolejki niedoręczonych wiadomości (DLQ) przechwytują wiadomości, których nie da się przetworzyć (poison messages), gdy wiadomość przekroczy wartość maxReceiveCount; później można je ponownie skierować (redrive) z DLQ do kolejki źródłowej w celu ponownego przetworzenia po wprowadzeniu poprawek. Monitoruj metrykę ApproximateAgeOfOldestMessage, aby wykrywać zaległości i sterować zmianami współbieżności/autoskalowania.

Amazon SNS zapewnia zarządzaną usługę pub/sub o wysokiej przepustowości. Wydawcy wysyłają wiadomość raz do tematu; SNS rozsyła ją (fan-out) do wielu subskrypcji (SQS, Lambda, HTTP/S, e-mail, mobile). Polityki filtrowania subskrypcji wykorzystują atrybuty wiadomości, aby kierować tylko odpowiednie powiadomienia do poszczególnych subskrybentów, zmniejszając koszty i obciążenie systemów docelowych; pozwalają wyrażać predykaty, takie jak dokładne dopasowanie, prefiks, zakresy numeryczne, „wszystko oprócz” (anything-but) i „istnieje” (exists). Używaj SNS do rozgłaszania (fan-out), oddzielonych powiadomień i powiadomień mobilnych (push). Włącz ponowienia i rozważ użycie kolejek DLQ dla każdej subskrypcji w celu obsługi niedostarczalnych wiadomości. W przypadku wymagań dotyczących uporządkowanego rozgłaszania, tematy SNS FIFO w połączeniu z subskrypcjami w postaci kolejek SQS FIFO wymuszają zachowanie kolejności i deduplikację.

Kinesis Data Streams dostarcza uporządkowane strumienie o niskim opóźnieniu z równoległością na poziomie fragmentów (shard) na potrzeby analityki w czasie rzeczywistym i przetwarzania zdarzeń. Producenci zapisują rekordy z kluczami partycji do fragmentów; konsumenci (Lambda, KCL, konsumenci Enhanced Fan-Out, Kinesis Data Analytics) odczytują je w kolejności w ramach każdego fragmentu z wykorzystaniem punktów kontrolnych (checkpointing). Użyj pojemności na żądanie (on-demand) dla nieprzewidywalnego obciążenia lub alokowanych fragmentów (provisioned shards) z możliwością reshardingu dla przewidywalnej przepustowości. Dostosuj klucze partycji, aby zrównoważyć obciążenie „gorących” fragmentów (hot shards) i monitoruj metrykę IteratorAge w celu wykrycia opóźnień po stronie konsumentów. Enhanced Fan-Out oferuje dedykowaną przepustowość 2 MB/s na strumień konsumenta z niskim opóźnieniem dzięki mechanizmowi push przez HTTP/2.

Kinesis Data Firehose to w pełni zarządzana usługa dostarczania danych do pozyskiwania w czasie zbliżonym do rzeczywistego do S3, Amazon OpenSearch Service, Splunk lub punktów końcowych HTTP, z opcjonalną transformacją za pomocą Lambda, buforowaniem (według rozmiaru/czasu), kompresją i szyfrowaniem. Jako źródła danych może używać bezpośrednich wywołań PutRecord/PutRecordBatch, strumieni Kinesis Data Streams lub subskrypcji CloudWatch Logs/Events. Używaj Firehose, gdy potrzebujesz zarządzanego dostarczania z transformacją i grupowaniem (batching) i nie chcesz tworzyć ani obsługiwać kodu konsumenta. Partycjonowanie dynamiczne pozwala kierować rekordy do prefiksów w S3 na podstawie kluczy, co umożliwia wydajne przetwarzanie w dalszych etapach.

Routing, orkiestracja i harmonogramowanie: EventBridge i Step Functions

Amazon EventBridge to centralna magistrala zdarzeń (event bus) służąca do routingu, zarządzania (governance) i integracji między kontami oraz domenami zdarzeń. Używaj domyślnej magistrali dla zdarzeń z usług AWS, niestandardowych magistral do segmentacji domen i stosowania uprawnień, a także magistral partnerskich do integracji z SaaS. Reguły dopasowują zdarzenia za pomocą wzorców opartych na treści (content-based patterns) i kierują je do ponad 200 usług AWS. Używaj transformerów wejściowych (input transformers) do kształtowania ładunków (payloads) oraz archiwizacji/odtwarzania (archive/replay) do ponownego przetwarzania historycznych zdarzeń podczas odzyskiwania systemu lub wdrażania nowych konsumentów. Polityki zasobów (resource policies) umożliwiają routing zdarzeń między kontami w celu konsolidacji zarządzania na koncie platformowym. EventBridge Pipes zapewniają konfigurowalne przepływy punkt-punkt (point-to-point) ze źródeł zdarzeń (SQS, Kinesis, DynamoDB Streams, samodzielnie zarządzany Apache Kafka na Amazon MSK i inne) do celów, z wbudowanym filtrowaniem, przetwarzaniem wsadowym (batching), transformacją i wzbogacaniem za pomocą Lambda lub Step Functions — jest to idealne rozwiązanie, gdy nie chcesz zarządzać pełną aplikacją konsumencką, a potrzebujesz jedynie lekkiej mediacji. EventBridge Scheduler umożliwia jednorazowe i cykliczne (cron) harmonogramy wywoływania celów z rolą wykonawczą (execution role), obsługą stref czasowych i opcjonalnymi elastycznymi oknami czasowymi (flexible time windows) w celu ograniczenia zjawiska „thundering herd” (nagłego, masowego napływu żądań).

AWS Step Functions orkiestruje rozproszone przepływy pracy (workflows) zdefiniowane w Amazon States Language, używając stanów takich jak Task, Choice, Parallel, Map (w tym Distributed Map), Wait, Pass, Succeed/Fail oraz solidnych wzorców Retry/Catch. Głębokie integracje z usługami eliminują potrzebę pisania kodu klejącego (glue code) do wywoływania API AWS, włączając w to wzorce synchroniczne (.sync) i wzorce wywołania zwrotnego (callback) z tokenami zadań (task tokens). Wybierz Standard Workflows dla długotrwałych orkiestracji wymagających audytu, z gwarancją jednokrotnego wykonania każdego stanu (exactly-once), trwających do jednego roku i z ceną za przejście między stanami; historia wykonań jest zachowywana, zapewniając dużą widoczność i wbudowane ślady X-Ray. Wybierz Express Workflows dla wysokoprzepustowych, krótkotrwałych orkiestracji (od sekund do minut), gdzie możesz zamienić cenę za żądanie i czas trwania oraz semantykę wykonania „co najmniej raz” (at-least-once) na ogromną skalowalność; używaj ich do wzbogacania danych wejściowych ze strumieni, routerów zdarzeń i mikroorkiestracji, w których zadania można uczynić idempotentnymi. Stosuj wzorce takie jak saga z zadaniami kompensującymi (compensating tasks) i scentralizowaną obsługą błędów; przenieś logikę ponownych prób (retries) i timeoutów do maszyny stanów, aby uprościć kod zadań.

Wyzwalacze zasobów obliczeniowych i mechanizmy przeciwciśnienia (Backpressure): Mapowania źródeł zdarzeń Lambda

Mapowania źródeł zdarzeń Lambda (ESM) łączą źródła oparte na odpytywaniu (poll-based) z funkcjami Lambda i kontrolują współbieżność, przetwarzanie wsadowe (batching) oraz obsługę błędów.

Filtrowanie zdarzeń w ESM zmniejsza liczbę wywołań poprzez odrzucanie nieistotnych zdarzeń już na poziomie mechanizmu odpytującego (poller). Użyj agregacji w oknach przesuwnych (tumbling window) na strumieniach z Lambda, aby agregować rekordy w czasie, realizując wzorce przetwarzania w mini-wsadach.

Automatyzacja operacji i naprawa: Systems Manager Automation i OpsCenter

AWS Systems Manager Automation dostarcza runbooki (dokumenty typu Automation) napisane w JSON/YAML, zawierające kroki takie jak aws:runCommand, aws:executeScript, aws:invokeLambda, aws:approve, aws:createStack i aws:executeAutomation. Automatyzacje akceptują parametry, generują dane wyjściowe, posiadają wersjonowanie z historią zmian i działają z dedykowaną rolą AutomationAssumeRole w celu zapewnienia zasady najmniejszych uprawnień oraz operacji międzykontowych i międzyregionalnych. Można kontrolować współbieżność i progi błędów dla całych flot, wymagać zatwierdzeń i okien Change Calendar oraz integrować się z powiadomieniami przez SNS. Automatyzacje można wywoływać zgodnie z harmonogramem, z reguł EventBridge (w celu naprawy w czasie niemal rzeczywistym w odpowiedzi na zdarzenia z AWS Health, CloudWatch lub API), z akcji naprawczych AWS Config w celu egzekwowania polityk (na przykład stosowania domyślnych tagów do woluminów EBS lub dołączania domyślnego profilu instancji do instancji EC2) oraz z OpsCenter.

OpsCenter agreguje problemy operacyjne w postaci OpsItems z alarmów CloudWatch, AWS Config, zdarzeń Health lub niestandardowych źródeł. Każdy OpsItem śledzi status, priorytet, deduplikację, powiązane zasoby i linki do runbooków. Można kojarzyć runbooki „jednego kliknięcia” dla standardowych napraw i włączać automatyczną naprawę, konfigurując reguły EventBridge lub Config tak, aby uruchamiały określoną automatyzację, gdy OpsItem jest tworzony lub aktualizowany do pasującego stanu (na przykład grupa bezpieczeństwa zezwalająca na dostęp przez SSH z 0.0.0.0/0, niezgodność z polityką łatania lub nieudane kopie zapasowe). Użyj Systems Manager Explorer, aby wizualizować stan floty i otwarte OpsItems na różnych kontach i w różnych regionach. To połączenie — OpsItems jako trwałe zapisy oraz runbooki Automation jako skodyfikowane poprawki — umożliwia audytowalne i spójne operacje na dużą skalę.

Wskazówki projektowe i operacyjne

Projektuj z myślą o idempotentności dla wszystkich konsumentów, ponieważ dostarczanie co najmniej raz (at-least-once) jest powszechne. Preferuj sterowane zdarzeniami rozgałęzienie (fan-out) za pomocą SNS lub reguł EventBridge dla równoległych reakcji o niskim opóźnieniu; preferuj SQS do buforowania obciążeń i ochrony producentów przed powolnością konsumentów; preferuj Kinesis, gdy wymagane jest ścisłe zachowanie kolejności w obrębie partycji (shard) i strumienie z możliwością ponownego odtwarzania na potrzeby analityki. Używaj EventBridge Pipes do lekkiej, zarządzanej integracji między źródłami a celami, gdy dedykowany konsument to przerost formy nad treścią, a EventBridge Scheduler do wyzwalaczy czasowych bez konieczności utrzymywania infrastruktury cron.

Dobierz odpowiednie wartości timeoutów i ponowień. W przypadku SQS, timeout widoczności musi przekraczać maksymalny czas przetwarzania wraz z ponowieniami; dla strumieni ogranicz liczbę ponowień i ustaw MaximumRecordAgeInSeconds, aby uniknąć niekończącego się ponownego odtwarzania błędnych rekordów. Systematycznie używaj kolejek DLQ lub miejsc docelowych dla niepowodzeń (on-failure destinations) oraz dodawaj dashboardy i alarmy dla metryk SQS ApproximateAgeOfOldestMessage, Lambda ConcurrentExecutions/Throttles/Errors, IteratorAge, Step Functions ExecutionFailed/TimedOut i EventBridge FailedInvocations. Gdy nieuniknione są skoki ruchu, a umowy SLA dotyczące opóźnień są rygorystyczne, użyj alokowanej współbieżności Lambda (provisioned concurrency), aby wstępnie przygotować (rozgrzać) pojemność. W kwestii zarządzania (governance), preferuj EventBridge z politykami zasobów dla routingu między kontami oraz archiwizację/odtwarzanie w celu wsparcia ewolucji konsumentów i odzyskiwania po incydentach.

Praktyczny scenariusz problemowy

Shopify musi zmodernizować przetwarzanie zamówień podczas wyprzedaży błyskawicznych (flash-sale), dodając jednocześnie analitykę w czasie rzeczywistym i zautomatyzowane działania naprawcze, gdy usługi podrzędne (downstream) spowalniają lub ulegają awarii.

  1. Przyjmowanie i rozgałęzianie zdarzeń dotyczących zamówień
  1. Buforowanie i przetwarzanie realizacji zamówień
  1. Orkiestracja wieloetapowej sagi
  1. Kierowanie zdarzeń domenowych do poszczególnych funkcjonalności
  1. Przesyłanie danych od partnera do wzbogacania za pomocą Pipe
  1. Analityka i wyszukiwanie w czasie rzeczywistym
  1. Automatyzacja oparta na czasie
  1. Zautomatyzowane działania naprawcze i operacyjne

Ten projekt wytrzymuje skoki ruchu podczas wyprzedaży błyskawicznych dzięki buforowaniu i rozgałęzianiu, zachowuje niezmienniki biznesowe poprzez orkiestrację, dostarcza analitykę w ciągu sekund i zamyka pętlę dzięki zautomatyzowanym działaniom naprawczym opartym na politykach.


Wysoka dostępność · Wszystkie domeny · Pamięć masowa

Przećwicz te pytania → · Testy na czas na ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Zdaj egzamin →

Przeglądaj Amazon →

Related guides

Dostęp all-in-one

Jedna subskrypcja. Każdy egzamin.

Każdy plan odblokowuje nieograniczone wyszukiwanie odpowiedzi, testy praktyczne, wyjaśnienia AI i pełną bibliotekę zasobów — w ponad 20 językach.

Miesięczny
24.87
Just €0.83/day
Wszystko w cenie:
  • Nieograniczone wyszukiwanie odpowiedzi
  • Nieograniczone testy praktyczne
  • Wyjaśnienia wspomagane AI
  • Pełna biblioteka zasobów
  • Ponad 20 języków
  • Cotygodniowe aktualizacje treści
  • Nagrody i polecenia
  • Priorytetowe wsparcie
Rozpocznij bezpłatny okres próbny

Karta kredytowa nie jest wymagana*

Najlepsza wartość
12 miesięcy
179.87
Just €0.49/daySave 40%
Wszystko w cenie:
  • Nieograniczone wyszukiwanie odpowiedzi
  • Nieograniczone testy praktyczne
  • Wyjaśnienia wspomagane AI
  • Pełna biblioteka zasobów
  • Ponad 20 języków
  • Cotygodniowe aktualizacje treści
  • Nagrody i polecenia
  • Priorytetowe wsparcie
Rozpocznij bezpłatny okres próbny

Karta kredytowa nie jest wymagana*

✓ Plan darmowy w zestawie · ✓ Anuluj w dowolnym momencie · ✓ Wszystkie plany odblokowują pełny produkt