Fundamentals of Kafka
Tags: kafka, confluent, data, stream
Published: 2023-07-03 07:34:43

Kafka awalnya dikembangkan di LinkedIn, dan kemudian dijadikan open-source pada awal 2011. Jay Kreps, Neha Narkhede dan Jun Rao membantu menciptakan Kafka yang kemudian meninggalkan LinkedIn untuk membangun Confluent.

Jay Kreps memilih untuk menamai perangkat lunak tersebut dengan nama penulis Franz Kafka karena itu adalah **“sistem yang dioptimalkan untuk penulisan”**, dan dia menyukai karya Kafka.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xejar3eslzsvugjs6atc.jpg)

Franz Kafka adalah seorang novelis bahasa Jerman yang bepengaruh pada abad 20.

Kafka dilahirkan dalam keluarga kelas menengah Jerman-Yahudi di Praha, ibu kota Kerajaan Bohemia, yang saat itu merupakan bagian dari Kekaisaran Austro-Hongaria, sekarang ibu kota Republik Ceko.

## Konsep Dasar Kafka

Conceptual Diagram

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/605045tf9swuioho1a9k.jpg)

Apache Kafka adalah implementasi kerangka software bus menggunakan stream-processing. Apache Kafka juga merupakan proyek open-source yang dikembangkan oleh Apache Software Foundation yang ditulis menggunakan bahasa pemrograman Scala dan Java.

Perhatikan tulisan tebal diatas? yang ini **“sistem yang dioptimalkan untuk penulisan”**.

Kafka akan menyimpan data secara berkelanjutan dan tidak ada proses hapus data. Data yang disimpan didalam Kafka akan memiliki ID masing-masing dengan timestamp yang incremental.

Tipe data yang bisa disimpan di Kafka itu bisa teks atau binary. Tipe data teks bisa menyimpan berbagai macam format seperti JSON, CSV, dan lain sebagainya.

Kafka adalah suatu platform event streaming terdistribusi yang memungkinkan kita untuk membaca, menulis, menyimpan dan memproses suatu events (records atau messages) dari berbagai mesin.

Menurut dokumentasi resmi Kafka. Kafka bisa digunakan untuk berbagai macam hal sebagai berikut:

1. Messaging
2. Website Activity Tracking
3. Metrics
4. Log Aggregation
5. Stream Processing
6. Event Sourcing
7. Commit Log

Berikut Konsep dasar dari hirarki Kafka:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kh0bia5buxx131uh1ix8.png)

1. Producers adalah aplikasi yang mengirimkan pesan ke server Kafka. Suatu server Kafka dapat menerima pesan dari satu atau lebih producer

2. Clusters adalah tempat virtual dimana sekumpulan brokers dikelompokan. Server Kafka dapat memiliki satu atau lebih cluster untuk mendukung scalability, high availability dan fault-tolerant

3. Brokers adalah komponen pada suatu server kafka yang bertugas menerima dan memberikan pesan. Dalam suatu clusters bisa terdapat banyak brokers

4. Topics adalah tempat dimana pesan-pesan dikelompokan. Dalam satu brokers bisa terdapat banyak topic

5. Partitions adalah pembagian penyimpanan pesan dalam suatu topics. Partisi digunakan untuk meningkatkan scalability dan peformance. Dimana setiap partisi dapat di tangani oleh suatu consumers tertentu. Satu topics bisa memiliki satu atau lebih partitions

6. Offset adalah posisi terakhir dari suatu urutan pesan yang masuk ke dalam suatu partisi di dalam topik

7. Messages, Records adalah pesan atau struktur pesan yang tersimpan dalam suatu topic

8. Key, Value, Timestamp, biasanya didalam setiap pesan yang tersimpan di topic terdapat informasi key, value dan timestamp. Key bersifat opsional sedangkan value adalah isi dari pesan dan timestamp menunjukan waktu pesan dimasukan kedalam topik/partisi

9. Consumer Groups adalah sekumpulan consumer yang mengambil pesan dari suatu topik. Consumer di dalam consumer grup dipastikan akan mendapatkan pesan sesuai dengan jumlah partisinya. Misal ada 3 partisi dalam suatu topik, lalu ada 2 consumers dalam suatu consumer groups, maka 1 consumer akan mengambil pesan dari 1 partisi, dan 1 consumer lagi akan mengambil pesan dari 2 partisi. Jika jumlah consumer lebih banyak dari jumlah partisi, maka akan ada consumer yang idle atau tidak pernah mendapatkan pesan. Satu consumer group dapat memiliki satu atau lebih consumer

10. Consumers adalah aplikasi yang berfungsi untuk menarik data dari server Kafka pada suatu topik tertentu.
Suatu aplikasi bisa berperan sebagai producer sekaligus consumer.


### Redaksional :

eBook https://www.confluent.io/resources/kafka-the-definitive-guide-v2/
https://www.confluent.io/resources
https://kafka.apache.org/quickstart
https://kafka.apache.org/documentation/#quickstart