Toko online TokoKita tumbuh dari 30 menjadi lebih dari 500 pesanan per hari, dan datanya kini tersebar di beberapa tempat: tabel pesanan di database operasional, berkas CSV dari sistem logistik, serta laporan manual yang dirakit tim bisnis tiap pagi. Menggabungkan data tersebut secara manual masih mungkin selama volumenya kecil, tetapi pendekatan tersebut mulai gagal ketika satu kesalahan salin-tempel membuat laporan harian salah hitung. Data pipeline menyelesaikan masalah ini dengan mengotomatiskan alur data dari sumber sampai laporan secara terjadwal. Sebelum menulis satu baris kode, kita perlu merancang pipeline secara sadar agar setiap keputusan teknis tidak diambil setengah jalan.

Enam Langkah Merancang Pipeline #

Setiap desain pipeline yang sehat mengikuti urutan pertanyaan yang sama. Kita mulai dari kebutuhan, bukan dari tools, karena tools hanyalah konsekuensi dari keputusan sebelumnya.

  1. Kebutuhan: siapa pemakai output pipeline dan pertanyaan bisnis apa yang dijawab? Laporan penjualan harian untuk tim bisnis berbeda kebutuhannya dengan feed fitur untuk model machine learning.

  2. Sumber: dari mana data berasal, dalam format apa, dan seberapa terpercaya kualitasnya? Tabel orders di PostgreSQL, berkas CSV dari logistik, atau topic Kafka memiliki karakter ingestion yang berbeda.

  3. Transformasi: pembersihan apa yang wajib dilakukan sebelum data layak dianalisis? Contohnya membuang pesanan batal, menyeragamkan status, dan mengagregasi per tanggal.

  4. Tujuan: ke mana hasil disimpan dan siapa yang membacanya? Data warehouse untuk analitik, tabel aplikasi untuk operasional, atau object storage untuk arsip.

  5. Orkestrasi: kapan dan dalam urutan apa tiap tahap dijalankan? Jadwal harian pukul 01:30 dengan dependency antartahap harus dinyatakan eksplisit, bukan diasumsikan.

  6. Monitoring: bagaimana kita tahu pipeline sehat? Metrik jumlah baris, durasi eksekusi, dan notifikasi ketika pipeline gagal wajib dirancang sejak awal, bukan ditambahkan setelah insiden pertama.

Urutan enam langkah tersebut berjalan maju, tetapi hasil monitoring mengalir kembali ke kebutuhan: metrik yang memburuk adalah masukan untuk revisi desain di siklus berikutnya.

Pertanyaan Desain Sebelum Menulis Kode #

Empat pertanyaan berikut menentukan hampir seluruh keputusan turunan. Kita mengisinya dengan jawaban nyata untuk kasus TokoKita sebagai patokan.

AspekPertanyaan kunciJawaban untuk TokoKita
FrekuensiSeberapa sering pipeline harus berjalan?Batch harian, selesai sebelum pukul 06:00
VolumeBerapa banyak data per eksekusi?Sekitar 12 ribu baris pesanan per hari, sekitar 1,8 MB
SLAKapan hasil wajib tersedia?Pukul 06:00, sebelum rapat pagi tim bisnis
KonsumenSiapa yang membaca hasilnya?Tim bisnis lewat dashboard, bukan engineer
KegagalanApa yang terjadi saat pipeline gagal?Coba ulang otomatis, jalankan ulang tanpa duplikat
LatensiBerapa lama data boleh tertunda?Maksimal satu hari, bukan menit

Angka pada tabel sengaja dibuat biasa dan terukur. Volume 12 ribu baris per hari terasa kecil, tetapi justru pada skala inilah kebiasaan desain yang benar dibangun sebelum data tumbuh menjadi jutaan baris per bulan.

Studi Kasus: Pipeline Order Analytics Harian #

