Setiap kali kita berbelanja daring, membayar lewat aplikasi dompet digital, atau menonton film melalui layanan streaming, sistem di belakang layar mencatat aktivitas tersebut sebagai data. Data yang baru keluar dari sistem sumber hampir selalu belum layak dianalisis: format tidak konsisten, sebagian nilai tidak valid, dan datanya tersebar di banyak aplikasi. Data engineering adalah disiplin yang mengurus masalah tersebut secara sistematis, bukan lewat perbaikan manual sekali jalan. Pada chapter ini kita membahas definisinya, contoh konkret pengolahan data mentah menjadi data siap analisis, lalu ruang lingkup pekerjaannya.
Definisi Data Engineering #
Data engineering adalah disiplin yang merancang, membangun, dan memelihara sistem untuk memindahkan serta mengolah data — dari sumber tempat data dibuat sampai ke konsumen data seperti analis bisnis, dashboard, dan model machine learning. Definisi tersebut memuat dua kata kunci. Pertama, sistem: tugas data engineer bukan membersihkan satu file sekali jalan, melainkan membangun pipeline yang berjalan otomatis dan berulang setiap hari. Kedua, terpercaya: pipeline yang sama harus menghasilkan data yang konsisten setiap kali dijalankan, lengkap dengan mekanisme pemantauan ketika terjadi kegagalan.
Analogi yang sering dipakai: jika data diumpamakan air, data engineer membangun jaringan pipa dan penampungan yang mengalirkan air dari mata air ke setiap rumah. Batas analoginya perlu ditegaskan — air identik di setiap titik jaringan, sedangkan data sering harus diubah bentuknya di sepanjang perjalanan: dibersihkan, digabungkan, lalu diringkas agar sesuai kebutuhan konsumennya.
Dari Data Mentah ke Data Siap Analisis #
Mari kita lihat contoh kecil dalam kode Python. Asumsikan aplikasi mengirim baris transaksi mentah dalam format teks dengan pemisah tanda pipe; penulisan nama kota belum konsisten dan terdapat satu transaksi bernilai negatif.
# Data mentah: baris transaksi dari aplikasi, format belum konsisten
data_mentah = [
"Budi|2026-01-05 09:15:00|jakarta|125000",
"Siti|2026-01-05 09:17:30|Jakarta|75000",
"Dewi|2026-01-05 09:20:00|Bandung|210000",
"Budi|2026-01-05 09:22:00|jakarta|-125000",
"Siti|2026-01-05 09:24:00|Surabaya|99000",
]
bersih = []
ditolak = []
for baris in data_mentah:
nama, waktu, kota, jumlah = baris.split("|")
jumlah = int(jumlah)
if jumlah <= 0:
ditolak.append({"nama": nama, "alasan": "jumlah tidak valid"})
continue
bersih.append({
"nama": nama,
"waktu": waktu,
"kota": kota.title(),
"jumlah": jumlah,
})
print("Data bersih siap analisis:")
for baris in bersih:
print(baris)
print("\nBaris yang ditolak:")
for baris in ditolak:
print(baris)
total_pendapatan = sum(b["jumlah"] for b in bersih)
print(f"\nTotal pendapatan: Rp{total_pendapatan}")Output yang Dihasilkan:
Data bersih siap analisis:
{'nama': 'Budi', 'waktu': '2026-01-05 09:15:00', 'kota': 'Jakarta', 'jumlah': 125000}
{'nama': 'Siti', 'waktu': '2026-01-05 09:17:30', 'kota': 'Jakarta', 'jumlah': 75000}
{'nama': 'Dewi', 'waktu': '2026-01-05 09:20:00', 'kota': 'Bandung', 'jumlah': 210000}
{'nama': 'Siti', 'waktu': '2026-01-05 09:24:00', 'kota': 'Surabaya', 'jumlah': 99000}
Baris yang ditolak:
{'nama': 'Budi', 'alasan': 'jumlah tidak valid'}
Total pendapatan: Rp509000Mari kita telaah baris-baris kode di atas:
- Baris 2-8 (
data_mentah = [...]): lima baris transaksi mentah menjadi masukan pipeline. Dua masalah sengaja ditanam: penulisan kota yang tidak konsisten dan satu nilai transaksi negatif. - Baris 14 (
nama, waktu, kota, jumlah = baris.split("|")): setiap baris dipecah menjadi empat kolom sesuai pemisah|. - Baris 16-18 (
if jumlah <= 0): validasi menolak transaksi bernilai negatif; baris bermasalah dicatat ke daftarditolakbeserta alasannya, bukan dibuang tanpa jejak. - Baris 19-24 (
bersih.append({...})): baris yang lolos dinormalisasi — method.title()menyeragamkan kota menjadiJakarta— lalu dikumpulkan dalam bentuk yang konsisten. - Baris 34-35 (
total_pendapatan = sum(...)): agregasi dihitung dari data yang sudah bersih, sehingga hasilnya dapat dipertanggungjawabkan.
Program di atas adalah inti pekerjaan data engineering dalam skala mini. Pada sistem produksi, proses yang sama berjalan otomatis untuk jutaan baris setiap hari.
Ruang Lingkup Pekerjaan Data Engineering #
Pekerjaan data engineering terbagi menjadi beberapa bidang yang saling menopang. Tabel berikut memetakannya beserta contoh aktivitas dan tool yang lazim dipakai:
| Bidang | Contoh Aktivitas | Contoh Tool |
|---|---|---|
| Ingestion | menarik data dari database aplikasi, API, dan file log | Apache Airflow, Apache Kafka |
| Transformation | membersihkan, menstandardisasi, dan menggabungkan data | Apache Spark, dbt |
| Storage | merancang data warehouse dan data lake | PostgreSQL, Apache Iceberg |
| Orchestration | menjadwalkan pipeline serta menangani kegagalan | Apache Airflow, Dagster |
| Data quality | memvalidasi schema dan memantau anomali | Great Expectations, Pandera |
| Serving | menyajikan data untuk dashboard dan machine learning | ClickHouse, DuckDB |
Setiap bidang punya dokumentasi resmi tersendiri — misalnya Apache Spark untuk pemrosesan skala besar, Apache Airflow untuk orchestration, dan dbt untuk transformation SQL. Kita akan membahas setiap bidang satu per satu di sepanjang Course ini.
Mengapa Data Engineering Penting #
Tanpa data engineering, setiap tim yang membutuhkan data harus mengunduh sendiri data dari sistem sumber lalu membersihkannya secara manual. Pekerjaan tersebut berulang di banyak tim, hasilnya bisa berbeda-beda antar tim, dan tidak ada pihak yang menjamin data yang dipakai sudah lengkap. Ketika volume data bertambah dari ribuan menjadi miliaran baris, pendekatan manual tidak mungkin lagi dijalankan.
Data engineering menyelesaikan masalah tersebut dengan satu jalur pengolahan yang sama untuk semua konsumen: analis menerima tabel yang sudah bersih, dashboard menampilkan angka yang konsisten, dan model machine learning dilatih dengan data mutakhir. Sederhananya, data engineering membangun fondasi agar organisasi bisa mengambil keputusan berbasis data.
Definisi, contoh, dan peta ruang lingkup di atas memberi gambaran tentang apa yang dibangun data engineering. Pertanyaan berikutnya: siapa yang mengerjakannya dan seperti apa kesehariannya? Kita akan bahas pada chapter Peran Data Engineer.