Episode ini membahas scaling cluster Kafka: menambah broker, partition dan replica reassignment, dampak penambahan partition terhadap key dan consumer, capacity planning untuk jumlah broker dan ukuran disk, serta Cruise Control untuk rebalancing otomatis dan anomaly detection.

Cluster Kafka yang sehat pada hari ini belum tentu sehat enam bulan lagi — traffic tumbuh, topic baru bermunculan, dan broker mulai mendekati batas disk atau CPU. Pertanyaannya bukan apakah perlu scaling, melainkan bagaimana melakukannya tanpa downtime dan tanpa mengganggu aplikasi.
Episode 20 ini akan membahas scaling horizontal dengan menambah broker, pemindahan partition dan replica lewat reassignment, dampak penambahan partition terhadap ordering dan consumer, capacity planning yang benar, serta Cruise Control untuk mengotomatiskan rebalancing dan mendeteksi anomali.
Menambah broker ke cluster di KRaft mode cukup mudah: siapkan node baru, format storage, dan mulai. Broker baru otomatis bergabung dan mulai menerima partition baru. Namun — penting untuk dipahami — broker baru tidak otomatis mengambil partition yang sudah ada; keseimbangan hanya tercapai setelah reassignment.
Pindahkan partition antar broker dengan kafka-reassign-partitions.sh:
bin/kafka-reassign-partitions.sh --bootstrap-server localhost:9092 \
--reassignment-json-file reassignment.json --executeFile reassignment.json berisi daftar partition beserta daftar broker tujuan:
{
"version": 1,
"partitions": [
{"topic": "orders", "partition": 0, "replicas": [1, 2, 3]}
]
}"replicas": [1, 2, 3] menentukan broker yang memegang replica. Proses reassignment menyalin data dulu (mirror), lalu memindahkan leadership — aman dan tanpa kehilangan data.
Reassignment juga dipakai untuk menyeimbangkan replica (bukan hanya leader) — misalnya memastikan dua replica topic tidak berada di broker yang sama (rack awareness). Setelah broker baru mengejar ketinggalan, jalankan preferred leader election agar beban leader tersebar merata, dan ulangi kafka-reassign-partitions.sh --verify untuk memastikan selesai.
Kadang topic perlu partition tambahan karena consumer group membutuhkan paralelisme lebih besar. Gunakan --alter:
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--alter --topic orders --partitions 12kafka-topics.sh --alter --partitions 12 memperluas topic dari 6 ke 12 partition. Operasi ini hanya bisa menambah, tidak bisa mengurangi.
Menambah partition memiliki efek samping yang harus dipahami:
murmur2(key) % numPartitions menghitung ulang tujuan key, sehingga record dengan key yang sama bisa pindah partition — ordering per key tidak dijamin utuh setelah perubahan ini.Desain jumlah partition sejak awal dengan menyisakan ruang pertumbuhan, atau pertimbangkan partition key yang tetap stabil. Jika penambahan tak terhindarkan, lakukan saat beban rendah, komunikasikan ke tim consumer, dan pantau rebalance serta lag pasca perubahan.
Aturan umum: total throughput yang dibutuhkan dibagi throughput per broker, dikali faktor replikasi dan toleransi kegagalan. Dengan replication factor 3, kapasitas efektif sekitar sepertiga kapasitas disk total — karena setiap record tersimpan di tiga broker.
Perhitungkan: throughput tulis per detik dikali retention time menentukan ukuran disk per partition. Dengan tiered storage (episode 11), disk lokal hanya menampung hot data. Jangan lupa bandwidth: replikasi dan recovery membutuhkan jaringan — saat satu broker mati, follower lain menyerap beban replikasi tambahan.
Jumlah partition membatasi paralelisme consumer maksimum per group. Rencanakan partition = target consumer group × cadangan pertumbuhan. Terlalu sedikit partition membatasi throughput; terlalu banyak menambah beban metadata dan latensi rebalance.
Cruise Control adalah sistem open-source dari LinkedIn yang mengotomatiskan operasi cluster Kafka: rebalancing, partition movement, dan deteksi anomali. Ia memakai goal-based optimization: kalian mendefinisikan tujuan (misalnya distribusi leader merata, disk seimbang), dan Cruise Control menghitung serta mengeksekusi rencana reassignment terbaik.
Info
Reassignment manual aman tetapi melelahkan pada cluster besar. Untuk produksi, gunakan Cruise Control (atau managed service yang sudah memuatnya) agar rebalancing berjalan otomatis dan dapat dijadwalkan — manusia cukup memverifikasi tujuannya.
Di episode 20 ini kalian sudah memahami scaling horizontal dengan menambah broker, partition dan replica reassignment, dampak penambahan partition terhadap key dan consumer, prinsip capacity planning, serta Cruise Control untuk rebalancing otomatis.
Inti yang harus dibawa pulang:
kafka-reassign-partitions.sh memindahkan partition tanpa downtime.Di episode 21 selanjutnya kita akan mengoptimalkan performa: performance tuning and optimization. Kalian akan belajar tuning producer dan consumer, optimasi JVM dan OS untuk broker, serta konfigurasi topic untuk throughput dan latensi terbaik.