Amazon Kinesis
Analytics Cloud Practitioner Solutions Architect Associate

Amazon Kinesis

Amazon Kinesis

Zbieraj, przetwarzaj i analizuj dane strumieniowe w czasie rzeczywistym. Od logów aplikacji po dane IoT - miliony rekordów na sekundę z minimalnym opóźnieniem.

Amazon Kinesis to rodzina serwisów do przetwarzania danych strumieniowych (streaming) w czasie rzeczywistym. Zamiast czekać na batch ETL co godzinę czy dobę, Kinesis pozwala analizować dane w milisekundach od ich wygenerowania - logi, kliknięcia, dane IoT, transakcje finansowe.

Kinesis składa się z czterech komponentów: Data Streams (niski poziom, pełna kontrola nad konsumentami), Data Firehose (automatyczna dostawa do S3/Redshift/OpenSearch), Data Analytics (SQL i Apache Flink na strumieniach) oraz Video Streams (przetwarzanie wideo w real-time). Razem tworzą kompletną platformę do streaming analytics.

Czy wiesz, ze...

Kinesis Data Streams może przechowywać dane do 365 dni (rozszerzona retencja). To oznacza, że możesz "cofnąć się w czasie" i ponownie przetworzyć dane z ostatniego roku - przydatne gdy wdrażasz nowy algorytm i chcesz przetestować go na historycznych danych.

Pro Tip

Jeśli nie potrzebujesz niskiego latency i pełnej kontroli nad konsumentami, wybierz Firehose zamiast Data Streams. Firehose jest znacznie prostszy w obsłudze - nie musisz zarządzać shardami, pisać konsumentów ani martwić się o checkpointy. Dane automatycznie trafiają do S3 z kompresją i partycjonowaniem.

Kinesis Data Streams to serwis do zbierania i przetwarzania strumieni danych w czasie rzeczywistym. Moze przyjmowac setki tysiecy rekordow na sekunde z wielu zrodel jednoczesnie. Dane sa dostepne do przetwarzania w ciagu milisekund od wyslania, co umozliwia budowanie aplikacji real-time: dashboardy, alarmy, transformacje ETL i analityka streamingowa.

1

Tworzenie strumienia (Data Stream)

Strumien Kinesis to logiczny kanal danych skladajacy sie z shardow. Mozesz wybrac tryb On-Demand (AWS automatycznie skaluje shardy) lub Provisioned (sam okreslasz liczbe shardow). On-Demand jest prostszy i obsluguje do 200 MB/s write - idealny na start. Provisioned daje pelna kontrole nad kosztami przy przewidywalnym obciazeniu.

2

Konfiguracja shardow - jednostka przepustowosci

Kazdy shard obsluguje: 1 MB/s lub 1000 rekordow/s na wejsciu i 2 MB/s na wyjsciu. Potrzebna liczba shardow = max(input_MB_s / 1, output_MB_s / 2). Np. 50 MB/s input wymaga min. 50 shardow. Dane w shardzie sa uporzadkowane wedlug partition key - rekordy z tym samym kluczem zawsze trafiaja do tego samego sharda, co gwarantuje kolejnosc.

3

Producent wysyla rekordy

Producent wysyla rekord z: partition key (determinuje shard), data blob (do 1 MB) i opcjonalny explicit hash key. Mozesz uzywac: AWS SDK (PutRecord/PutRecords - do 500 rekordow w jednym batchu), Kinesis Producer Library (KPL - automatyczne batchowanie, agregacja, retry) lub Kinesis Agent (daemon do streamowania logow z plikow). KPL agreguje male rekordy w jeden - zmniejsza koszty o 50-80%.

4

Konsument przetwarza strumien

Konsumenty czytaja rekordy z shardow sekwencyjnie. Opcje: AWS Lambda (event-driven, batch size 1-10000, automatyczne skalowanie per shard), Kinesis Client Library (KCL - Java/Python, checkpointing w DynamoDB, automatyczne rebalansowanie shardow miedzy workerami), Kinesis Data Analytics (SQL/Flink na strumieniu). Kazdy konsument utrzymuje pozycje (checkpoint) w strumieniu.

5

Enhanced Fan-Out dla wielu konsumentow

Standardowy odczyt: wszyscy konsumenty dzieleni 2 MB/s na shard (GetRecords z 5 wywolan/s na shard). Enhanced Fan-Out: kazdy zarejestrowany konsument otrzymuje dedykowane 2 MB/s na shard przez HTTP/2 push (SubscribeToShard). Przy 5+ konsumentach Enhanced Fan-Out jest tanszy i daje nizsze latency (70ms vs 200ms+). Mozesz miec do 20 konsumentow Enhanced Fan-Out na strumien.

6

Okres retencji danych

Domyslna retencja to 24 godziny (darmowa). Mozesz ja wydluzyc do 7 dni (platne: $0.02/shard/h) lub do 365 dni z long-term retention ($0.023/GB/miesiac przechowywane w S3-backed storage). Dluzsza retencja pozwala na replay danych - np. po naprawie buga w konsumencie mozesz ponownie przetworzyc ostatnie 7 dni. TRIM_HORIZON iterator zaczyna od najstarszego dostepnego rekordu.

