FAQ Amazon Kinesis Data Streams

Umum

Dengan Kinesis Data Streams, Anda dapat membangun aplikasi kustom sendiri yang akan memproses atau menganalisis data streaming untuk kebutuhan tertentu. Anda dapat menambahkan berbagai jenis data seperti aliran klik, log aplikasi, dan media sosial ke aliran data Kinesis dari ratusan ribu sumber. Dalam hitungan detik, data akan tersedia untuk dibaca dan diproses aplikasi Anda dari aliran.

Kinesis Data Streams mengelola infrastruktur, penyimpanan, jaringan, dan konfigurasi yang diperlukan untuk streaming data pada tingkat throughput data Anda. Anda tidak perlu khawatir dengan penyediaan, deployment, atau pemeliharaan yang dijalankan pada perangkat keras, perangkat lunak, atau layanan lain bagi aliran data Anda. Selain itu, Kinesis Data Streams secara sinkron mereplikasi data pada tiga Zona Ketersediaan, menyediakan ketersediaan dan ketahanan data yang tinggi. Secara default, Kinesis Data Streams menskalakan kapasitas secara otomatis, membuat Anda terbebas dari pekerjaan menyediakan dan mengelola kapasitas. Anda dapat memilih mode yang disediakan jika ingin menyediakan dan mengelola throughput sesuai kebutuhan Anda.

Kinesis Data Streams berguna untuk memindahkan data dari produsen data secara cepat dan memproses data tersebut secara berkelanjutan, baik dengan cara mengubah data tersebut sebelum dikirimkan ke penyimpanan data, menjalankan metrik dan analitik secara langsung, atau memperoleh aliran data yang lebih kompleks untuk pemrosesan lebih lanjut.

Berikut adalah skenario umum untuk menggunakan Amazon Kinesis Data Streams:

  • Masukan log dan umpan data yang dipercepat: Alih-alih menunggu untuk melakukan batch data tersebut, Anda dapat meminta produsen data untuk mendorong data ke aliran data Kinesis segera setelah data dihasilkan agar tidak hilang jika terjadi kegagalan pada produsen. Misalnya, log sistem dan aplikasi secara berkelanjutan dapat ditambahkan ke aliran data dan tersedia untuk pemrosesan dalam hitungan detik.
  • Metrik dan pelaporan secara waktu nyata: Anda dapat mengekstraksi metrik dan membuat laporan dari data aliran data Kinesis secara waktu nyata. Misalnya, Aplikasi Amazon Kinesis dapat bekerja pada metrik dan melakukan pelaporan log sistem dan aplikasi saat data tersebut mengalir masuk, alih-alih hanya menunggu untuk menerima batch data.
  • Analitik data secara waktu nyata: Dengan Kinesis Data Streams, Anda dapat menjalankan analitik data streaming secara waktu nyata. Misalnya, Anda dapat menambahkan clickstream ke aliran data Kinesis dan memerintahkan aplikasi Kinesis menjalankan analitik secara langsung, memberi Anda pengetahuan tentang data Anda hanya dalam hitungan menit, bukan dalam hitungan jam atau hari.
  • Koleksi data log dan peristiwa: Kumpulkan data log dan peristiwa dari berbagai sumber, seperti server, desktop, dan perangkat seluler. Kemudian, Anda dapat membangun aplikasi menggunakan Amazon Lambda atau Layanan Terkelola Amazon untuk Apache Flink untuk terus memproses data, membuat metrik, mendukung dasbor langsung, dan mengirimkan data agregat ke dalam penyimpanan seperti Amazon Simple Storage Service (Amazon S3).
  • Dukung aplikasi yang didorong peristiwa: Pasangkan dengan AWS Lambda secara cepat untuk merespons atau menyesuaikan kejadian langsung dalam aplikasi yang didorong peristiwa di lingkungan Anda, pada skala apa pun.

Setelah mendaftar di AWS, Anda dapat mulai menggunakan Kinesis Data Streams dengan cara membuat aliran data Kinesis baik melalui Konsol Manajemen AWS ataupun operasi CreateStream. Lalu konfigurasikan agar penghasil data terus menambahkan data ke aliran data Anda. Anda dapat secara opsional mengirim data dari sumber daya yang ada di layanan AWS, seperti Amazon DynamoDB; Amazon Aurora, Amazon CloudWatch, dan AWS IoT Core. Kemudian, Anda dapat menggunakan AWS Lambda, Layanan Terkelola Amazon untuk Apache Flink, atau Streaming AWS Glue untuk memproses data yang tersimpan di dalam Kinesis Data Streams secara cepat. Anda juga dapat membangun aplikasi kustom yang berjalan di Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), dan Amazon Elastic Kubernetes Service (Amazon EKS) menggunakan API Amazon Kinesis atau Pustaka Klien Amazon Kinesis (KCL).

Konsep inti

Serpihan memiliki urutan catatan data di dalam aliran. Serpihan berfungsi sebagai unit throughput dasar dari suatu aliran data Kinesis. Sebuah serpihan mampu mendukung 1 MB/detik, menulis 1.000 catatan per detik dan membaca 2 MB/detik. Batas serpihan memastikan performa aplikasi dapat diprediksi, agar memudahkan dalam merancang dan mengoperasikan alur kerja streaming data yang sangat andal. Produsen memasukkan catatan data ke dalam serpihan dan konsumen mendapatkan catatan data dari serpihan. Konsumen menggunakan serpihan untuk pemrosesan data paralel dan mengonsumsi data dalam urutan yang tepat di tempat data tersebut disimpan. Jika penulisan dan pembacaan melebihi batas serpihan, aplikasi produsen dan konsumen akan menemui hambatan, yang dapat ditangani dengan percobaan ulang.

Catatan adalah unit data dalam Amazon Kinesis data stream. Catatan terdiri dari nomor urutan, kunci partisi, dan blob data. Blob data adalah data yang menjadi perhatian yang ditambahkan oleh penghasil data Anda ke data stream. Ukuran blob data maksimum (muatan data sebelum pengkodean Base64) adalah 1 megabyte (MB).

