Apache Kafka - Part 1 - Apa itu Kafka
Pendahuluan
Pernah dengar Kafka ? Messaging ? Event Streaming ?
Pernah lah yaa..
Apache Kafka termasuk salah satu alat bantu yang cukup terkenal untuk pemrosesan asynchronous.
Dari website officialnya kafka, disana disebutkan bahwa :
Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.
terjemahan bebas :
Apache Kafka adalah platform event streaming yang terdistribusi dan juga open-source, digunakan untuk pemrosesan data dengan performansi tinggi, analitikal streaming, integrasi data, dan juga aplikasi yang mission-critical.
Seperti biasa, definisinya memang kinyis..kinyiss.. dan perlu analisa lebih dalam lagi.
Ada kata kunci yang penting di Apache Kafka yaitu Event Streaming, dan bukan Messaging.
Streaming…???
Kayak youtube gitu ??
Iya, istilahnya sebenarnya semirip.
Streaming artinya proses pengiriman data secara terus-menerus
Apa yang sebenarya dilakukan ketika ketika kita menonton video streaming di youtube ?
- data video tidak menunggu semua didownload dulu, tapi didownload sebagian-sebagian kecil saja, tetapi terus-terusan.
- bahagian video yang sudah didownload tersebut kemudian disimpan di temporary folder/memory.
- bahagian video tersebut kemudian dijalankan/ditampilkan di browser, sehingga near realtime.
- kita bisa playback atau mengulangi kembali videonya di bagian sebelumnya.
- kecepatan menampilkan video tergantung dari masing-masing komputer, tergantung dari bandwidth dan spesifikasi komputer kita.
Secara sederhana, sebenarnya di kafka juga sama, coba kita lihat :
- data yang masuk ke kafka broker bisa terus-terusan.
- data yang masuk ke kafka broker akan disimpan di temporary, dan bisa disimpan lama.
- data tersebut bisa dikomsumsi oleh kafka client secepatnya.
- kita/kafka client bisa mengulangi kembali data yang sebelumnya sudah dikomsumsi, dengan bantuan konsep index dari offsetnya kafka.
- data tersebut bisa dikonsumsi oleh banyak kafka client, tergantung dari latency, instance client yang ada, jumlah broker, partition, dsb.
Begitulah namanya Streaming !!
Youtube adalah Video Streaming Platform.
Sementara Apache Kafka adalah Event Streaming Platform.
Mirip kan yaa…
Ada beberapa fitur utama yang membuat Apache Kafka sebagai Streaming platform :
- Messaging/Delivering data.
- Tempat penyimpanan sementara / Storage, dan dalam kasus Kafka dalam bentuk distributed storage, untuk meminimalisir kehilangan data.
- Datanya bisa dijalankan kembali/direplay dari posisi sebelumnya yang kita inginkan.
- Pemrosesan data, sehingga bisa dilakukan aggregasi data, transformasi data, atau pengayaan data, dengan memanfaatkan library Kafka Stream.
Bedanya dengan messaging ?
Ada yang bilang kalau Apache Kafka ini sama saja dengan messaging system seperti ActiveMq, RabbitMq, dll ?
Iya bener, messaging adalah salah satu fitur juga di Apache Kafka.
Akan tetapi ada fitur-fitur lain yang disebutkan diatas yang tidak dipunyai oleh platform messaging lainnya .
Yaitu :
- Sebagai storage atau penyimpanan sementara atau bisa dalam jangka waktu lama.
- Kita bisa melakukan pemrosesan ulang dari data-data lama dan dari posisi sebelumnya yang kita inginkan.
- Bisa dilakukan pemrosesan data, aggregasi data, transformasi data, atau pengayaan data, dengan memanfaatkan library Kafka Stream.
- Ada lagi namanya Kafka Connect, yaitu berupa sekumpulan connector yang bisa ditempelkan ke infrastruktur Kafka yang akan melakukan integrasi data dari dan ke sistem lain.
3 hal diatas sepertinya tidak bisa dilakukan secara sempurna di platform messaging lainnya.
Okeh. Kita akan lanjut part 2.