Praktyczne wzorce i optymalizacje dla produkcyjnych wdrozen Kinesis - od tuningu producentow po strategie przetwarzania konsumentow.

Shard splitting i merging - dynamiczne skalowanie

Monitoruj metryki IncomingBytes i IncomingRecords per shard. Gdy WriteProvisionedThroughputExceeded rosnie - splituj hot shardy. Gdy utilizacja spada ponizej 30% - merguj sasiednie shardy dla oszczednosci. W trybie On-Demand skalowanie jest automatyczne, ale w Provisioned musisz to robic sam. Uzywaj UpdateShardCount dla skalowania calego strumienia (podwajanie/polowanie shardow) zamiast recznego split/merge.

Zaawansowany

KCL vs Lambda - wybor konsumenta

Lambda: zero zarzadzania, automatyczne skalowanie, idealny dla transformacji trwajacych ponizej 15 minut, platisz za czas wykonania. KCL: pelna kontrola, dlugo dzialajace procesy, checkpointing, idealny dla custom logiki i stateful processing. Regula: Lambda dla prostych transformacji i routingu, KCL dla zlozonych pipelinow z agregatami i sessjami. Mozesz miec oba na jednym strumieniu.

Poczatkujacy

Enhanced Fan-Out dla wielu konsumentow

Bez Enhanced Fan-Out, 5 konsumentow na shardzie dzieli 2 MB/s (400 KB/s kazdy) i 5 wywolan GetRecords/s. Z Enhanced Fan-Out kazdy dostaje dedykowane 2 MB/s z push delivery (nizsze latency). Break-even: przy 3+ konsumentach Enhanced Fan-Out jest bardziej oplacalny. Koszt: $0.015/shard/h + $0.013/GB danych. Rejestruj konsumentow przez RegisterStreamConsumer API.

Zaawansowany

Kinesis Data Firehose - ETL bez kodu

Firehose automatycznie dostarcza dane z Kinesis Data Streams do S3 (Parquet/ORC), Redshift, OpenSearch lub Splunk bez pisania konsumenta. Wbudowana transformacja przez Lambda (np. filtrowanie, wzbogacanie), automatyczna kompresja (GZIP, Snappy), partycjonowanie po dacie i custom prefixach. Buforowanie: 1-15 minut lub 1-128 MB (co pierwsze). Platisz tylko za przetworzone GB ($0.029/GB).

Poczatkujacy

Kompresja danych na producencie

Kinesis liczy limity per shard na podstawie nieskompresowanego rozmiaru rekordu (do 1 MB). Kompresuj dane po stronie producenta (GZIP/LZ4) przed wyslaniem - zmniejsza transfer i koszty. LZ4 oferuje lepsza szybkosc kompresji, GZIP lepszy ratio. Przy uzyciu KPL wlacz agregacje (aggregation) - laczy male rekordy w jeden, co redukuje liczbe wywolan API i koszty PutRecords nawet o 80%.

Zaawansowany

Batchowanie na producencie

PutRecords API przyjmuje do 500 rekordow (max 5 MB) w jednym wywolaniu - 10x taniej niz 500 pojedynczych PutRecord. KPL automatycznie batchuje rekordy i agreguje male wiadomosci. Konfiguruj RecordMaxBufferedTime (max czas buforowania, np. 100-500ms) i AggregationMaxCount (max rekordow w agregacie). Monitoruj UserRecordsPending - rosnie gdy producent nie nadaza z wysylaniem.

Poczatkujacy

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon Kinesis bezposrednio w konsoli AWS.

Do czego sluzy Amazon Kinesis?

01

Analityka logów w real-time

Zbieraj logi z setek serwerów przez Kinesis Data Streams, przetwarzaj Lambdą i wysyłaj przez Firehose do OpenSearch. Dashboardy aktualizują się w sekundach, nie godzinach.

02

Przetwarzanie danych IoT

Miliony urządzeń IoT wysyłają dane do Kinesis. Data Analytics filtruje anomalie w real-time, Firehose archiwizuje surowe dane w S3 do późniejszej analizy.

03

Clickstream analytics

Śledź zachowanie użytkowników na stronie w czasie rzeczywistym. Analizuj ścieżki konwersji, wykrywaj problemy UX i personalizuj treści na bieżąco.

04

Wykrywanie oszustw finansowych

Analizuj transakcje w real-time za pomocą Data Analytics (Apache Flink). Wykrywaj podejrzane wzorce i blokuj oszustwa w milisekundach.

Co musisz wiedziec?

Kinesis Data Streams

Niskopoziomowy serwis streamingu. Dane podzielone na shardy - każdy shard obsługuje 1 MB/s zapisu i 2 MB/s odczytu. Retencja danych od 24 godzin do 365 dni.

Shard

Jednostka przepustowości Data Streams. Każdy shard = 1 000 rekordów/s lub 1 MB/s zapisu, 2 MB/s odczytu. Skalujesz strumień dodając lub usuwając shardy.

Kinesis Data Firehose

