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.
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.
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.
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.
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.
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%.
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.
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.
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.
ZaawansowanyKCL 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.
PoczatkujacyEnhanced 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.
ZaawansowanyKinesis 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).
PoczatkujacyKompresja 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%.
ZaawansowanyBatchowanie 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.
PoczatkujacyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon Kinesis bezposrednio w konsoli AWS.
Do czego sluzy Amazon Kinesis?
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.
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.
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.
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.
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.
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?
Czesto uzywane razem z Amazon Kinesis
Chcesz poznac Amazon Kinesis w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon Kinesis krok po kroku. Teoria + praktyka od zera.