Kunci partisi digunakan untuk mengisolasi dan merutekan catatan ke serpihan aliran data yang berbeda. Kunci partisi ditentukan oleh produsen data pada saat Anda menambahkan data ke aliran data Kinesis. Misalnya, katakanlah Anda memiliki aliran data dengan dua serpihan (serpihan 1 dan serpihan 2). Anda dapat mengonfigurasi produsen data Anda agar menggunakan dua kunci partisi (kunci A dan kunci B) sehingga semua catatan dengan kunci A akan ditambahkan ke serpihan 1 dan semua catatan dengan kunci B akan ditambahkan ke serpihan 2.

Nomor urutan adalah pengidentifikasi unik untuk setiap catatan. Nomor urutan ditetapkan oleh Amazon Kinesis pada saat produsen data memanggil operasi PutRecord atau PutRecords untuk menambahkan data ke aliran data Amazon Kinesis. Nomor urutan untuk kunci partisi yang sama umumnya meningkat seiring waktu; makin lama periode waktu antara permintaan PutRecord atau PutRecords, makin besar nomor urutannya.

Mode kapasitas pada Kinesis Data Streams menunjukkan bagaimana kapasitas dikelola dan penggunaan dibebankan untuk aliran data. Anda dapat memilih antara mode yang disediakan dan mode sesuai permintaan. Dalam mode yang disediakan, Anda menentukan jumlah serpihan untuk aliran data. Kapasitas total aliran data adalah jumlah dari kapasitas serpihannya. Anda dapat menambah atau mengurangi jumlah serpihan dalam aliran data sesuai kebutuhan, dan Anda membayar jumlah serpihan sesuai tarif per jam. Dalam mode sesuai permintaan, AWS mengelola serpihan untuk menyediakan throughput yang diperlukan. Anda hanya membayar untuk throughput aktual yang digunakan, dan Kinesis Data Streams secara otomatis akan mengakomodasi kebutuhan throughput beban kerja Anda pada saat sedang naik atau turun. Semua Kinesis Data Streams menulis dan membaca API, bersama dengan fitur-fitur opsional seperti Extended Retention dan Enhanced Fan-Out, didukung dalam kedua mode kapasitas tersebut.

Mode sesuai permintaan adalah yang paling cocok untuk beban kerja dengan pola lalu lintas yang tidak dapat diprediksi dan sangat bervariasi. Anda sebaiknya menggunakan mode ini jika ingin agar AWS mengelola kapasitas atas nama Anda atau ingin membayar dengan harga sesuai throughput. Mode yang disediakan adalah yang paling cocok digunakan pada lalu lintas yang dapat diprediksi, di mana kebutuhan kapasitas mudah untuk diperkirakan. Anda sebaiknya memilih menggunakan mode yang disediakan jika Anda ingin mendapatkan kontrol terperinci terhadap bagaimana data Anda didistribusikan pada seluruh serpihan. Mode yang disediakan juga cocok jika Anda ingin menyediakan serpihan tambahan sehingga aplikasi yang menggunakan data dapat memiliki lebih banyak throughput terbaca untuk mempercepat pemrosesan secara keseluruhan.

Ya. Anda dapat beralih antara mode sesuai permintaan dengan mode yang disediakan sebanyak dua kali sehari. Jumlah serpihan aliran data Anda akan tetap sama jika Anda beralih dari mode yang disediakan ke mode sesuai permintaan begitu pun sebaliknya. Dengan beralih dari mode kapasitas yang disediakan ke mode kapasitas sesuai permintaan, aliran data Anda akan mempertahankan jumlah serpihan apa pun yang dimilikinya sebelum transisi dilakukan. Tetapi, sejak saat itu Kinesis Data Streams akan memantau lalu lintas data Anda dan menskalakan naik turunnya jumlah serpihan aliran data sesuai permintaan tergantung pada peningkatan atau penurunan lalu lintas.

Menambahkan data ke Kinesis Data Streams

Anda dapat menambahkan data ke aliran data Kinesis melalui operasi PutRecord dan PutRecords, KPL, atau Amazon Kinesis Agent.

Operasi PutRecord memungkinkan satu catatan data dalam sebuah panggilan API, sedangkan operasi PutRecords memungkinkan beberapa catatan data sekaligus dalam sebuah panggilan API. Untuk informasi selengkapnya, lihat PutRecord dan PutRecords.

KPL merupakan pustaka yang mudah digunakan dan sangat dapat dikonfigurasi, yang membantu Anda memasukkan data ke aliran data Amazon Kinesis. KPL memberikan antarmuka yang sederhana, asinkron, dan andal yang memungkinkan Anda mencapai throughput produsen yang tinggi dengan sumber daya klien yang minimal.

Amazon Kinesis Agent adalah aplikasi Java yang sudah dibangun sebelumnya, yang memberikan cara mudah untuk mengumpulkan dan mengirimkan data ke aliran data Amazon Kinesis Anda. Anda dapat menginstal agen ini pada lingkungan server berbasis Linux seperti server web, server log, dan server basis data. Agen ini memantau file tertentu dan mengirim data ke data stream Anda. Untuk informasi selengkapnya, lihat Menulis dengan Agen.

Blob data, kunci partisi, dan nama aliran data Anda adalah parameter yang diperlukan pada panggilan PutRecord atau PutRecords. Ukuran blob data Anda (sebelum enkode Base64) dan kunci partisi akan dihitung sesuai throughput data dari aliran data Amazon Kinesis Anda, yang ditentukan oleh jumlah serpihan dalam aliran data.

Membaca dan memproses data dari Kinesis Data Streams

Konsumen adalah aplikasi yang memproses semua data dari aliran data Kinesis. Anda dapat memilih antara tipe konsumen fan-out bersama dan fan-out yang ditingkatkan untuk membaca data dari aliran data Kinesis. Konsumen fan-out bersama berbagi throughput baca serpihan sebesar 2 MB/detik serta lima transaksi per detik, dan memerlukan penggunaan API GetRecords. Konsumen fan-out yang ditingkatkan mendapatkan jatah throughput baca sebesar 2 MB/detik, memungkinkan banyak konsumen membaca data dari pengaliran yang sama secara paralel, tanpa bersaing untuk throughput baca dengan konsumen lain. Anda perlu menggunakan API SubscribeToShard jika memilih konsumen fan-out yang ditingkatkan. Sebaiknya gunakan konsumen fan-out yang ditingkatkan jika Anda ingin menambahkan lebih dari satu konsumen ke aliran data Anda.

