Sebelum menyentuh Debezium, kalian perlu menguasai konsep database relasional, transaction log, streaming data, dan Apache Kafka. Di episode ini kalian menyiapkan environment Docker, menjalankan Kafka dengan mode KRaft dan Kafka Connect, lalu memverifikasi runtime Debezium pertama.

Selamat datang di series Belajar Debezium! Series ini akan membawa kalian menguasai Debezium — open-source distributed platform untuk change data capture (CDC) — dari fondasi konsep sampai production readiness. Total ada 23 episode yang tersusun dari enam fase.
Tapi sebelum menyentuh image debezium/connect, ada beberapa skill dasar dan perangkat lunak yang wajib kalian miliki. Mengapa prasyarat ini penting? Karena Debezium bukan sekadar alat baca log database. Dia adalah source connector yang hidup di dalam Kafka Connect, jadi pemahaman tentang Kafka, Kafka Connect, serialisasi data, dan cara database merekam perubahannya adalah syarat mutlak untuk mengikuti series ini.
Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar, menyiapkan environment dengan Docker, menjalankan Kafka dalam mode KRaft, menyalakan Kafka Connect beserta Debezium runtime, dan melakukan verifikasi pertama. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.
Debezium bekerja dengan menangkap perubahan yang direkam database ke dalam transaction log internal. Setiap database punya caranya sendiri: MySQL menulis binlog, PostgreSQL memakai WAL (write-ahead log), MongoDB menyimpan oplog dan change streams, sedangkan SQL Server punya mekanisme change data capture. Kalian wajib paham konsep tabel, primary key, transaksi, dan bagaimana log ini bekerja, karena seluruh mekanisme CDC bergantung padanya.
CDC menghasilkan event stream: aliran peristiwa yang merepresentasikan perubahan data. Pahami istilah dasar streaming — event, stream, producer, dan consumer — serta prinsip event-driven architecture di mana sistem saling terhubung lewat event, bukan lewat panggilan langsung antar layanan. Tanpa fondasi ini, kalian akan kesulitan memahami alasan Debezium memproduksi event ke Kafka.
Kafka adalah penyimpanan event yang menjadi otak pipeline CDC. Wajib dikuasai:
Pahami bahwa Kafka Connect mengabstraksi urusan koneksi dan konfigurasi konektor: kalian cukup mendaftarkan konfigurasi connector, dan worker yang menjalankannya. Detail lifecycle-nya akan kita bedah di episode 3 dan 11.
Event di Kafka disimpan sebagai byte array, sehingga format serialisasi menentukan bagaimana event bisa dikonsumsi. Kenali tiga format utama yang akan dipakai Debezium: JSON, Avro, dan Protobuf. Ketiganya bisa dipasangkan dengan schema registry — Confluent Schema Registry atau Apicurio — untuk mengelola struktur data secara terpusat. Detail format ini akan kita bedah di episode 5 dan 9.
Cara tercepat menjalankan seluruh stack adalah Docker. Verifikasi instalasi kalian:
docker --version
docker compose versionKedua perintah di atas harus menghasilkan output versi tanpa error. Docker Compose akan dipakai untuk menyalakan Kafka, Kafka Connect, dan database sumber secara bersamaan.
Sejak Kafka 3.x, Zookeeper tidak lagi diperlukan — Kafka bisa berjalan dalam mode KRaft di mana broker merangkap sebagai controller cluster. Ini menyederhanakan setup secara signifikan. Kita akan memakai image apache/kafka yang sudah mendukung KRaft out of the box, tanpa memikirkan cluster Zookeeper terpisah.
Debezium menyediakan image resmi quay.io/debezium/connect yang membungkus Kafka Connect worker lengkap dengan semua connector Debezium di dalam direktori plugin. Image inilah yang akan menjadi pekerja utama sepanjang series:
services:
kafka:
image: apache/kafka:3.9.0
ports:
- "9092:9092"
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
connect:
image: quay.io/debezium/connect:3.0
ports:
- "8083:8083"
depends_on:
- kafka
environment:
BOOTSTRAP_SERVERS: kafka:9092
GROUP_ID: 1
CONFIG_STORAGE_TOPIC: connect-configs
OFFSET_STORAGE_TOPIC: connect-offsets
STATUS_STORAGE_TOPIC: connect-statusCatatan penting: nilai BOOTSTRAP_SERVERS: kafka:9092 memakai nama service di dalam jaringan Docker. Kafka Connect berkomunikasi dengan broker melalui jaringan internal tersebut, sedangkan port 8083 di-expose untuk akses REST dari host.
Untuk observasi perubahan, kalian butuh database sumber. Sepanjang series kita akan memakai MySQL dan PostgreSQL sebagai contoh utama, dan menyinggung MongoDB serta SQL Server di episode 3. Siapkan juga Schema Registry — Apicurio atau Confluent — yang bersifat opsional di awal, tapi wajib saat kita memakai format Avro dan Protobuf di episode 5 dan 9.
Stack ini berjalan sebagai beberapa container sekaligus: Kafka broker, Kafka Connect worker, database sumber, dan nanti schema registry. Rekomendasi minimum untuk environment lokal:
Jika mesin kalian di bawah spesifikasi ini, kurangi jumlah container yang jalan bersamaan atau gunakan layanan cloud sementara untuk Kafka.
Jalankan stack dan verifikasi bahwa Kafka Connect sudah merespons:
docker compose up -d
sleep 15
curl -s http://localhost:8083/connectorsPerintah curl -s http://localhost:8083/connectors akan mengembalikan [] — daftar connector yang masih kosong. Itu pertanda sehat. Selanjutnya pastikan plugin Debezium terbaca oleh worker:
curl -s http://localhost:8083/connector-pluginsDi antara daftar tersebut kalian akan melihat kelas seperti io.debezium.connector.mysql.MySqlConnector dan io.debezium.connector.postgresql.PostgresConnector. Kehadiran kelas-kelas ini menandakan Debezium runtime siap dipakai.
Info
Selalu jalankan Kafka Connect dalam network yang sama dengan broker. Kesalahan paling umum di awal adalah worker yang tidak bisa menjangkau broker karena BOOTSTRAP_SERVERS menunjuk alamat yang salah.
Di episode 0 ini kalian sudah menyiapkan pijakan untuk seluruh series: memahami konsep transaction log dan CDC, streaming data, Kafka serta Kafka Connect, menyiapkan environment Docker dengan Kafka mode KRaft, menyalakan Debezium runtime, dan memverifikasi plugin yang tersedia.
Inti yang harus dibawa pulang:
quay.io/debezium/connect membungkus worker dan semua plugin Debezium.curl localhost:8083/connectors harus mengembalikan daftar kosong.Di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa CDC — dari evolusi batch ETL menuju event streaming, lahirnya Debezium dari Red Hat hingga menjadi proyek Apache, serta use case nyata seperti database replication, analytics, dan auditing. Pastikan environment kalian sudah siap, karena perjalanan Belajar Debezium baru saja dimulai!