Episode ini membahas kesiapan operasional pipeline Spark: menyusun runbook untuk job failure, retries, dan recovery, incident response untuk cluster issues dan data corruption, backup konfigurasi dan artifacts, serta chaos testing untuk menguji ketahanan pipeline.

Pipeline yang berjalan tanpa masalah selama berbulan-bulan tetap harus siap menghadapi kegagalan. Episode 19 ini membahas operational readiness: apa yang dilakukan sebelum, saat, dan setelah sesuatu rusak. Ini adalah perbedaan antara tim yang panik saat job gagal dan tim yang menangani kegagalan secara tenang dan sistematis.
Kegagalan dalam data engineering jarang berupa ledakan tunggal. Biasanya berlapis: job retry terus, data korup di tengah malam, cluster kehabisan disk, atau perubahan skema menyebabkan pipeline diam-diam menghasilkan output salah. Tanpa runbook dan prosedur, setiap kejadian berubah menjadi investigasi improvisasi yang panjang.
Episode ini membahas empat topik: menyusun runbook untuk job failure dan recovery, incident response untuk cluster dan data corruption, backup konfigurasi dan artifacts, serta chaos testing pada Spark pipelines.
Runbook adalah dokumen langkah-demi-langkah yang dipakai saat sistem bermasalah. Setiap runbook yang baik punya bagian:
1. Gejala → alert SparkJobFailed, status aplikasi failed
2. Cek → log driver, Spark UI, resource cluster
3. Diagnosis → apakah retry transient (OOM, jaringan) atau bug kode
4. Tindakan → restart dengan resource lebih besar / fix kode dan redeploy
5. Escalasi → oncall data platform jika lebih dari 30 menitJob batch yang gagal sebaiknya dijadwalkan ulang dengan retry dengan backoff, bukan restart manual tanpa batas. Di Kubernetes, ini bisa diatur lewat Job retry policy; di scheduler seperti Airflow, lewat parameter retries dan retry_delay. Batasi retry maksimum agar kegagalan permanen tidak menghabiskan resource.
Saat cluster tidak sehat, ikuti urutan triase:
kubectl top nodes
kubectl top pods -n spark-jobskubectl top nodes menampilkan pemakaian resource — titik awal yang cepat untuk melihat apakah cluster kekurangan CPU atau memori.
Data korup lebih berbahaya karena tidak selalu terlihat. Tindakan yang benar:
Bukan hanya data yang perlu dilindungi:
spark-defaults.conf, spark-env.sh → konfigurasi
event logs / metastore dump → metadata
jar library + image digests → artifacts
notebook & kode pipeline → source of truthChaos testing adalah sengaja memasukkan kegagalan ke sistem untuk menemukan kelemahan sebelum kegagalan itu terjadi sendiri. Untuk Spark, ini bisa berarti:
kubectl delete pod spark-executor-xxx --grace-period=1kubectl delete pod ... --grace-period=1 memaksa executor mati secara mendadak. Spark harus me-restart task yang terdampak dan job tetap selesai — kalau tidak, itu temuan yang perlu diperbaiki.
Praktik yang aman:
Warning
Chaos testing bukan tentang merusak sistem, tapi tentang menemukan asumsi yang salah. Jika kalian yakin "Spark akan auto-recover dari executor yang mati", uji keyakinan itu di staging — lebih baik gagal di sana daripada di produksi tengah malam.
Episode 19 menuntaskan kesiapan operasional: runbook memberi langkah yang jelas saat job gagal, incident response menangani cluster dan data corruption secara sistematis, backup melindungi konfigurasi dan artifacts, dan chaos testing menguji asumsi tentang ketahanan sebelum produksi membuktikan sebaliknya.
Inti yang harus dibawa pulang:
Di episode 20 selanjutnya kita akan membahas real-world use cases dan patterns — contoh pipeline ETL, real-time analytics, dan recommendation systems, design patterns untuk reliabilitas pipeline, monitoring business metrics dan data quality, serta arsitektur end-to-end untuk batch dan streaming.