Anda dapat menggunakan layanan terkelola seperti AWS Lambda, Layanan Terkelola Amazon untuk Apache Flink, dan AWS Glue untuk memproses data yang tersimpan di Kinesis Data Streams. Layanan terkelola ini menangani penyediaan dan pengelolaan infrastruktur yang mendasarinya sehingga Anda dapat fokus pada penulisan logika bisnis. Anda juga dapat mengirimkan data yang disimpan di dalam Kinesis Data Streams ke Amazon S3, Amazon OpenSearch Service, Amazon Redshift, dan titik akhir HTTP kustom menggunakan integrasi yang telah dibangun sebelumnya dengan Kinesis Data Firehose. Anda juga dapat membangun aplikasi kustom menggunakan Amazon Kinesis Client Library, library yang sudah dibangun sebelumnya, atau API Amazon Kinesis Data Streams.

KCL untuk Java, Python, Ruby, Node.js, dan .NET adalah pustaka yang akan membantu Anda membangun aplikasi Amazon Kinesis dengan mudah untuk membaca dan memproses data dari aliran data Amazon Kinesis.

KCL menangani masalah kompleks seperti penyesuaian dengan perubahan volume aliran data, penyeimbangan beban data streaming, pengoordinasian layanan terdistribusi, dan pemrosesan data yang toleran terhadap kegagalan. KCL memungkinkan Anda untuk berfokus pada logika bisnis pada saat membuat aplikasi. Lihat dokumentasi Kinesis Data Streams di sini untuk detail selengkapnya mengenai KCL.

API SubscribeToShard adalah API streaming performa tinggi yang melakukan push data dari serpihan ke konsumen dengan koneksi yang persisten tanpa adanya siklus permintaan dari klien. API SubscribeToShard menggunakan protokol HTTP/2 untuk mengirimkan data ke konsumen yang terdaftar setiap kali data baru masuk ke serpihan, biasanya dalam 70 milidetik, menawarkan pengiriman yang sekitar 65% lebih cepat dibandingkan dengan API GetRecords. Konsumen akan menikmati pengiriman cepat bahkan ketika banyak konsumen yang terdaftar secara bersamaan membaca dari serpihan yang sama.

Fan-out yang ditingkatkan adalah fitur opsional untuk konsumen Kinesis Data Streams yang memberikan pipa throughput logis sebesar 2 MB/dtk antara konsumen dengan serpihan. Hal ini memungkinkan Anda untuk menskalakan jumlah konsumen yang membaca dari aliran data secara paralel, sementara tetap mempertahankan kinerja yang tinggi.

Anda sebaiknya menggunakan fan-out yang ditingkatkan jika Anda memiliki atau memperkirakan akan memiliki banyak konsumen yang mengambil data dari pengaliran secara paralel, atau jika Anda memiliki setidaknya satu konsumen yang memerlukan penggunaan API SubscribeToShard untuk memberikan kecepatan pengiriman data sub-200 milidetik antara produsen dengan konsumen.

Konsumen menggunakan fan-out yang ditingkatkan dengan cara mengambil data menggunakan API SubscribeToShard. Nama konsumen yang terdaftar digunakan dalam SubscribeToShard, yang membuat penggunaan manfaat fan-out yang ditingkatkan tersedia bagi konsumen yang terdaftar.

Ya. Ya, Anda dapat membuat beberapa konsumen menggunakan fan-out yang ditingkatkan dan yang lainnya tidak menggunakan fan-out yang ditingkatkan pada waktu yang bersamaan. Penggunaan fan-out yang ditingkatkan tidak memengaruhi batas serpihan pada penggunaan GetRecords tradisional.

Ya. Untuk menggunakan SubscribeToShard, Anda perlu mendaftarkan konsumen yang mengaktifkan fan-out yang ditingkatkan. Secara default, konsumen Anda akan menggunakan fan-out yang ditingkatkan secara otomatis apabila data diambil melalui SubscribeToShard.

Mode sesuai permintaan

Aliran data baru yang dibuat dalam mode sesuai permintaan memiliki kuota 4 MB/detik dan 4.000 catatan per detik untuk penulisan. Secara default, pengaliran ini secara otomatis menaikkan skala hingga 200 MB/detik dan 200.000 catatan per detik untuk penulisan.

Aliran data dalam mode sesuai permintaan mengakomodasi hingga dua kali lipat kecepatan throughput tulis puncak sebelumnya yang diamati dalam 30 hari terakhir. Ketika throughput tulis aliran data Anda mencapai puncak yang baru, Kinesis Data Streams akan menskalakan kapasitas pengaliran secara otomatis. Misalnya, jika aliran data Anda memiliki throughput tulis yang bervariasi antara 10 MB/detik dan 40 MB/detik, Kinesis Data Streams akan memastikan bahwa Anda dapat dengan mudah memberikan lonjakan untuk menggandakan throughput puncak sebesar 80 MB/detik. Selanjutnya, jika aliran data yang sama mempertahankan throughput puncak baru sebesar 50 MB/detik, Data Streams akan memastikan tersedianya kapasitas yang cukup untuk menyerap 100 MB/detik throughput tulis. Namun, Anda akan melihat pengecualian “ProvisionedThroughputExceeded” jika lalu lintas Anda meningkat lebih dari dua kali lipat dari puncak sebelumnya dalam durasi 15 menit. Anda perlu mencoba kembali perintah pembatasan ini.

Kapasitas baca agregat mode sesuai permintaan akan meningkat secara proporsional terhadap kapasitas tulis throughput untuk memastikan bahwa aplikasi yang mengonsumsi data selalu memiliki throughput baca yang memadai untuk memproses data yang masuk secara langsung. Anda mendapatkan setidaknya dua kali lipat throughput tulis yang dapat digunakan untuk membaca data menggunakan API GetRecords. Kami menyarankan untuk menggunakan satu konsumen bersama dengan API GetRecord sehingga Anda akan memiliki cukup ruang untuk menyesuaikan diri saat aplikasi perlu memulihkan diri dari waktu henti. Untuk menambahkan lebih dari satu aplikasi yang mengonsumsi, Anda perlu menggunakan fan-out yang ditingkatkan, yang mendukung penambahan hingga 20 konsumen ke aliran data menggunakan API SubscribeToShard, yang masing-masing aplikasi memiliki throughput khusus.