W pełni zarządzana dostawa danych. Automatycznie buforuje, kompresuje, szyfruje i dostarczacza dane do S3, Redshift, OpenSearch lub Splunk. Zero zarządzania.

Kinesis Data Analytics

Przetwarzanie strumieni za pomocą SQL lub Apache Flink. Twórz aplikacje streaming: agregacje okienne, filtrowanie, joiny między strumieniami - bez zarządzania infrastrukturą.

Kinesis Video Streams

Bezpieczne przesyłanie, przechowywanie i przetwarzanie strumieni wideo z kamer, dronów i urządzeń IoT. Integracja z Rekognition do analizy wideo.

Producer i Consumer

Producer wysyła dane do strumienia (np. aplikacja, agent, IoT device). Consumer odczytuje i przetwarza dane (np. Lambda, aplikacja KCL, Data Analytics).

Architektura: Pipeline real-time z Kinesis Data Streams

Architektura streamingowa, w ktorej dane z wielu zrodel (IoT, aplikacje, logi) sa przetwarzane w czasie rzeczywistym przez roznych konsumentow i zapisywane do roznych docelowych systemow storage i analityki.

Zrodla danych (IoT/Aplikacje) Urzadzenia IoT, aplikacje webowe, serwery logow - KPL lub SDK
PutRecords (batch 500)
Kinesis Data Streams
Kinesis Data Streams Strumien z N shardami, kazdy 1 MB/s in + 2 MB/s out, retencja 24h-365 dni
Event source mapping
AWS Lambda
AWS Lambda Real-time transformacja i routing, batch size do 10000, skalowanie per shard
Enhanced Fan-Out (2 MB/s)
KCL Consumer (EC2/ECS)
KCL Consumer (EC2/ECS) Stateful processing, agregacje okienkowe, checkpointing w DynamoDB
Zapis wynikow
DynamoDB / S3 / Redshift
DynamoDB / S3 / Redshift DynamoDB dla real-time lookup, S3 Parquet dla data lake, Redshift dla analityki
Dobieraj partition key rownomiernie rozkladajacy dane - np. device_id lub user_id. Unikaj kluczy z niska kardynalnoscia (np. status) - powoduja hot shardy i throttling.
Przy Lambda consumer ustaw bisectBatchOnFunctionError=true i maxRetryAttempts, aby uniknac zatrzymania przetwarzania na jednym blednym rekordzie (poison pill).
Monitoruj metryki GetRecords.IteratorAgeMilliseconds - rosnie gdy konsument nie nadaza z przetwarzaniem. Alarm przy wartosci powyzej 60000 ms (1 minuta opoznienia).

Ile kosztuje Amazon Kinesis?

Data Streams (On-Demand)

Płacisz za GB danych zapisanych i odczytanych. Automatyczne skalowanie, brak zarządzania shardami.

$0.08/GB zapis + $0.04/GB odczyt

Data Streams (Provisioned)

Opłata za shard na godzinę. Ty decydujesz o liczbie shardów.

$0.015/shard-godz. (~$11/shard-mies.)

Data Firehose

Opłata za GB danych dostarczonych do celu. Brak kosztów za prowisionowanie czy zarządzanie.

$0.029/GB (pierwsze 500 TB/mies.)

Data Analytics (Flink)

Opłata za KPU (Kinesis Processing Unit) na godzinę. Każde KPU = 1 vCPU + 4 GB RAM.

$0.11/KPU-godz. (~$80/KPU-mies.)

Przyklady AWS CLI

Utwórz strumień Data Streams

Tworzy strumień Kinesis w trybie On-Demand z automatycznym skalowaniem

aws kinesis create-stream \
 --stream-name moj-strumien-logow \
 --stream-mode-details StreamMode=ON_DEMAND

Wyślij rekord do strumienia

Wysyła pojedynczy rekord danych do strumienia Kinesis

aws kinesis put-record \
 --stream-name moj-strumien-logow \
 --partition-key user-123 \
 --data "eyJldmVudCI6ImxvZ2luIiwidGltZSI6IjIwMjQtMDEtMTVUMTI6MDA6MDBaIn0="

Utwórz Firehose delivery stream

Tworzy strumień Firehose dostarczający dane do bucketu S3

aws firehose create-delivery-stream \
 --delivery-stream-name logs-to-s3 \
 --delivery-stream-type DirectPut \
 --s3-destination-configuration \
    RoleARN=arn:aws:iam::123456789012:role/firehose-s3,BucketARN=arn:aws:s3:::moje-logi,Prefix=raw/

Sprawdź metryki strumienia

Wyświetla opis strumienia z liczbą shardów i statusem

aws kinesis describe-stream-summary \
 --stream-name moj-strumien-logow

Quiz: Amazon Kinesis

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 4

1. Jaka jest różnica między Kinesis Data Streams a Firehose?

2. Co to jest shard w Kinesis Data Streams?

3. Do jakich celów Kinesis Data Firehose może dostarczać dane?

4. Który komponent Kinesis pozwala przetwarzać strumienie za pomocą SQL?

Chcesz poznac Amazon Kinesis w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon Kinesis krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy