Kinesis Streams, Firehose, dan Analitik Waktu Nyata
Serap data streaming dengan Kinesis Data Streams, kirimkan ke S3 atau Redshift dengan Firehose, lalu analisis secara waktu nyata dengan Managed Service for Apache Flink.
Kinesis Streams, Firehose, dan Analitik Waktu Nyata adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Gambaran Umum Keluarga Kinesis
Amazon Kinesis adalah keluarga layanan untuk mengumpulkan, memproses, dan menganalisis data streaming waktu nyata. Tiga layanan intinya adalah: Kinesis Data Streams (pemrosesan khusus dengan latensi rendah), Kinesis Data Firehose (pengiriman yang dikelola sepenuhnya ke S3/Redshift/OpenSearch), dan Managed Service for Apache Flink (sebelumnya Kinesis Data Analytics) untuk SQL waktu nyata dan pemrosesan Flink. Setiap layanan ditujukan untuk bagian yang berbeda dalam alur streaming.
Arsitektur Kinesis Data Streams
Kinesis Data Stream adalah log tahan lama dan berurutan yang dipartisi menjadi shard. Setiap shard menyediakan throughput penulisan 1 MB/detik dan throughput pembacaan 2 MB/detik. Rekaman data dipertahankan selama 24 jam secara default (dapat diperpanjang menjadi 7 hari atau 365 hari). Produsen menulis rekaman ke stream; konsumen — Lambda, aplikasi KCL, Firehose, atau Flink — membaca dari satu atau beberapa shard secara paralel. Rekaman tidak dapat diubah setelah ditulis.
# Create a Kinesis Data Stream with 4 shards
aws kinesis create-stream \
--stream-name clickstream \
--shard-count 4
# Put a record into the stream
aws kinesis put-record \
--stream-name clickstream \
--partition-key 'user-123' \
--data 'eyJldmVudCI6ICJjbGljayJ9'Shard, Throughput, dan Penskalaan
Jumlah shard menentukan total throughput stream. Anda dapat membagi satu shard untuk menggandakan throughput atau menggabungkan dua shard untuk mengurangi biaya. Gunakan Enhanced Fan-Out agar setiap konsumen yang terdaftar memiliki throughput pembacaan 2 MB/detik miliknya sendiri, terpisah dari konsumen lain. Dengan demikian, pembatasan pembacaan saat beberapa aplikasi menggunakan stream yang sama dapat dihilangkan. Pantau GetRecords.IteratorAgeMilliseconds untuk mendeteksi keterlambatan konsumen.
# Split shard to increase throughput
aws kinesis split-shard \
--stream-name clickstream \
--shard-to-split shardId-000000000001 \
--new-starting-hash-key 170141183460469231731687303715884105728
# Register an enhanced fan-out consumer
aws kinesis register-stream-consumer \
--stream-arn arn:aws:kinesis:us-east-1:123456789012:stream/clickstream \
--consumer-name analytics-appKinesis Data Firehose: Pengiriman Terkelola
Kinesis Data Firehose adalah layanan yang dikelola sepenuhnya untuk menangkap, mengubah, dan mengirimkan data streaming ke berbagai tujuan, termasuk S3, Amazon Redshift, Amazon OpenSearch Service, Splunk, dan titik akhir HTTP. Tidak ada shard yang perlu dikelola — Firehose melakukan penskalaan secara otomatis. Anda mengonfigurasi ukuran buffer (1–128 MB) dan interval buffer (60–900 detik); Firehose mengirimkan data segera setelah salah satu batas tercapai.
# Create a Firehose delivery stream to S3
aws firehose create-delivery-stream \
--delivery-stream-name clickstream-to-s3 \
--s3-destination-configuration '{
"RoleARN": "arn:aws:iam::123456789012:role/FirehoseRole",
"BucketARN": "arn:aws:s3:::my-data-lake-123",
"Prefix": "landing/clickstream/year=!{timestamp:yyyy}/month=!{timestamp:MM}/",
"BufferingHints": {"SizeInMBs": 64, "IntervalInSeconds": 300},
"CompressionFormat": "GZIP"
}'Transformasi Data Firehose dengan Lambda
Firehose dapat memanggil fungsi Lambda pada setiap kelompok rekaman sebelum pengiriman untuk mengubah, memperkaya, atau memfilter data saat sedang diproses. Kasus penggunaan umum mencakup konversi JSON ke Parquet (melalui skema Glue), penyamaran bidang PII, atau pembuangan peristiwa bernilai rendah. Rekaman yang gagal ditransformasi secara opsional dikirim ke prefiks kesalahan S3 terpisah untuk diproses ulang, sehingga tidak ada data yang hilang.
# Lambda transform function signature for Firehose
def lambda_handler(event, context):
output = []
for record in event['records']:
import base64, json
payload = json.loads(base64.b64decode(record['data']))
# Drop events with no user_id
if not payload.get('user_id'):
output.append({'recordId': record['recordId'], 'result': 'Dropped', 'data': record['data']})
else:
output.append({'recordId': record['recordId'], 'result': 'Ok', 'data': record['data']})
return {'records': output}Managed Service for Apache Flink
Amazon Managed Service for Apache Flink (sebelumnya Kinesis Data Analytics) menjalankan aplikasi Apache Flink pada infrastruktur yang dikelola sepenuhnya. Gunakan layanan ini untuk analitik waktu nyata yang mempertahankan status: agregasi window geser, deteksi anomali, pencocokan pola pada rangkaian peristiwa, serta penggabungan data streaming dengan tabel referensi. Anda menulis kode Flink dalam Java, Python, atau Scala, sementara Flink mengelola checkpoint dan status tepat satu kali.
# Flink SQL-style tumbling window (conceptual)
# Count page views per URL every 5 minutes
CREATE TABLE clickstream (
url STRING,
event_time TIMESTAMP(3),
WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
) WITH ('connector' = 'kinesis', 'stream' = 'clickstream', ...);
SELECT
url,
COUNT(*) AS views,
TUMBLE_START(event_time, INTERVAL '5' MINUTE) AS window_start
FROM clickstream
GROUP BY url, TUMBLE(event_time, INTERVAL '5' MINUTE);Memilih antara Streams dan Firehose
Untuk ujian SAA-C03, pahami kriteria pengambil keputusan. Gunakan Kinesis Data Streams jika Anda memerlukan latensi di bawah satu detik, beberapa konsumen yang membaca secara bersamaan, atau logika pemrosesan khusus dengan kendali penuh atas retensi dan pemutaran ulang. Gunakan Firehose jika Anda hanya perlu mengirimkan data streaming secara andal ke S3, Redshift, atau OpenSearch dengan kode minimal, transformasi saat pemrosesan yang bersifat opsional, serta penskalaan otomatis pada latensi yang lebih tinggi (60 detik atau lebih).
Kinesis vs SQS: Pilihan Ujian Klasik
Pertanyaan SAA-C03 yang umum meminta Anda memilih antara Kinesis dan SQS. Perbedaan utamanya: Kinesis mempertahankan urutan pesan dalam satu shard, mendukung beberapa konsumen yang membaca data yang sama secara bersamaan, dan mempertahankan rekaman untuk diputar ulang. SQS menghapus pesan setelah dikonsumsi (tanpa pemutaran ulang), mode FIFO menjamin urutan yang ketat, dan layanan ini lebih sesuai untuk memisahkan layanan mikro. Jika skenario menyebutkan analitik waktu nyata atau pemutaran ulang, pilih Kinesis.
Produsen Kinesis: SDK dan KPL
Kinesis Producer Library (KPL) adalah klien ber-throughput tinggi untuk menulis ke Kinesis Data Streams dari aplikasi. KPL secara otomatis mengagregasikan beberapa rekaman kecil menjadi satu panggilan API (hingga 1 MB) dan menangani percobaan ulang dengan jeda bertahap. Hal ini secara drastis mengurangi biaya PUT per rekaman dan meningkatkan throughput per shard. Gunakan KPL untuk produsen bervolume tinggi seperti clickstream web, sensor IoT, atau alur log.
# Basic KPL usage (Java pseudocode, no backticks)
KinesisProducer producer = new KinesisProducer();
byte[] data = 'hello world'.getBytes();
ByteBuffer buf = ByteBuffer.wrap(data);
// addUserRecord handles aggregation and retry internally
ListenableFuture future = producer.addUserRecord('clickstream', 'partitionKey', buf);
Futures.addCallback(future, new FutureCallback() { ... });Pola Firehose ke Redshift
Arsitektur yang umum adalah menggunakan Firehose sebagai alur terkelola dari stream Kinesis atau produsen langsung ke Amazon Redshift untuk pergudangan data. Firehose terlebih dahulu menulis data ke bucket penahapan S3 perantara, lalu mengeluarkan perintah COPY untuk memuat data ke Redshift. Ini adalah cara paling efisien untuk memuat data streaming secara massal ke Redshift — penyisipan baris demi baris secara langsung ke Redshift akan sangat lambat karena beban tambahan per baris.
# Firehose Redshift destination (CLI snippet)
--redshift-destination-configuration '{
"RoleARN": "arn:aws:iam::123456789012:role/FirehoseRole",
"ClusterJDBCURL": "jdbc:redshift://cluster.xyz.us-east-1.redshift.amazonaws.com:5439/sales",
"CopyCommand": {
"DataTableName": "clickevents",
"CopyOptions": "JSON 'auto'"
},
"Username": "firehose_user",
"Password": "{{resolve:secretsmanager:redshift-pw}}",
"S3Configuration": {
"RoleARN": "...",
"BucketARN": "arn:aws:s3:::firehose-staging"
}
}'Memantau Kinesis dengan CloudWatch
Metrik CloudWatch penting untuk Kinesis: IncomingBytes dan IncomingRecords untuk mengukur throughput produsen, GetRecords.IteratorAgeMilliseconds untuk mengukur keterlambatan konsumen (nilai yang tinggi berarti konsumen tidak mampu mengimbangi laju data), serta WriteProvisionedThroughputExceeded untuk mendeteksi saat produsen mencapai batas shard. Tetapkan alarm CloudWatch pada usia iterator dan kondisi throughput yang disediakan terlampaui untuk memicu Auto Scaling shard melalui Application Auto Scaling.
# CloudWatch alarm on high consumer lag
aws cloudwatch put-metric-alarm \
--alarm-name kinesis-high-lag \
--metric-name GetRecords.IteratorAgeMilliseconds \
--namespace AWS/Kinesis \
--dimensions Name=StreamName,Value=clickstream \
--statistic Maximum \
--period 60 \
--threshold 60000 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 3 \
--alarm-actions arn:aws:sns:us-east-1:123456789012:ops-alertsPemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda mempelajari bahwa: Kinesis Data Streams menyediakan streaming yang tahan lama, berurutan, dan terbagi menjadi shard, dengan dukungan untuk banyak konsumen serta kemampuan pemutaran ulang, Kinesis Data Firehose menawarkan pengiriman yang dikelola sepenuhnya tanpa kode ke S3, Redshift, dan OpenSearch, serta Managed Service for Apache Flink memungkinkan analitik waktu nyata yang mempertahankan status pada stream. Selanjutnya, kita akan mempelajari 7 R strategi migrasi cloud.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kinesis Streams, Firehose, dan Analitik Waktu Nyata” gratis?
Ya — teks lengkap “Kinesis Streams, Firehose, dan Analitik Waktu Nyata” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kinesis Streams, Firehose, dan Analitik Waktu Nyata”?
Serap data streaming dengan Kinesis Data Streams, kirimkan ke S3 atau Redshift dengan Firehose, lalu analisis secara waktu nyata dengan Managed Service for Apache Flink. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?
Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Kinesis Streams, Firehose, dan Analitik Waktu Nyata” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?
Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membangun Danau Data di S3
- AWS Glue: ETL dan Katalog Data
- Amazon Athena: SQL Tanpa Server di S3
- Kinesis Streams, Firehose, dan Analitik Waktu Nyata