Mode yang disediakan

Throughput aliran data Amazon Kinesis dirancang untuk menskalakan tanpa batas dengan meningkatkan jumlah serpihan dalam sebuah aliran data.

Anda dapat menaikkan skala kapasitas aliran data Kinesis dalam mode yang disediakan dengan cara memisahkan serpihan yang sudah ada menggunakan API SplitShard. Anda dapat menurunkan skala kapasitas dengan menggabungkan dua serpihan menggunakan API MergeShard. Atau, Anda dapat menggunakan API UpdateShardCount untuk menaikkan skala (atau menurunkan) kapasitas pengaliran ke jumlah serpihan tertentu.

Throughput aliran data Amazon Kinesis ditentukan oleh jumlah serpihan dalam aliran data. Ikuti langkah-langkah di bawah ini untuk memperkirakan jumlah serpihan awal yang diperlukan oleh aliran data Anda. Perhatikan bahwa Anda dapat menyesuaikan jumlah serpihan secara dinamis dalam aliran data Anda dengan cara resharding.

Perkirakan ukuran rata-rata catatan yang ditulis ke dalam aliran data dalam satuan kilobita (KB), yang dibulatkan hingga mendekati 1 KB. (average_data_size_in_KB)

Perkirakan jumlah catatan yang dibuat ke data stream per detik. (number_of_records_per_second)

Tentukan jumlah Amazon Kinesis Applications yang mengonsumsi data secara bersamaan dan secara terpisah dari aliran data. (number_of_consumers)

Hitung bandwidth tulis yang masuk dalam satuan KB (incoming_write_bandwidth_in_KB), yaitu sama dengan average_data_size_in_KB dikalikan number_of_records_per_seconds.

Hitung bandwidth baca yang keluar dalam satuan KB (outgoing_read_bandwidth_in_KB), yaitu sama dengan incoming_write_bandwidth_in_KB dikalikan number_of_consumers.

Anda kemudian dapat menghitung jumlah awal serpihan (number_of_shards) yang dibutuhkan aliran data Anda menggunakan rumus berikut: number_of_shards = (incoming_write_bandwidth_in_KB/1000, outgoing_read_bandwidth_in_KB/2000) maksimal

Throughput aliran data Amazon Kinesis dirancang untuk menskalakan tanpa batas. Kuota serpihan secara default adalah 500 serpihan per pengaliran untuk Wilayah AWS berikut: AS Timur (Virginia Utara), AS Barat (Oregon), dan Eropa (Irlandia). Untuk semua Wilayah lainnya, kuota serpihan secara default adalah 200 serpihan per pengaliran. Anda dapat meminta penambahan kuota serpihan menggunakan konsol AWS Service Quotas.

Dalam mode yang disediakan, batas kapasitas aliran data Kinesis ditentukan oleh jumlah serpihan dalam aliran data. Batas tersebut dapat terlampaui baik karena jumlah throughput data maupun karena jumlah catatan PUT. Jika batas kapasitas terlampaui, panggilan letakkan data akan ditolak dengan pengecualian ProvisionedThroughputExceeded. Jika hal ini terjadi karena peningkatan sementara pada kecepatan data input pada aliran data, percobaan ulang oleh produsen data nantinya akan menyelesaikan permintaan tersebut. Jika hal ini terjadi karena peningkatan terus-menerus pada kecepatan data input pada aliran data, sebaiknya Anda menambah jumlah serpihan dalam aliran data untuk memnyediakan kapasitas yang cukup bagi panggilan letakkan data agar berhasil dengan konsisten. Pada kasus di mana keduanya terjadi, metrik Amazon CloudWatch memungkinkan Anda untuk mempelajari tentang perubahan kecepatan data input aliran data dan terjadinya pengecualian ProvisionedThroughputExceeded.

Dalam mode yang disediakan, batas kapasitas aliran data Kinesis ditentukan oleh jumlah serpihan dalam aliran data. Batas tersebut dapat terlampaui baik karena throughput data maupun jumlah panggilan baca data. Ketika batas kapasitas terlampaui, panggilan baca data akan ditolak dengan pengecualian ProvisionedThroughputExceeded. Jika hal ini terjadi karena peningkatan sementara pada kecepatan data output pada aliran data, percobaan ulang oleh Amazon Kinesis Application nantinya akan menyelesaikan permintaan tersebut. Jika hal ini terjadi karena peningkatan terus-menerus pada kecepatan data output pada aliran data, sebaiknya Anda menambah jumlah serpihan dalam aliran data untuk menyediakan kapasitas yang cukup bagi panggilan baca data agar berhasil dengan konsisten. Pada kasus ketika keduanya terjadi, metrik Amazon CloudWatch memungkinkan Anda untuk mempelajari perubahan laju data output aliran data dan terjadinya pengecualian ProvisionedThroughputExceeded.

Retensi data yang diperpanjang dan retensi data jangka panjang

Periode retensi default 24 jam mencakup skenario di mana jeda intermiten dalam pemrosesan memerlukan penyesuaian dengan data waktu nyata. Retensi tujuh hari memungkinkan Anda memproses ulang data hingga tujuh hari untuk mengatasi potensi kehilangan data hilir. Retensi data jangka panjang yang melebihi tujuh hari dan hingga 365 hari memungkinkan Anda memproses ulang data lama untuk kasus penggunaan seperti pengujian kembali algoritma, pengisian ulang penyimpanan data, dan pengauditan.

Ya. Anda dapat menggunakan getShardIterator, GetRecords, dan APU SubscribeToShard yang sama untuk membaca data yang telah disimpan selama lebih dari tujuh hari. Konsumen dapat memindahkan iterator ke lokasi yang diinginkan pada pengaliran, mengambil peta serpihan (termasuk yang terbuka dan yang tertutup), dan membaca catatan.

Ya. Terdapat peningkatan API untuk ListShards, GetRecords, dan API SubscribeToShard. Anda dapat menggunakan opsi pemfilteran baru dengan parameter TimeStamp yang tersedia di API ListShards untuk mengambil peta serpihan dan meningkatkan kinerja pembacaan data lama secara efisien. Filter TimeStamp memungkinkan aplikasi untuk menemukan dan menghitung serpihan dari titik waktu yang Anda inginkan untuk memproses ulang data dan mengurangi kebutuhan untuk memulai di trim horizon. GetRecords dan SubscribeToShards memiliki bidang baru yaitu ChildShards, yang memungkinkan Anda menemukan serpihan turunan dengan cepat saat aplikasi selesai membaca data dari serpihan yang tertutup, alih-alih melewati peta serpihan lagi. Penemuan serpihan yang cepat akan mengefisienkan penggunaan sumber daya komputasi aplikasi untuk segala ukuran aliran, terlepas dari periode retensi data.

