Apa Itu Apache Kafka? Pengertian, Cara Kerja, dan Contoh Penerapannya

Apache Kafka adalah platform distributed event streaming yang digunakan untuk memproses, menyimpan, dan mendistribusikan data secara real-time dalam skala besar. Kafka banyak digunakan pada arsitektur microservices, sistem event-driven, dan aplikasi yang membutuhkan throughput tinggi serta fault tolerance.

Artikel ini akan membahas Apache Kafka secara lengkap dengan bahasa yang mudah dipahami, mulai dari pengertian, masalah yang diselesaikan Kafka, cara kerja, komponen utama, hingga contoh penerapan nyata di dunia industri.


Masalah pada Arsitektur Microservices Tanpa Kafka

Dalam aplikasi modern seperti e-commerce, biasanya terdapat banyak layanan (microservices), misalnya:

  • Order Service

  • Payment Service

  • Inventory Service

  • Notification Service

  • Analytics Service

Pada arsitektur sederhana, layanan-layanan ini sering saling memanggil secara langsung (synchronous). Ketika sebuah order dibuat, Order Service akan memanggil layanan lain satu per satu.

Dampak Negatif Pendekatan Ini

  1. Tight Coupling
    Setiap layanan saling bergantung. Jika satu layanan bermasalah, layanan lain ikut terhambat.

  2. Single Point of Failure
    Jika Inventory Service down selama 10 menit, proses order bisa terhenti berjam-jam.

  3. Tidak Skalabel
    Saat traffic tinggi (misalnya Black Friday), sistem tidak mampu menangani lonjakan request.

  4. User Experience Buruk
    Pengguna melihat loading lama karena semua proses berjalan sinkron.

Masalah-masalah inilah yang melatarbelakangi kebutuhan akan Apache Kafka.


Apache Kafka sebagai Solusi

Apache Kafka bekerja dengan pendekatan event-driven architecture. Alih-alih service saling memanggil, setiap kejadian penting akan diubah menjadi event dan dikirim ke Kafka.

Kafka berperan sebagai perantara (broker) yang menerima, menyimpan, dan mendistribusikan event ke layanan-layanan yang membutuhkan.

Analogi sederhananya, Kafka seperti kantor pos:

  • Pengirim tidak perlu tahu siapa penerima

  • Pesan dikirim ke satu tempat

  • Penerima mengambil pesan sesuai kebutuhan


Konsep Dasar Apache Kafka

1. Event

Event adalah representasi dari suatu kejadian yang sudah terjadi, misalnya:

  • Order dibuat

  • Pembayaran gagal

  • Stok barang berkurang

Event biasanya berisi:

  • Key

  • Value (payload)

  • Metadata (timestamp, partition, offset)


2. Producer

Producer adalah aplikasi atau service yang mengirim event ke Kafka.

Contoh:

  • Order Service mengirim event OrderCreated

  • Payment Service mengirim event PaymentFailed

Producer hanya mengirim data dan tidak menunggu respon dari consumer.


3. Topic

Topic adalah kategori atau channel tempat event disimpan di Kafka.

Contoh topic:

  • orders

  • payments

  • inventory

Topic berfungsi untuk mengelompokkan event berdasarkan jenisnya, mirip seperti tabel dalam database, tetapi bersifat append-only (data hanya ditambah).


4. Consumer

Consumer adalah service yang membaca event dari topic.

Satu topic bisa memiliki banyak consumer, misalnya:

  • Notification Service membaca topic orders

  • Inventory Service membaca topic orders

  • Analytics Service membaca topic orders

Setiap consumer memproses event sesuai kebutuhannya masing-masing.


5. Consumer Group

Consumer Group adalah kumpulan consumer dengan group.id yang sama.

Fungsinya:

  • Membagi beban pemrosesan

  • Memungkinkan scaling horizontal

  • Menangani failover otomatis

Jika satu consumer mati, Kafka akan mengalihkan partisi ke consumer lain dalam group yang sama.


6. Partition

Partition adalah pembagian data di dalam topic.

Manfaat partition:

  • Memungkinkan parallel processing

  • Meningkatkan throughput

  • Mendukung scaling Kafka

Satu topic bisa memiliki banyak partition, dan setiap partition diproses oleh satu consumer dalam satu consumer group.


7. Broker

Broker adalah server Kafka yang:

  • Menyimpan data event di disk

  • Menangani request dari producer dan consumer

  • Melakukan replikasi data untuk fault tolerance

Satu cluster Kafka biasanya terdiri dari beberapa broker.


Apache Kafka Bukan Database

Walaupun Kafka menyimpan data, Kafka bukan pengganti database.

Perbedaannya:

  • Database menyimpan state saat ini

  • Kafka menyimpan riwayat kejadian (event log)

Kafka digunakan untuk:

  • Distribusi data

  • Streaming

  • Realtime analytics

Sedangkan database tetap digunakan untuk penyimpanan data utama aplikasi.


Kafka vs Message Broker Tradisional

Perbedaan utama Kafka dengan message queue biasa (seperti RabbitMQ):

  • Kafka menyimpan pesan dalam waktu lama (retention)

  • Consumer bisa membaca ulang data

  • Kafka cocok untuk data streaming dan analytics

Analogi sederhana:

  • Kafka seperti Netflix (on-demand)

  • Message Queue seperti TV live


Kafka Streams dan Real-Time Processing

Kafka menyediakan Kafka Streams API untuk pemrosesan data real-time.

Digunakan untuk:

  • Agregasi data

  • Perhitungan real-time

  • Deteksi kondisi tertentu (contoh: stok menipis)

Contoh penerapan:

  • Dashboard penjualan real-time

  • Tracking lokasi driver

  • Fraud detection


ZooKeeper dan KRaft

Pada versi lama, Kafka membutuhkan ZooKeeper untuk koordinasi cluster.

Sejak Kafka 3.0, diperkenalkan KRaft (Kafka Raft) yang:

  • Menghilangkan ketergantungan ZooKeeper

  • Lebih sederhana

  • Lebih mudah dikelola

ZooKeeper kini dianggap legacy.


Contoh Penerapan Apache Kafka

Apache Kafka banyak digunakan oleh perusahaan besar seperti:

  • Netflix (streaming data)

  • Uber (tracking lokasi)

  • LinkedIn (activity stream)

  • E-commerce (order & inventory)

Kafka sangat cocok untuk sistem dengan traffic tinggi dan kebutuhan real-time.


Kapan Sebaiknya Menggunakan Kafka?

Gunakan Kafka jika:

  • Sistem membutuhkan scalability tinggi

  • Menggunakan microservices

  • Memproses data real-time

  • Membutuhkan event replay

Tidak disarankan jika:

  • Aplikasi sederhana

  • Traffic rendah

  • Tidak membutuhkan streaming



Leave a Reply