Solusi data pengaliran: contoh - Solusi Data Pengaliran di AWS dengan Amazon Kinesis

Solusi data pengaliran: contoh

Skenario 1: Penawaran internet berdasarkan lokasi

Perusahaan InternetProvider menyediakan layanan internet dengan berbagai pilihan bandwidth untuk pengguna di seluruh dunia. Ketika pengguna mendaftar untuk internet, perusahaan InternetProvider memberi pengguna pilihan bandwidth yang berbeda-beda berdasarkan lokasi geografis pengguna. Mengingat persyaratan ini, perusahaan InternetProvider menerapkan Amazon Kinesis Data Streams untuk mengonsumsi detail dan lokasi pengguna. Detail pengguna dan lokasi diperkaya dengan opsi bandwidth yang berbeda-beda sebelum dipublikasikan balik ke aplikasi. AWS Lambda memungkinkan pengayaan waktu nyata ini.

Memproses aliran data dengan AWS Lambda

Memproses aliran data dengan AWS Lambda

Amazon Kinesis Data Streams

Amazon Kinesis Data Streams memungkinkan Anda membangun aplikasi kustom dan waktu nyata menggunakan kerangka kerja pemrosesan aliran populer dan memuat data pengaliran ke banyak penyimpanan data yang berbeda. Sebuah aliran Kinesis dapat dikonfigurasi untuk terus menerima peristiwa dari ratusan ribu produsen data yang dikirim dari sumber seperti clickstream situs web, sensor IoT, umpan media sosial, dan log aplikasi. Dalam hitungan milidetik, data tersedia untuk dibaca dan diproses oleh aplikasi Anda.

Saat menerapkan solusi dengan Kinesis Data Streams, Anda membuat aplikasi pemrosesan data kustom yang dikenal sebagai aplikasi Kinesis Data Streams. Sebuah aplikasi Kinesis Data Streams standar akan membaca data dari aliran Kinesis sebagai catatan data.

Data yang dimasukkan ke dalam Kinesis Data Streams dipastikan akan sangat tersedia dan elastis, dan tersedia dalam milidetik. Anda dapat terus menambahkan berbagai jenis data seperti clickstream, log aplikasi, dan media sosial ke aliran Kinesis dari ratusan ribu sumber. Dalam hitungan detik, data akan tersedia untuk Aplikasi Kinesis Anda yang dapat dibaca dan diproses dari aliran tersebut.

Amazon Kinesis Data Streams adalah layanan data pengaliran terkelola penuh. Layanan ini mengelola infrastruktur, penyimpanan, jaringan, dan konfigurasi yang diperlukan untuk melakukan pengaliran data pada tingkat throughput data.

Mengirim data ke Amazon Kinesis Data Streams

Ada beberapa cara untuk mengirim data ke Kinesis Data Streams, yang memberikan fleksibilitas dalam desain solusi Anda.

  • Anda dapat menulis kode dengan menggunakan salah satu SDK AWS yang didukung oleh sejumlah bahasa populer.

  • Anda dapat menggunakan Amazon Kinesis Agent, alat untuk mengirim data ke Kinesis Data Streams.

Amazon Kinesis Producer Library (KPL) menyederhanakan pengembangan aplikasi produsen dengan memungkinkan developer mencapai throughput penulisan yang tinggi ke satu atau beberapa aliran data Kinesis.

KPL adalah pustaka yang mudah digunakan dan sangat dapat dikonfigurasi yang Anda instal di host Anda. Layanan ini bertindak sebagai perantara antara kode aplikasi produsen Anda dan tindakan API Kinesis Streams. Untuk informasi lebih lanjut tentang KPL dan kemampuannya untuk menghasilkan peristiwa secara sinkron dan asinkron dengan contoh kode, lihat Menulis ke Kinesis Data Streams Anda Menggunakan KPL

Ada dua operasi yang berbeda dalam API Kinesis Data Streams yang menambahkan data ke sebuah aliran: PutRecords dan PutRecord. Operasi PutRecords mengirimkan sejumlah catatan ke aliran Anda per permintaan HTTP sementara PutRecord mengirimkan satu catatan per permintaan HTTP. Untuk mencapai throughput yang lebih tinggi untuk sebagian besar aplikasi, gunakan PutRecords.

Untuk informasi selengkapnya tentang API ini, lihat Menambahkan Data ke Stream. Detail untuk setiap operasi API dapat ditemukan di Referensi API Amazon Kinesis Data Streams.

Memproses data di Amazon Kinesis Data Streams

Untuk membaca dan memproses data dari aliran Kinesis, Anda perlu membuat aplikasi konsumen. Ada beragam cara untuk membuat konsumen untuk Kinesis Data Streams. Beberapa pendekatan ini termasuk menggunakan Amazon Kinesis Data Analytics untuk menganalisis data pengaliran dengan KCL, menggunakan AWS Lambda, tugas ETL pengaliran AWS Glue, dan menggunakan API Kinesis Data Streams secara langsung.