Anda sebaiknya memilih peningkatan API jika Anda berencana untuk menyimpan data lebih lama dan menskalakan kapasitas pengaliran Anda secara teratur. Operasi penskalaan pengaliran akan menutup serpihan yang sudah ada dan membuka serpihan turunan yang baru. Data di semua serpihan yang terbuka dan tertutup akan disimpan sampai dengan akhir periode retensi. Sehingga jumlah total serpihan akan meningkat secara linier dengan periode retensi yang lebih lama dan beberapa kali operasi penskalaan. Peningkatan pada peta serpihan ini mengharuskan Anda menggunakan ListShards dengan filter TimeStamp serta bidang ChildShards dalam GetRecords, dan API SubscribeToShard untuk penemuan serpihan yang efisien guna pengambilan data. Anda perlu memperbarui KCL Anda ke versi terakhir (1.x untuk konsumen standar dan 2.x untuk konsumen fan-out yang ditingkatkan) guna mendapatkan fitur ini.

Ya. Klien Kinesis Data Streams dapat menggunakan Registri Skema AWS Glue, sebuah fitur nirserver AWS Glue, baik melalui KPL maupun KCL atau melalui API Registri Skema AWS Glue di AWS Java SDK. Registri Skema tersedia tanpa biaya tambahan. 

Kunjungi dokumentasi pengguna Registri Skema untuk memulai dan mempelajari selengkapnya.

Mengelola Kinesis Data Streams

Terdapat dua cara untuk mengubah throughput aliran data Anda. Anda dapat menggunakan API UpdateShardCount atau AWS Management Console untuk menskalakan jumlah serpihan dalam suatu aliran data, atau Anda dapat mengubah throughput aliran data Amazon Kinesis dengan menyesuaikan banyaknya serpihan dalam aliran data (resharding).

Permintaan penskalaan yang umum mungkin memerlukan waktu beberapa menit saja untuk diselesaikan. Permintaan penskalaan yang lebih besar akan memerlukan waktu yang lebih lama dari permintaan penskalaan yang lebih kecil.

Ya. Anda dapat terus menambahkan data ke dalam dan membaca data dari Amazon aliran data Kinesis saat Anda menggunakan UpdateShardCount atau melakukan resharding untuk mengubah throughput aliran data, atau jika Kinesis Data Streams melakukannya secara otomatis dalam mode sesuai permintaan.

Konsol Manajemen Amazon Kinesis Data Streams menampilkan metrik operasional dan performa utama seperti throughput input dan output data dari aliran data Kinesis Anda. Kinesis Data Streams juga berintegrasi dengan Amazon CloudWatch sehingga Anda dapat mengumpulkan, menampilkan, dan menganalisis metrik CloudWatch terkait aliran data serta serpihan data dalam aliran data tersebut. Untuk informasi selengkapnya mengenai metrik Kinesis Data Streams, lihat Memantau Amazon Kinesis Data Streams dengan Amazon CloudWatch.

Perhatikan bahwa semua metrik tingkat aliran tersedia secara gratis. Semua metrik tingkat serpihan yang diaktifkan akan dikenai biaya sesuai harga Amazon CloudWatch.

Kinesis Data Streams berintegrasi dengan AWS Identity and Access Management (IAM), sebuah layanan yang membantu Anda mengontrol akses ke layanan dan sumber daya AWS secara aman untuk pengguna Anda. Misalnya, Anda dapat membuat kebijakan yang hanya mengizinkan pengguna atau grup tertentu untuk menambahkan data ke aliran data Anda. Anda juga dapat melampirkan kebijakan berbasis sumber daya ke aliran data atau konsumen terdaftar untuk mengontrol akses di tingkat sumber daya. Untuk informasi selengkapnya mengenai manajemen akses dan kontrol aliran data Anda, lihat Mengontrol Akses ke Sumber Daya Amazon Kinesis Data Streams menggunakan IAM.

Anda dapat menggunakan peran asumsi IAM atau kebijakan berbasis sumber daya untuk berbagi akses dengan akun lain. Untuk berbagi akses dengan fungsi AWS Lambda lintas akun, lampirkan kebijakan berbasis sumber daya ke aliran data atau konsumen Anda untuk memberikan akses ke peran eksekusi fungsi Lambda. Lihat selengkapnya di Menggunakan AWS Lambda dengan Amazon Kinesis.

Kinesis Data Streams berintegrasi dengan Amazon CloudTrail, sebuah layanan yang mencatat panggilan API AWS untuk akun Anda dan mengirim file log kepada Anda. Untuk informasi selengkapnya mengenai pencatatan panggilan API dan daftar operasi API Amazon Kinesis yang didukung, lihat Mencatat panggilan API Amazon Kinesis Menggunakan Amazon CloudTrail.

Amazon Kinesis Data Streams memungkinkan Anda menandai aliran data Amazon Kinesis untuk manajemen sumber daya dan biaya yang lebih mudah. Tanda adalah label yang ditentukan pengguna, yang dinyatakan sebagai pasangan nilai kunci yang membantu mengatur sumber daya AWS. Misalnya, Anda dapat menandai aliran data berdasarkan pusat biaya sehingga Anda dapat mengelompokkan dan melacak biaya Kinesis Data Streams berdasarkan pusat biaya. Untuk informasi selengkapnya mengenai penandaan Amazon Kinesis Data Streams, lihat Menandai Amazon Kinesis Data Streams Anda.

Keamanan

