Rekap penjualan setiap akhir hari dan peringatan transaksi mencurigakan dalam hitungan detik sama-sama mengolah data — tetapi keduanya menuntut cara pemrosesan yang berbeda. Rekap harian tidak kehilangan nilai bila dihitung 30 menit lebih lambat; peringatan penipuan kehilangan seluruh nilainya bila muncul satu jam setelah transaksi selesai. Dua kebutuhan tersebut menghadirkan dua gaya pemrosesan: batch dan stream. Pada chapter ini kita akan bedah keduanya, membandingkannya aspek per aspek, lalu membahas cara memilih — termasuk kapan keduanya dipakai bersamaan.
Apa itu Batch Processing #
Batch processing mengolah data dalam kelompok besar pada waktu terjadwal. Pipeline membaca kumpulan data — misalnya seluruh transaksi sejak tengah malam — memprosesnya sekali jalan, lalu menulis hasilnya ke tabel hasil. Penjadwalan diatur oleh orchestrator seperti Apache Airflow , dan pemrosesan berat ditangani engine seperti Apache Spark .
Ciri khas batch: hasil muncul menit hingga jam setelah data terkumpul, tetapi biayanya efisien karena komputer bekerja penuh pada satu kelompok data besar. Contoh penggunaannya: ETL harian ke data warehouse, perhitungan gaji bulanan, rekap metrik untuk laporan mingguan, dan pelatihan ulang model machine learning dengan data semalam.
Apa itu Stream Processing #
Stream processing mengolah data per event seketika saat event tiba. Aplikasi mengirim event ke platform streaming seperti Apache Kafka ; stream processor membaca event satu per satu (atau dalam jendela beberapa detik), menghitung hasilnya, lalu meneruskan hasil ke tujuan berikutnya — sistem peringatan, database, atau topic lain.
Ciri khas stream: hasil muncul dalam milidetik hingga beberapa detik, tetapi sistem harus terus berjalan dan menghadapi tantangan yang tidak ada di batch — event tiba tidak berurutan, event terlambat, dan keharusan memastikan satu event tidak diproses dua kali (exactly-once). Contoh penggunaannya: deteksi penipuan saat transaksi berlangsung, pencocokan pesanan layanan antar, dan pemantauan sensor perangkat.
Perbedaan cara kerja keduanya dapat diringkas dalam diagram berikut:
Perbandingan Batch dan Stream #
| Aspek | Batch Processing | Stream Processing |
|---|---|---|
| Jendela data | kelompok data dalam periode tetap, misal per jam | event satu per satu saat tiba, kadang dalam jendela kecil |
| Latensi hasil | menit sampai jam | milidetik sampai beberapa detik |
| Tools khas | Airflow, Spark, dbt | Kafka, Flink, Spark Structured Streaming |
| Kompleksitas operasional | lebih rendah: gagal tinggal jalankan ulang | lebih tinggi: urutan event, event terlambat, exactly-once |
| Contoh kasus | ETL warehouse, rekap gaji, laporan berkala | deteksi penipuan, pencocokan pesanan, pemantauan sensor |
| Biaya | efisien untuk volume besar yang tidak mendesak | lebih mahal karena berjalan terus-menerus |
Kata kunci pada baris kompleksitas: job batch bersifat idempotent dengan mudah — dijalankan ulang atas kelompok data yang sama, hasilnya tetap sama. Pemrosesan stream harus menangani urutan dan duplikasi event secara eksplisit, karena event yang sudah lewat tidak bisa “dijalankan ulang” begitu saja dari sumbernya.
Memilih Pendekatan: Batch, Stream, atau Kombinasi #
Kebanyakan organisasi memulai dari batch: kebutuhan analitik lazimnya cukup terlayani data harian, dan batch jauh lebih sederhana dioperasikan. Stream layak dipertimbangkan ketika ada kebutuhan latensi rendah yang nyata — uang yang harus ditahan sebelum transaksi selesai, pengalaman pengguna yang harus menyesuaikan saat itu juga, atau perangkat yang harus dimatikan segera.
Dalam praktik, keduanya sering berjalan bersama. Arsitektur lambda menjalankan batch dan stream paralel untuk kebutuhan berbeda; arsitektur kappa menyederhanakannya dengan menjadikan log event (seperti Kafka) sebagai satu sumber kebenaran yang diproses ulang bila perlu. Pola yang paling sering dijumpai: stream menangani deteksi dan respons seketika, batch membangun tabel analitik yang lengkap dan mudah diaudit.
Beberapa contoh pemilihan di konteks Indonesia:
- Marketplace besar: rekap komisi penjual per hari cukup batch, tetapi pencarian stok palsu perlu stream.
- Bank digital: laporan regulator bulanan dihitung batch, pemblokiran kartu saat pola pembelian mencurigakan memakai stream.
- Aplikasi logistik: penugasan kurir menghitung antrean terdekat lewat stream, rekap performa armada mingguan lewat batch.
Seluruh komponen yang kita bahas di sini — ingestion, storage, processing, serving — pada akhirnya harus dikemas menjadi satu kesatuan yang bisa dijalankan organisasi. Kesatuan itulah yang dibedah pada chapter Data Platform dan Data Infrastructure.