Aplikasi konsumen untuk Kinesis Data Streams dapat dikembangkan menggunakan KCL, yang membantu Anda mengonsumsi dan memproses data dari Kinesis Data Streams. KCL menangani banyak tugas kompleks yang terkait dengan komputasi terdistribusi seperti penyeimbangan beban di sejumlah instans, merespons kegagalan instans, melakukan checkpointing catatan yang diproses, dan bereaksi terhadap resharding. KCL memungkinkan Anda fokus pada penulisan logika pemrosesan catatan. Untuk informasi lebih lanjut tentang cara membangun aplikasi KCL Anda sendiri, lihat Menggunakan Kinesis Client Library.

Anda dapat berlangganan fungsi Lambda untuk secara otomatis membaca batch catatan dari aliran Kinesis Anda dan memprosesnya jika catatan terdeteksi di aliran. AWS Lambda secara berkala memilih aliran (sekali per detik) untuk catatan baru dan ketika mendeteksi catatan baru, layanan ini memanggil fungsi Lambda yang meneruskan catatan baru sebagai parameter. Fungsi Lambda hanya dijalankan ketika catatan baru terdeteksi. Anda dapat memetakan fungsi Lambda ke konsumen throughput bersama (iterator standar)

Anda dapat membangun konsumen yang menggunakan fitur yang disebut enhanced fan-out ketika Anda memerlukan throughput khusus yang tidak boleh dibagi dengan konsumen lain yang menerima data dari aliran. Fitur ini memungkinkan konsumen menerima catatan dari aliran dengan throughput hingga dua MB data per detik per pecahan.

Untuk sebagian besar kasus, menggunakan Kinesis Data Analytics, KCL, AWS Glue, atau AWS Lambda harus digunakan untuk memproses data dari aliran. Namun, jika Anda mau, Anda dapat membuat aplikasi konsumen dari awal menggunakan API Kinesis Data Streams. API Kinesis Data Streams menyediakan metode GetShardIterator dan GetRecords untuk mengambil data dari aliran.

Dalam model pull ini, kode Anda mengekstrak data langsung dari pecahan aliran. Untuk informasi selengkapnya tentang menulis aplikasi konsumen Anda sendiri menggunakan API, lihat Mengembangkan Konsumen Kustom dengan Throughput Bersama Menggunakan AWS SDK for Java. Detail tentang API dapat ditemukan di Referensi API Amazon Kinesis Data Streams.

Memproses aliran data dengan AWS Lambda

AWS Lambda memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Dengan Lambda, Anda dapat menjalankan kode hampir untuk semua jenis aplikasi atau layanan backend tanpa administrasi. Cukup unggah kode Anda dan Lambda akan menangani segala yang diperlukan untuk menjalankan dan menskalakan kode Anda dengan ketersediaan yang tinggi. Anda dapat mengatur kode untuk secara otomatis dipicu dari layanan AWS lainnya atau memanggilnya secara langsung dari aplikasi web atau seluler.

AWS Lambda terintegrasi secara native dengan Amazon Kinesis Data Streams. Kompleksitas polling, checkpointing, dan penanganan kesalahan akan dikurangi saat Anda menggunakan integrasi native ini. Hal ini memungkinkan kode fungsi Lambda berfokus pada pemrosesan logika bisnis.

Anda dapat memetakan fungsi Lambda ke throughput bersama (iterator standar), atau ke konsumen yang berdedikasi dengan enhanced fan-out. Dengan iterator standar, Lambda melakukan polling terhadap setiap pecahan dalam aliran Kinesis Anda untuk catatan yang menggunakan protokol HTTP. Untuk meminimalkan latensi dan memaksimalkan throughput baca, Anda dapat membuat konsumen aliran data dengan enhanced fan-out. Konsumen aliran dalam arsitektur ini mendapatkan koneksi khusus untuk setiap pecahan tanpa bersaing dengan aplikasi lain yang membaca dari aliran yang sama. Amazon Kinesis Data Streams mendorong catatan ke Lambda melalui HTTP/2.

Secara default, AWS Lambda memanggil fungsi Anda segera setelah catatan tersedia dalam aliran. Untuk melakukan buffer terhadap catatan untuk skenario batch, Anda dapat menerapkan periode batch hingga lima menit di sumber peristiwa. Jika fungsi Anda mengembalikan kesalahan, Lambda akan mencoba ulang batch tersebut sampai pemrosesannya berhasil atau datanya kedaluwarsa.

Ringkasan

Perusahaan InternetProvider memanfaatkan Amazon Kinesis Data Streams untuk melakukan pengaliran detail dan lokasi pengguna. Aliran catatan dikonsumsi oleh AWS Lambda untuk memperkaya data dengan opsi bandwidth yang disimpan di pustaka fungsi. Setelah pengayaan, AWS Lambda memublikasikan opsi bandwidth kembali ke aplikasi. Amazon Kinesis Data Streams dan AWS Lambda menangani penyediaan dan pengelolaan server, sehingga memungkinkan perusahaan InternetProvider lebih fokus pada pengembangan aplikasi bisnis.