Amazon Kinesis aman secara default. Akses ke sumber daya Kinesis yang dibuat hanya dimiliki oleh pemilik akun dan aliran data. Kinesis mendukung autentikasi pengguna untuk mengontrol akses ke data. Anda dapat menggunakan kebijakan IAM untuk memberikan izin kepada pengguna atau grup pengguna secara selektif. Anda dapat secara aman menjalankan operasi put dan get data dari Kinesis melalui titik akhir SSL menggunakan protokol HTTPS. Jika memerlukan keamanan ekstra, Anda dapat menggunakan enkripsi sisi server dengan kunci AWS Key Management Service (AWS KMS) untuk mengenkripsi data yang tersimpan dalam aliran data Anda. AWS KMS memungkinkan Anda menggunakan kunci KMS yang dibuat oleh AWS untuk enkripsi, atau jika ingin, Anda dapat memasukkan kunci KMS milik sendiri ke dalam AWS KMS. Terakhir, Anda dapat menggunakan pustaka enkripsi milik sendiri untuk mengenkripsi data pada sisi klien sebelum meletakkan data ke dalam Kinesis.

Ya. Ya, Anda dapat mengakses API Kinesis Data Streams secara privat dari Amazon VPC dengan membuat VPC Endpoint. Dengan VPC Endpoint, perutean antara VPC dan API Kinesis Data Streams akan ditangani oleh jaringan AWS tanpa perlu gateway internet, gateway NAT, atau koneksi VPN. Generasi terkini Titik Akhir VPC yang digunakan oleh Kinesis Data Streams didukung oleh AWS PrivateLink, sebuah teknologi yang memungkinkan konektivitas privat antara layanan-layanan AWS yang menggunakan Antarmuka Jaringan Elastis (ENI) dengan IP privat pada VPC Anda. Untuk mempelajari selengkapnya mengenai PrivateLink, kunjungi dokumentasi PrivateLink.

Enkripsi

Ya, dan terdapat dua opsi untuk melakukannya. Anda dapat menggunakan enkripsi sisi server, sebuah fitur terkelola penuh yang secara otomatis mengenkripsi dan mendekripsi data saat Anda meletakkan dan mendapatkan data tersebut dari suatu aliran data. Anda juga dapat menulis data terenkripsi ke aliran data dengan mengenkripsi dan mendekripsi pada sisi klien.

Anda dapat menentukan enkripsi sisi server dibandingkan enkripsi sisi klien untuk salah satu alasan berikut:

  • Kesulitan untuk memberlakukan enkripsi sisi klien.
  • Menginginkan keamanan lapis kedua di atas enkripsi sisi klien.
  • Kesulitan menerapkan skema manajemen kunci sisi klien.

Enkripsi sisi server untuk Kinesis Data Streams secara otomatis mengenkripsi data menggunakan kunci AWS KMS yang ditentukan pengguna sebelum ditulis ke lapisan penyimpanan aliran data, dan mendekripsi data setelah diambil dari penyimpanan. Enkripsi membuat penulisan menjadi tidak mungkin dan muatan serta kunci partisi tidak dapat dibaca kecuali pengguna yang menulis atau membaca dari aliran data memiliki izin untuk menggunakan kunci yang dipilih untuk enkripsi pada aliran data. Sehingga, enkripsi sisi server dapat memudahkan pemenuhan persyaratan keamanan internal dan persyaratan kepatuhan yang mengatur data Anda.

Dengan enkripsi sisi server, aplikasi sisi klien Anda (produsen dan konsumen) tidak perlu mengetahui enkripsi, tidak perlu mengelola kunci KMS atau operasi kriptografi, dan data Anda dienkripsi saat diam dan bergerak di dalam layanan Kinesis Data Streams. Semua kunci KMS yang digunakan oleh fitur enkripsi sisi server disediakan oleh AWS KMS. AWS KMS memudahkan penggunaan kunci KMS yang dikelola AWS pada Kinesis (metode enkripsi “satu klik”), kunci yang dikelola pelanggan AWS KMS Anda sendiri, atau kunci KMS yang Anda impor untuk enkripsi.

Ya, panduan memulai tersedia di dokumentasi pengguna.

Mungkin. Hal ini bergantung pada kunci yang Anda gunakan untuk enkripsi dan izin yang mengatur akses ke kunci tersebut.

  • Jika Anda menggunakan kunci KMS yang dikelola AWS untuk Kinesis (alias kunci = aws/kinesis), aplikasi Anda tidak akan terpengaruh dengan pengaktifan atau penonaktifan enkripsi dengan kunci tersebut.
  • Jika Anda menggunakan kunci KMS yang berbeda, seperti kunci AWS KMS kustom atau yang Anda impor ke layanan AWS KMS, serta jika produsen dan konsumen aliran data Anda tidak memiliki izin untuk menggunakan kunci KMS yang digunakan untuk enkripsi, maka PUT Anda dan permintaan GET akan gagal. Sebelum Anda dapat menggunakan enkripsi sisi server, Anda harus mengonfigurasi kebijakan kunci AWS KMS untuk mengizinkan enkripsi dan dekripsi pesan. Contoh dan informasi selengkapnya mengenai izin AWS KMS, lihat Izin API AWS KMS: Tindakan dan Referensi Sumber Daya di Panduan Developer AWS Key Management Service atau panduan izin di dokumentasi pengguna enkripsi sisi server Kinesis Data Streams.

Ya, namun jika Anda menggunakan kunci KMS yang dikelola AWS untuk Kinesis dan tidak melebihi biaya penggunaan API KMS AWS Tingkat Gratis, penggunaan enkripsi sisi server Anda adalah gratis. Berikut ini menjelaskan biaya menurut sumber daya:

Kunci:

Kunci KMS yang dikelola AWS untuk Kinesis (alias = “aws/kinesis”) bersifat gratis.
Kunci KMS yang dikelola pelanggan dikenakan biaya kunci KMS. Pelajari selengkapnya.

Penggunaan API KMS:

Biaya penggunaan API berlaku untuk setiap kunci KMS, termasuk kunci kustom. Kinesis Data Streams memanggil KMS kurang lebih setiap lima menit pada saat merotasi kunci data. Pada 30 hari dalam satu bulan, total biaya panggilan API KMS yang diinisiasi oleh aliran data Kinesis semestinya kurang dari beberapa dolar. Perhatikan bahwa biaya ini menskalakan banyaknya kredensial pengguna yang Anda gunakan pada produsen dan konsumen data karena masing-masing kredensial pengguna memerlukan panggilan API yang unik ke AWS KMS. Ketika Anda menggunakan IAM role untuk autentikasi, setiap panggilan peran diasumsikan akan menghasilkan kredensial pengguna yang unik, dan Anda perlu melakukan cache kredensial pengguna yang akan dikembalikan melalui panggilan peran yang diasumsikan untuk menghemat biaya KMS.

