Melanjutkan seri perjalanan data Fresha, bagian kedua ini fokus pada satu tantangan krusial: Bagaimana cara memindahkan data CDC (Change Data Capture) dari Kafka ke StarRocks dengan cepat dan akurat?
Tim Fresha melakukan PoC (Proof of Concept) pada 3 metode berbeda. Ini hasil bedahannya:
1. ⚠️ Problem Statement (Masalah)
🔥 Ingestion Bottleneck: Data transaksi mengalir deras dari PostgreSQL via Debezium ke Kafka. Tantangannya adalah memasukkan data ini ke StarRocks secara real-time dengan tetap menjaga konsistensi (exactly-once semantics) dan menangani update/delete data dengan benar.
🧩 Complexity vs Control: Ada cara yang mudah tapi terbatas, ada juga yang powerful tapi ribet. Salah pilih alat bisa bikin pipeline lambat atau susah di-maintain.
2. 🛠️ Metodologi & Perbandingan Opsi
Fresha mengevaluasi tiga pendekatan utama untuk memuat data ke StarRocks:
🔄 Opsi A: Routine Load Cara paling simpel alias “Native”. StarRocks sendiri yang menjalankan job background untuk menarik data dari Kafka.
✅ Kelebihan: Mudah disetup, fitur bawaan tanpa infrastruktur tambahan.
❌ Kekurangan: Tidak mendukung otentikasi AWS MSK IAM (saat itu), transformasi data terbatas, dan evolusi skema tabel agak repot.
🔌 Opsi B: StarRocks Kafka Connector Menggunakan infrastruktur Kafka Connect yang sudah umum.
✅ Kelebihan: Fleksibel transformasi datanya (bisa pakai SMTs), support Debezium out-of-the-box.
❌ Kekurangan: Tim Fresha menemukan masalah performa pada versi yang diuji (v1.0.4), membuatnya kurang ideal untuk beban kerja mereka.
🐿️ Opsi C: StarRocks Flink Connector (Pemenang) Menggunakan Apache Flink untuk memproses data sebelum masuk ke StarRocks.
✅ Kelebihan: Paling fleksibel (bisa join stream, agregasi kompleks), support exactly-once, dan performa tinggi.
❌ Kekurangan: Learning curve tinggi (harus ngoding Java/Scala dan manage dependensi Flink).
3. 📈 Findings & Keputusan
🏆 Flink is King: Fresha akhirnya memilih Flink Connector. Alasannya pragmatis: mereka sudah punya kluster Flink untuk keperluan lain, jadi sekalian dimanfaatkan. Selain itu, Flink memberikan kontrol penuh atas logika deduplikasi dan format data.
🗝️ Primary Key Updates: Fitur Primary Key table di StarRocks sangat krusial. Dengan menyertakan kolom __op (operasi insert/update/delete) dari Debezium, StarRocks bisa otomatis melakukan upsert atau delete, menjaga data tetap sinkron dengan database sumber.
4. 💡 Key Takeaways
⚖️ Trade-off is Real: Tidak ada solusi peluru perak. Jika butuh cepat dan simpel, Routine Load oke. Tapi untuk skala enterprise dengan logika kompleks, Flink adalah investasi yang sepadan meski setup-nya rumit.
🚧 Schema Evolution: Ketiga metode di atas masih punya kelemahan yang sama: perubahan skema (nambah kolom) seringkali butuh intervensi manual (stop job -> alter table -> resume). Belum sepenuhnya otomatis.
🔗 Baca Artikel Lengkapnya:
https://medium.com/fresha-data-engineering/the-real-time-data-journey-connecting-flink-airflow-and-starrocks-part-2-43e94a6ef04b
#DataEngineering #RealTimeData #StarRocks #ApacheFlink #Kafka #CDC #Debezium #BigData #TechArchitecture #FreshaEngineering