Apa Itu Apache Kafka?
2026-06-02 21:35:07 - Admin
<style> body { font-family: Arial, Helvetica, sans-serif; line-height: 1.6; margin: 0; padding: 0 20px; background-color: #fafafa; color: #333; } h1, h2, h3 { color: #2c3e50; } h1 { margin-top: 40px; font-size: 2.2em; text-align: center; } h2 { margin-top: 30px; font-size: 1.8em; border-bottom: 2px solid #bdc3c7; padding-bottom: 5px; } p { margin: 15px 0; text-align: justify; } ul { margin: 15px 0 15px 30px; } pre { background:#eee; padding:10px; overflow:auto; } a { color:#2980b9; text-decoration:none; } a:hover { text-decoration:underline; } </style> <h1>Apa Itu Apache Kafka?</h1> <h2>Pengantar</h2> <p>Apache Kafka adalah platform streaming terdistribusi yang bersifat open source dan dirancang untuk menangani aliran data secara real time dengan volume tinggi. Dikembangkan awalnya oleh LinkedIn pada tahun 2010 dan menjadi proyek Apache Software Foundation pada tahun 2011, Kafka kini banyak dipakai oleh perusahaan besar untuk mengumpulkan, menyimpan, mengolah, dan mendistribusikan data secara terus menerus.</p> <h2>Komponen Utama</h2> <ul> <li><strong>Producer</strong> Aplikasi yang menulis (publish) data ke topik Kafka.</li> <li><strong>Consumer</strong> Aplikasi yang membaca (subscribe) data dari topik.</li> <li><strong>Broker</strong> Server Kafka yang menyimpan data dalam partisi dan melayani permintaan producer maupun consumer.</li> <li><strong>Topic</strong> Kategori atau alur logika tempat data disimpan; tiap topik terbagi menjadi satu atau beberapa partisi.</li> <li><strong>Partition</strong> Unit penyimpanan terurut dalam topik, memungkinkan paralelisme dan skalabilitas.</li> <li><strong>Zookeeper</strong> (atau KRaft sejak versi 2.8) Layanan koordinasi yang menyimpan metadata cluster, pemilihan pemimpin partisi, dan status anggota.</li> </ul> <h2>Bagaimana Kafka Bekerja?</h2> <p>Setiap pesan yang dikirim oleh producer diberi urutan (offset) dalam partisi tertentu. Broker menyimpan urutan ini secara durable pada log file yang dapat direplikasi ke broker lain sehingga data tidak hilang bila ada kegagalan. Consumer membaca pesan secara berurutan berdasarkan offset, dan dapat mengatur offsetnya sendiri, memungkinkan konsumen untuk membaca kembali data lama bila diperlukan.</p> <h3>Alur Sederhana</h3> <pre> Producer --> (publish) --> Topic (dengan Partisi) --> Broker --> (store) --> Consumer --> (subscribe) </pre> <h2>Keunggulan Apache Kafka</h2> <ul> <li><strong>Throughput Tinggi</strong> Dapat menangani jutaan pesan per detik dengan latensi rendah.</li> <li><strong>Skalabilitas Horizontal</strong> Tambahkan broker baru untuk meningkatkan kapasitas penyimpanan dan pemrosesan.</li> <li><strong>Durabilitas</strong> Data direplikasi ke beberapa broker, serta disimpan di disk dengan strategi log segment.</li> <li><strong>Replayability</strong> Consumer dapat membaca kembali data dari offset mana pun, cocok untuk analitik historis.</li> <li><strong>Fault Tolerance</strong> Jika broker atau partisi gagal, pemimpin baru dipilih otomatis.</li> <li><strong>Integrasi Luas</strong> Tersedia connector untuk database, sistem file, platform cloud, dan banyak framework pemrosesan stream seperti Apache Flink, Spark, dan ksqlDB.</li> </ul> <h2>Kasus Penggunaan Umum</h2> <ul> <li><strong>Log Pengumpulan</strong> Mengumpulkan log aplikasi, sensor IoT, atau clickstream secara real time.</li> <li><strong>Event Sourcing</strong> Menyimpan urutan perubahan state sebagai event yang dapat diputar ulang.</li> <li><strong>Messaging System</strong> Pengganti tradisional message broker (mis. RabbitMQ) dengan kebutuhan throughput tinggi.</li> <li><strong>Stream Processing</strong> Mengolah aliran data secara langsung menggunakan Kafka Streams atau ksqlDB.</li> <li><strong>Integrasi Data</strong> Menjadi gula pipa (pipeline) antara sistem sumber (mis. database) dan target (data warehouse, lake).</li> </ul> <h2>Arsitektur Penyimpanan</h2> <p>Kafka menyimpan setiap partisi sebagai urutan log yang tidak dapat diubah. Log dibagi menjadi segmen file (biasanya 1 GB) yang dapat di compact atau di delete berdasarkan kebijakan retensi (waktu atau ukuran). Dua mode retensi utama:</p> <ul> <li><strong>Time based retention</strong> Hapus segmen yang lebih tua dari periode tertentu.</li> <li><strong>Size based retention</strong> Batasi total ukuran log per topik.</li> </ul> <p>Fitur <em>log compaction</em> memungkinkan penyimpanan nilai terbaru per kunci, berguna untuk tabel keadaan (state tables).</p> <h2>Keamanan</h2> <p>Kafka mendukung beberapa lapisan keamanan:</p> <ul> <li><strong>Authentication</strong> SASL (plain, GSSAPI/Kerberos, SCRAM) atau TLS client certificates.</li> <li><strong>Authorization</strong> ACL yang mengatur hak akses producer/consumer per topik.</li> <li><strong>Transport Encryption</strong> TLS untuk enkripsi data dalam perjalanan.</li> </ul> <h2>Pengaturan dan Operasional</h2> <p>Berikut contoh file konfigurasi <code>server.properties</code> paling dasar:</p> <pre> broker.id=0 listeners=PLAINTEXT://:9092 log.dirs=/var/lib/kafka num.partitions=3 default.replication.factor=2 zookeeper.connect=localhost:2181 </pre> <p>Untuk proses produksi, biasanya gunakan Docker atau Kubernetes. Contoh <code>docker compose.yml</code> sederhana:</p> <pre> version: '3.8' services: zookeeper: image: confluentinc/cp-zookeeper:7.5 environment: ZOOKEEPER_CLIENT_PORT: 2181 kafka: image: confluentinc/cp-kafka:7.5 depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 </pre> <h2>Pemilihan Antara Kafka dan Alternatif Lain</h2> <p>Jika Anda membutuhkan:</p> <ul> <li><strong>Throughput sangat tinggi & penyimpanan terdistribusi</strong> Kafka.</li> <li><strong>Messaging dengan pola request reply atau transaksional ringan</strong> RabbitMQ atau ActiveMQ.</li> <li><strong>Event streaming dengan query SQL langsung</strong> ksqlDB (berbasis Kafka) atau Apache Flink.</li> </ul> <h2>Kesimpulan</h2> <p>Apache Kafka tidak sekadar sistem antrian pesan; ia adalah fondasi infrastruktur data real time yang dapat diandalkan, skalabel, dan tahan kegagalan. Dengan arsitektur log terdistribusi, kemampuan replay data, serta ekosistem yang luas, Kafka menjadi pilihan utama bagi perusahaan yang ingin membangun arsitektur event driven, analytics streaming, atau integrasi data modern.</p> <h2>Referensi Tambahan</h2> <ul> <li><a href="https://kafka.apache.org/">Situs Resmi Apache Kafka</a></li> <li><a href="https://kafka.apache.org/documentation/">Dokumentasi Resmi</a></li> <li><a href="https://www.confluent.io/">Confluent Platform Komersial Kafka</a></li> </ul>