Enkripsi sisi server Kinesis Data Streams tersedia di Wilayah AWS GovCloud dan semua Wilayah publik kecuali Wilayah Tiongkok (Beijing).

Semua operasi ini dapat diselesaikan menggunakan Konsol Manajemen AWS atau AWS SDK. Untuk mempelajari selengkapnya, lihat panduan memulai enkripsi sisi server Kinesis Data Streams.

Kinesis Data Streams menggunakan algoritma AES-GCM 256 untuk enkripsi.

Tidak. Hanya data baru yang tertulis dalam aliran data yang akan terenkripsi (atau dibiarkan terdekripsi) oleh aplikasi enkripsi baru.

Enkripsi sisi server mengenkripsi muatan pesan bersama dengan kunci partisi, yang ditentukan oleh aplikasi penghasil data stream.

Enkripsi sisi server adalah fitur khusus pengaliran.

Ya, dengan Konsol Manajemen AWS atau AWS SDK, Anda dapat memilih kunci KMS baru untuk diterapkan pada aliran data tertentu.

Tidak. Kinesis Data Streams saat ini tidak tersedia di AWS Tingkat Gratis. AWS Tingkat Gratis adalah program yang memungkinan uji coba gratis untuk sekelompok layanan AWS. Untuk detail selengkapnya mengenai AWS Tingkat Free, lihat AWS Tingkat Free.

Perjanjian Tingkat Layanan

SLA Kinesis Data Streams kami menjamin Persentase Waktu Aktif Bulanan setidaknya 99,9% untuk Kinesis Data Streams.

Anda berhak mendapatkan kredit SLA untuk Kinesis Data Streams menurut SLA Kinesis Data Streams jika lebih dari satu Zona Ketersediaan tempat Anda menjalankan tugas di dalam Wilayah yang sama memiliki Persentase Waktu Aktif Bulanan kurang dari 99,9% selama setiap siklus penagihan bulanan.

Untuk detail selengkapnya mengenai semua syarat dan ketentuan SLA, serta detail mengenai cara mengirimkan klaim, harap lihat SLA Amazon Kinesis Data Streams.

Harga dan penagihan

Kinesis Data Streams menerapkan harga bayar sesuai pemakaian yang sederhana. Tidak ada biaya di muka atau biaya minimum, dan Anda hanya membayar sumber daya yang digunakan. Kinesis Data Streams memiliki dua mode kapasitas—sesuai permintaan dan yang disediakan—dan keduanya memiliki opsi penagihan khusus.

Dengan mode kapasitas sesuai permintaan, Anda tidak perlu menentukan seberapa banyak throughput baca dan tulis yang Anda perkirakan dijalankan oleh aplikasi Anda. Dalam mode ini, penetapan harga adalah berdasarkan pada volume data yang diserap dan diambil bersama dengan biaya per jam untuk setiap aliran data di akun Anda. Terdapat biaya tambahan untuk fitur opsional: Retensi data yang diperpanjang (melebihi 24 jam pertama dan dalam tujuh hari pertama), Retensi data jangka panjang (lebih dari tujuh hari dan hingga satu tahun), dan Fan-Out yang Ditingkatkan. Untuk informasi selengkapnya mengenai biaya Kinesis Data Streams, lihat Harga Amazon Kinesis Data Streams.

Dengan mode kapasitas yang disediakan, Anda menentukan jumlah serpihan yang diperlukan untuk aplikasi berdasarkan kecepatan permintaan tulis dan bacanya. Serpihan adalah unit kapasitas yang menyediakan 1 MB/detik untuk menulis dan 2 MB/detik untuk membaca secara keseluruhan. Anda dikenai biaya untuk setiap serpihan dengan tarif per jam. Anda juga membayar untuk catatan yang ditulis ke dalam aliran data Kinesis Anda. Anda dikenakan biaya tambahan jika menggunakan fitur opsional seperti Retensi yang diperpanjang dan Fan-Out yang Ditingkatkan.

Berikut ini adalah dua dimensi inti dan tiga dimensi opsional pada mode yang disediakan Kinesis Data Streams:

  • Biaya Serpihan Per Jam ditentukan oleh banyaknya serpihan dalam aliran data Amazon Kinesis Anda.
  • Biaya Unit Muatan PUT ditentukan oleh jumlah unit muatan 25 KB yang ditambahkan oleh produsen data ke aliran data Anda.

Opsional:

  • Retensi data diperpanjang adalah biaya opsional yang ditentukan oleh jumlah jam shard yang dibebankan oleh data stream Anda. Ketika retensi data diperpanjang diaktifkan, Anda membayar tarif retensi yang diperpanjang untuk setiap shard dalam stream Anda.
  • Retensi data jangka panjang adalah biaya opsional dengan dua dimensi biaya: penyimpanan data jangka panjang dan pengambilan data jangka panjang. Penyimpanan data jangka panjang menunjukkan jumlah GB-bulan data yang disimpan untuk periode lebih dari tujuh hari dan hingga 365 hari. Pengambilan data jangka panjang menunjukkan jumlah GB data diambil yang telah disimpan selama lebih dari tujuh hari.
  • Fan-out yang ditingkatkan adalah biaya opsional dengan dua dimensi biaya: jam serpihan konsumen dan pengambilan data. Jam pelanggan-shard mencerminkan jumlah shard pada stream dikali jumlah pelanggan yang menggunakan fan-out yang ditingkatkan. Pengambilan data ditentukan oleh jumlah GB yang dikirim ke konsumen yang menggunakan fan-out yang ditingkatkan.

Untuk informasi selengkapnya mengenai biaya Kinesis Data Streams, lihat Harga Amazon Kinesis Data Streams.

