Apa itu Apache Flink?
Apache Flink adalah mesin terdistribusi sumber terbuka untuk pemrosesan stateful pada set data yang tidak terikat (aliran) dan terikat (batch). Aplikasi pemrosesan aliran didesain untuk berjalan secara kontinu, dengan waktu henti minimal, dan memproses data saat diserap. Apache Flink didesain untuk pemrosesan latensi rendah, menjalankan komputasi dalam memori, untuk ketersediaan tinggi, menghilangkan titik kegagalan tunggal, dan untuk menskalakan secara horizontal.
Fitur Apache Flink mencakup manajemen status yang canggih dengan jaminan konsistensi yang tepat satu kali, semantik pemrosesan waktu-peristiwa dengan penanganan data rusak dan terlambat yang canggih. Flink telah dikembangkan untuk mengutamakan streaming, dan menawarkan antarmuka pemrograman terpadu untuk pemrosesan aliran dan batch.
Mengapa Anda harus menggunakan Apache Flink?
Apache Flink digunakan untuk membangun berbagai jenis aplikasi streaming dan batch, karena memiliki banyak sekali fitur.
Beberapa jenis aplikasi umum yang didukung oleh Apache Flink adalah:
- Aplikasi berbasis peristiwa, menyerap peristiwa dari satu atau lebih aliran peristiwa dan menjalankan komputasi, pembaruan status, atau tindakan eksternal. Pemrosesan stateful memungkinkan penerapan logika di luar Transformasi Pesan Tunggal, yang hasilnya tergantung pada riwayat peristiwa yang diserap.
- Aplikasi Analitik Data, mengekstrak informasi dan wawasan dari data. Dieksekusi secara tradisional dengan mengueri kumpulan data terbatas, dan menjalankan kembali kueri atau mengubah hasil untuk memasukkan data baru. Dengan Apache Flink, analisis dapat dijalankan dengan cara terus memperbarui, streaming kueri atau memproses peristiwa yang diserap dalam waktu nyata, terus mengeluarkan dan memperbarui hasil.
- Aplikasi pipeline data, mengubah dan memperkaya data untuk dipindahkan dari satu penyimpanan data ke penyimpanan data lainnya. Secara tradisional, extract-transform-load (ETL) dijalankan secara berkala, dalam batch. Dengan Apache Flink, prosesnya dapat beroperasi secara terus-menerus, sehingga dapat memindahkan data dengan latensi rendah ke tujuannya.
Bagaimana cara kerja Apache Flink?
Flink adalah mesin pemrosesan aliran dengan throughput tinggi dan latensi rendah. Aplikasi Flink terdiri dari grafik aliran data asiklik kompleks arbitrer, serta tersusun dari aliran dan transformasi. Data diserap dari satu atau lebih sumber data dan dikirimkan ke satu atau lebih tujuan. Sistem sumber dan tujuan dapat berupa aliran, antrean pesan, atau penyimpanan data, dan mencakup file, basis data populer, serta mesin pencari. Transformasi dapat bersifat stateful, seperti agregasi pada jendela waktu atau deteksi pola yang kompleks.
Toleransi kesalahan dicapai dengan dua mekanisme terpisah: titik pemeriksaan status aplikasi yang otomatis dan berkala, disalin ke penyimpanan persisten, untuk memungkinkan pemulihan otomatis jika terjadi kegagalan; titik penyimpanan sesuai permintaan, yang menyimpan gambar status eksekusi yang konsisten, agar dapat berhenti dan melanjutkan, memperbarui atau membagi tugas Flink Anda, mempertahankan status aplikasi saat berhenti dan dimulai ulang. Mekanisme titik pemeriksaan dan titik simpan asinkron, mengambil snapshot status yang konsisten tanpa “menghentikan dunia”, sementara aplikasi terus memproses peristiwa.
Apa saja manfaat dari Apache Flink?
Proses set data tidak terbatas (stream) dan terbatas (batch)
Apache Flink dapat memproses set data tidak terbatas dan terbatas, yaitu data stream dan batch. Aliran yang tidak terbatas memiliki awal, tetapi hampir tidak terbatas dan tidak pernah berakhir. Pemrosesan secara teoretis tidak akan pernah berhenti.
Data terbatas, seperti tabel, bersifat terbatas dan dapat diproses dari awal hingga akhir dalam waktu yang terbatas.
Apache Flink menyediakan algoritma dan struktur data untuk mendukung pemrosesan terbatas dan tidak terbatas melalui antarmuka pemrograman yang sama. Aplikasi yang memproses data tidak terbatas berjalan secara terus-menerus. Aplikasi yang memproses data terbatas akan mengakhiri operasinya ketika mencapai akhir set data input.
Jalankan aplikasi dalam skala besar
Apache Flink didesain untuk menjalankan aplikasi stateful pada hampir semua skala. Pemrosesan diparalelkan ke ribuan tugas, didistribusikan ke banyak mesin, secara bersamaan.
Status juga dipartisi dan didistribusikan secara horizontal, sehingga memungkinkan untuk mempertahankan beberapa terabita di banyak mesin. Status diperiksa ke penyimpanan persisten secara bertahap.
Performa dalam memori
Data yang mengalir melalui aplikasi dan status dipartisi di banyak mesin. Oleh karena itu, komputasi dapat diselesaikan dengan mengakses data lokal, biasanya dalam memori.
Konsistensi status tepat satu kali
Aplikasi di luar transformasi pesan tunggal bersifat stateful. Logika bisnis harus mengingat peristiwa atau hasil menengah. Apache Flink menjamin konsistensi keadaan internal, bahkan jika terjadi kegagalan serta saat aplikasi berhenti dan dimulai ulang. Efek dari setiap pesan pada status internal selalu diterapkan tepat satu kali, terlepas dari kemungkinan aplikasi menerima duplikat dari sumber data saat pemulihan atau saat dimulai ulang.
Berbagai macam konektor
Apache Flink memiliki sejumlah konektor yang telah terbukti ke sistem perpesanan dan streaming yang populer, penyimpanan data, mesin pencari, serta sistem file. Beberapa contohnya adalah Apache Kafka, Amazon Kinesis Data Streams, Amazon SQS, Active MQ, Rabbit MQ, NiFi, OpenSearch dan ElasticSearch, DynamoDB, HBase, dan basis data apa pun yang menyediakan klien JDBC.
Berbagai tingkat abstraksi
Apache Flink menawarkan berbagai tingkat abstraksi untuk antarmuka pemrograman. Dari streaming SQL dan API Tabel tingkat yang lebih tinggi, menggunakan abstraksi yang sudah dikenal seperti tabel, penggabungan, dan pengelompokan. API DataStream menawarkan tingkat abstraksi yang lebih rendah tetapi juga kontrol yang lebih besar, dengan semantik stream, windowing, dan pemetaan. Terakhir, API ProcessFunction menawarkan kontrol yang baik pada pemrosesan setiap pesan dan kontrol langsung terhadap status. Semua antarmuka pemrograman bekerja dengan lancar menggunakan set data tidak terbatas (stream) dan terbatas (tabel). Tingkat abstraksi yang berbeda dapat digunakan dalam aplikasi yang sama, sebagai alat yang tepat untuk menyelesaikan setiap masalah.
Berbagai bahasa pemrograman
Apache Flink dapat diprogram dengan berbagai bahasa, dari SQL streaming tingkat tinggi hingga Python, Scala, Java, tetapi juga bahasa JVM lainnya seperti Kotlin.
Apa saja kasus penggunaan Apache Flink?
Kasus penggunaan Apache Flink meliputi:
-
Deteksi kecurangan, deteksi anomali, peringatan berbasis aturan, personalisasi UX waktu nyata adalah contoh kasus penggunaan untuk aplikasi berbasis peristiwa. Flink sangat cocok untuk semua kasus penggunaan ini, yang memerlukan pemrosesan aliran peristiwa secara stateful, mempertimbangkan evolusi dari waktu ke waktu, mendeteksi pola kompleks, atau menghitung statistik selama jendela waktu untuk mendeteksi penyimpangan dari ambang batas yang diharapkan.
-
Pemantauan kualitas, analisis ad-hoc data langsung, analisis clickstream, evaluasi eksperimen produk adalah kasus penggunaan analitik streaming yang dapat didukung oleh Flink secara efisien. Memanfaatkan abstraksi tingkat tinggi dari antarmuka pemrograman SQL atau API Table, Anda dapat menjalankan analitik yang sama pada streaming data langsung dan kumpulan data historis.
-
Memantau sistem file dan menulis data ke dalam log, mewujudkan aliran peristiwa ke basis data, serta membangun dan menyempurnakan indeks pencarian secara bertahap adalah kasus penggunaan yang didukung oleh ETL berkelanjutan secara efisien. Memanfaatkan rangkaian konektor yang luas, Flink dapat langsung membaca dari beberapa jenis penyimpanan data, menyerap aliran peristiwa perubahan, dan bahkan menangkap perubahan secara langsung. Dengan terus menyerap dan memproses perubahan, serta memperbarui sistem tujuan secara langsung, Flink dapat mengurangi penundaan sinkronisasi data menjadi hitungan detik atau kurang.
Siapa yang menggunakan Apache Flink?
NortonLifeLock
NortonLifeLock adalah perusahaan keamanan siber global dan privasi internet yang menawarkan layanan kepada jutaan pelanggan untuk keamanan perangkat, serta identitas dan privasi online untuk rumah dan keluarga.
NortonLifeLock menawarkan produk VPN sebagai layanan freemium kepada pengguna. Oleh karena itu, mereka perlu menerapkan batas penggunaan dalam waktu nyata untuk menghentikan pengguna freemium menggunakan layanan ketika penggunaan mereka melebihi batas. Melakukan tindakan ini dengan cara yang andal dan terjangkau merupakan suatu tantangan bagi NortonLifeLock.
NortonLifeLock menyederhanakan implementasi agregasi tingkat pengguna dan perangkat yang mengadopsi Apache Flink.
Samsung SmartThings
Sebagai anak perusahaan independen Samsung, SmartThings adalah salah satu ekosistem IoT terkemuka di dunia, yang menciptakan cara paling mudah bagi siapa pun untuk membuat rumah cerdas.
Samsung SmartThings mengalami masalah seperti adanya sumber daya yang dialokasikan khusus untuk aplikasi individual. Hal ini menyebabkan penundaan dan penurunan performa saat memproses data. Masalah ini akhirnya menyebabkan tingginya biaya overhead ketika mempertahankan beban kerja dalam operasi. Mereka harus merancang ulang platform data.
Mereka beralih dari Apache Spark ke Apache Flink.
BT Group
BT Group adalah penyedia telekomunikasi dan jaringan terkemuka di Inggris Raya serta penyedia layanan dan solusi komunikasi global terkemuka, yang melayani pelanggan di 180 negara. Kegiatan utamanya di Inggris Raya meliputi penyediaan telepon kabel, seluler, broadband, dan TV (termasuk Olahraga), serta berbagai produk dan layanan melalui jaringan tetap dan seluler yang terkonvergensi untuk konsumen, bisnis, dan pelanggan sektor publik.
BT membutuhkan aplikasi pemantauan layanan untuk mendukung peluncuran Digital Voice, produk konsumen barunya yang memungkinkan panggilan suara definisi tinggi melalui jaringan broadband-nya di Inggris.
BT membangun layanan analitik berbasis peristiwa menggunakan Apache Flink untuk menyerap, memproses, dan memvisualisasikan data layanan.
Autodesk
Autodesk, penyedia perangkat lunak desain dan rekayasa 3D terkemuka, yang ingin melakukan lebih dari sekadar membuat dan menghadirkan perangkat lunak. Autodesk juga ingin memastikan agar jutaan pengguna globalnya memiliki pengalaman terbaik dalam menjalankan perangkat lunak tersebut.
Autodesk membuat perangkat lunak untuk orang-orang yang menciptakan sesuatu. Mereka melayani 200+ juta pelanggan. Mereka perlu menghilangkan silo untuk menemukan dan memperbaiki masalah pelanggan dengan lebih cepat. Mereka menginginkan cara yang konsisten untuk mengumpulkan dan mengukur metrik dengan tim operasi kecil tanpa meningkatkan biaya atau membuat penguncian data.
NHL
National Hockey League adalah liga tertua kedua dari empat liga olahraga tim profesional utama di Amerika Utara. Saat ini, NHL terdiri dari 32 Klub Anggota, yang masing-masing mencerminkan komposisi internasional Liga, dengan pemain dari lebih dari 20 negara diwakili dalam daftar nama tim.
NHL menghadapi beberapa tantangan teknis seperti menentukan fitur yang diperlukan dan metode pemodelan untuk memprediksi peristiwa yang memiliki banyak ketidakpastian, serta menentukan cara menggunakan data sensor PPT streaming untuk mengidentifikasi tempat pertandingan diselenggarakan, pemain yang terlibat, dan kemungkinan setiap pemain dalam memenangkan pertandingan, semuanya terjadi dalam ratusan milidetik.
Dengan memanfaatkan Apache Flink, NHL tidak hanya mampu memprediksi pemenang pertandingan, tetapi juga membangun fondasi untuk memecahkan beberapa masalah serupa dalam waktu nyata dan hemat biaya.
Poshmark
Poshmark adalah pasar sosial terkemuka untuk gaya baru maupun bekas bagi wanita, pria, anak-anak, hewan peliharaan, rumah, dan banyak lagi. Komunitas mereka yang beranggotakan lebih dari 80 juta orang di seluruh AS, Kanada, Australia, dan India membentuk masa depan belanja agar menjadi sederhana, terbuka, dan berkelanjutan.
Poshmark telah berfokus pada pencapaian pertumbuhan tingkat atas melalui personalisasi dan peningkatan pengalaman pengguna. Pendekatan awal yang menggunakan pemrosesan batch untuk personalisasi dan keamanan tidak dapat memenuhi harapan untuk peningkatan pengalaman pelanggan.
Poshmark mendesain personalisasi waktu nyata menggunakan pengayaan data waktu nyata dengan Apache Flink.
Bagaimana AWS dapat membantu menjalankan aplikasi Apache Flink di cloud?
Layanan Terkelola Amazon untuk Apache Flink adalah solusi terkelola penuh untuk menjalankan aplikasi Apache Flink. Layanan Terkelola Amazon untuk Apache Flink mengurangi kompleksitas saat membangun, mengelola, dan mengintegrasikan aplikasi Apache Flink dengan layanan AWS lainnya. Dengan Layanan Terkelola Amazon untuk Apache Flink, tidak ada server yang perlu dikelola dan tidak ada biaya minimum atau biaya penyiapan. Penyiapan sangat tersedia secara default. Status aplikasi terkelola penuh dan disimpan ke backend berdaya tahan tinggi untuk toleransi kesalahan. Aplikasi ini dikontrol dengan API sederhana, untuk menghentikan, memulai, mengonfigurasi, dan menskalakan aplikasi.
Studio Layanan Terkelola Amazon untuk Apache Flink menawarkan antarmuka notebook interaktif untuk Apache Flink. Dengan notebook Apache Zeppelin, Anda dapat menjalankan kode SQL, Python, dan Scala di Apache Flink, untuk pengembangan dan eksperimen, serta pemeriksaan atau visualisasi data.
Amazon EMR juga mendukung Apache Flink sebagai aplikasi YARN sehingga Anda dapat mengelola sumber daya sekaligus menjalankan aplikasi lain di dalam klaster.
Apache Flink secara native mendukung Kubernetes. Anda bisa meng-hosting sendiri Apache Flink di lingkungan dalam kontainer seperti Amazon Elastic Kubernetes Service (Amazon EKS) atau mengelolanya sendiri secara penuh menggunakan Amazon Elastic Compute Cloud (Amazon EC2).
Mulai Apache Flink di AWS dengan membuat akun sekarang juga.