Kita terapkan enam langkah di atas pada satu pipeline konkret, yaitu laporan penjualan harian TokoKita. Diagram berikut memetakan alur data beserta dua komponen pendukungnya: scheduler dan monitoring.

Dari kerangka tersebut, setiap titik penting dijatuhkan menjadi keputusan desain yang dapat diuji. Tabel berikut merangkum keputusan beserta alasannya agar keputusan tidak berubah diam-diam di tengah pengerjaan.

AspekKeputusanAlasan
Pola eksekusiBatch harianLaporan harian tidak membutuhkan data detik-per-detik
Jendela eksekusi01:30 sampai 02:30Di luar jam sibuk transaksi, durasi aman di bawah 45 menit
Model dataPartisi per tanggalKegagalan di satu partisi tidak menular ke partisi lain
Penanganan kegagalanCoba ulang 3x, lalu jalankan ulang manualEksekusi ulang tidak menimbulkan duplikat
Alat orkestrasicron + runner PythonDua pipeline saja; orkestrator penuh belum diperlukan
Retensi dataPartisi dipertahankan 90 hariKebutuhan analitik belum menjangkau lebih jauh
MonitoringJumlah baris, durasi, selisih vs 7 hari terakhirSelisih besar menjadi indikasi galat data paling awal
PemilikEngineer data yang berpiketInsiden punya orang yang bisa dihubungi

Satu angka pada tabel perlu dihitung, bukan ditebak: SLA pukul 06:00 dikurangi jendela selesai pukul 02:30 menyisakan anggaran pulih 3,5 jam untuk kegagalan. Anggaran tersebut yang menentukan berapa kali coba ulang layak dicoba sebelum eskalasi ke engineer, dan angka itulah yang kita tulis ke design doc.

Desain ini juga menetapkan batasnya sendiri: kebutuhan latensi di bawah satu hari menutup jalan menuju streaming, dan perubahan skema sumber belum dibahas. Kedua topik tersebut memiliki pembahasan khusus di Course Streaming Data dan Chapter Pipeline Versioning.

Kerangka Design Doc Mini #

Hasil rancangan di atas dituangkan ke satu berkas pendek yang hidup di repositori yang sama dengan kode pipeline. Kerangka berikut cukup untuk pipeline seukuran TokoKita dan dapat ditumbuhkan seiring kebutuhan.

text
Design Doc: pipeline penjualan harian TokoKita
1. Tujuan        : laporan penjualan harian, siap pukul 06:00
2. Sumber        : tabel orders di database operasional (PostgreSQL)
3. Target        : tabel penjualan_harian di warehouse, partisi per tanggal
4. Transformasi  : buang status batal, normalisasi status dan email, agregasi per tanggal
5. Jadwal        : setiap hari 01:30, jendela maksimal 45 menit
6. Kegagalan     : coba ulang 3x, eksekusi ulang aman (idempotent), eskalasi ke engineer
7. Monitoring    : jumlah baris, durasi, selisih vs rata-rata 7 hari terakhir

Setiap langkah desain meninggalkan artefak yang bisa diperiksa orang lain. Pemetaan berikut menjaga agar design doc tidak berhenti di niat baik.

LangkahArtefak keluaran
KebutuhanSatu paragraf tujuan beserta SLA
SumberDaftar koneksi, skema, dan catatan kualitas data
TransformasiSpesifikasi aturan pembersihan dan agregasi
TujuanSkema tabel target dan aturan partisi
OrkestrasiDefinisi jadwal dan dependency
MonitoringDaftar metrik beserta ambang notifikasi

Konsep orkestrasi jadwal dan dependency didokumentasikan resmi di Apache Airflow , sementara pola transformasi berlapis staging-ke-warehouse dibahas luas di dokumentasi dbt . Dengan desain di tangan, langkah berikutnya adalah memilih pola eksekusi pertama. Pola paling sederhana sekaligus paling banyak dipakai adalah batch, yang akan kita bangun secara utuh pada Chapter Pipeline Batch.