Jam serpihan konsumen dihitung dengan mengalikan jumlah konsumen aliran yang terdaftar dengan jumlah serpihan dalam aliran. Ya, Anda hanya akan membayar untuk bagian jam yang dirata-ratakan dari konsumen yang didaftarkan untuk menggunakan fan-out yang ditingkatkan. Misalnya, jika biaya jam serpihan konsumen sebesar 0,015 USD, untuk 10 aliran data serpihan, konsumen yang menggunakan fan-out yang ditingkatkan ini akan dapat membaca dari 10 serpihan, dan karenanya biaya jam serpihan konsumen yang dikenakan sebesar 0,15 USD per jam (1 konsumen * 10 serpihan * 0,015 USD per jam serpihan konsumen). Jika terdapat dua konsumen yang terdaftar fan-out yang ditingkatkan secara bersamaan, biaya jam serpihan konsumen sebesar 0,30 USD per jam (2 konsumen * 10 serpihan * 0,015 USD).

Perbandingan dengan layanan AWS lainnya

Kinesis Data Streams dan Amazon MSK adalah platform streaming data populer yang akan membantu Anda membangun beban kerja streaming Anda sendiri dan memproses data untuk kebutuhan khusus. Kedua layanan tersebut dapat diskalakan, aman, dan memiliki ketersediaan tinggi. Keduanya dapat digunakan untuk menjalankan kasus penggunaan streaming seperti analisis web dan log waktu nyata, mempersonalisasi pengalaman pelanggan, arsitektur yang didorong peristiwa, analitik IoT, dan deteksi fraud waktu nyata. Saat memilih di antara keduanya, penting untuk mempertimbangkan kasus penggunaan dan persyaratan khusus Anda. Berikut adalah beberapa faktor yang perlu dipertimbangkan:

Keterbiasaan

  •  Jika Anda baru mengenal teknologi streaming, gunakan Kinesis Data Streams.
  • Jika Anda memiliki aplikasi yang berjalan di Apache Kafka, gunakan MSK. MSK memiliki program migrasi Kafka (KMP) bawaan dan panduan migrasi untuk memudahkan pengalaman migrasi.

Preferensi untuk sumber terbuka

  • Jika Anda memiliki preferensi untuk menggunakan teknologi sumber terbuka, sebaiknya gunakan MSK. Baik MSK maupun MSK Connect sangat kompatibel dengan Apache Kafka dan Kafka Connect sumber terbuka.

Kinesis Data Streams memungkinkan pemrosesan big data streaming secara waktu nyata. Layanan ini memberikan pengurutan catatan, serta kemampuan untuk membaca dan/atau mengulang catatan dengan urutan yang sama ke beberapa Amazon Kinesis Applications. Amazon Kinesis Client Library (KCL) mengirimkan semua catatan kunci partisi ke pemroses catatan yang sama sehingga memudahkan untuk membangun beberapa pembacaan aplikasi dari aliran data Kinesis yang sama (misalnya, untuk melakukan perhitungan, agregasi, dan pemfilteran). Amazon Simple Queue Service (Amazon SQS) menawarkan antrean yang andal dan host yang sangat mudah diskalakan untuk menyimpan pesan saat dikirimkan antara komputer satu dengan komputer lainnya. Amazon SQS memungkinkan Anda memindahkan data dengan mudah antara komponen-komponen aplikasi yang terdistribusi dan membantu Anda membangun aplikasi yang pesannya diproses secara independen (dengan semantik ack/fail tingkat pesan), seperti alur kerja terotomatisasi.

Kami menyarankan Kinesis Data Streams untuk kasus penggunaan dengan kebutuhan yang serupa dengan yang dijabarkan di bawah ini:

  • Perutean catatan terkait ke pemroses catatan yang sama (seperti pada streaming MapReduce). Misalnya, penghitungan dan agregasi akan lebih sederhana apabila semua catatan kunci yang diberikan dirutekan ke pemroses catatan yang sama.
  • Pengurutan catatan. Misalnya, Anda ingin mentransfer data log dari host aplikasi ke host pemrosesan/pengarsipan saat mempertahankan urutan pernyataan log-nya.
  • Kemampuan berbagai aplikasi untuk memakai stream yang sama secara bersamaan. Misalnya, Anda memiliki satu aplikasi yang memperbarui dasbor secara langsung dan aplikasi lain yang mengarsip data ke Amazon Redshift. Anda ingin kedua aplikasi tersebut menggunakan data dari pengaliran yang sama secara bersamaan dan independen.
  • Kemampuan untuk memakai catatan dengan urutan yang sama beberapa jam kemudian. Misalnya, Anda memiliki sebuah aplikasi penagihan dan sebuah aplikasi audit yang berjalan beberapa jam di belakang aplikasi penagihan. Karena Amazon Kinesis Data Streams menyimpan data hingga 365 hari, Anda dapat menjalankan aplikasi audit hingga 365 hari di belakang aplikasi penagihan.

Kami merekomendasikan Amazon SQS untuk kasus penggunaan dengan persyaratan yang serupa dengan berikut ini:

  • Semantik perpesanan (seperti ack/fail tingkat pesan) dan waktu henti visibilitas. Misalnya, Anda memiliki antrean item kerja dan ingin melacak penyelesaian yang berhasil dari masing-masing item secara independen. Amazon SQS melacak ack/gagal, sehingga aplikasi tidak perlu mempertahankan titik pemeriksaan/kursor yang persisten. Amazon SQS akan menghapus pesan yang ack dan mengirimkan kembali pesan yang gagal setelah batas waktu visibilitas yang dikonfigurasi.
  • Penundaan pesan tunggal. Misalnya, Anda memiliki antrean tugas dan perlu menjadwalkan tugas tunggal dengan penundaan. Dengan Amazon SQS, Anda dapat mengonfigurasikan pesan tunggal agar memiliki penundaan hingga 15 menit.
  • Peningkatan konkurensi/throughput secara dinamis pada waktu baca. Misalnya, Anda memiliki antrean kerja dan ingin menambahkan lebih banyak pembaca sampai backlog terhapus. Dengan Amazon Kinesis Data Streams, Anda dapat menaikkan skala ke jumlah serpihan yang mencukupi (namun, perhatikan bahwa Anda perlu menyediakan serpihan yang cukup terlebih dahulu).
  • Menggunakan kemampuan Amazon SQS untuk menskalakan secara transparan. Misalnya, Anda melakukan buffer permintaan dan memuat perubahan karena lonjakan muatan yang kadang terjadi atau karena sifat pertumbuhan bisnis Anda. Karena setiap permintaan yang dilakukan buffer dapat diproses secara terpisah, Amazon SQS dapat menskalakan secara transparan untuk menangani muatan tanpa instruksi penyediaan apa pun dari Anda.