Mendorong Pentaho dari single machine ke skala produksi: membandingkan arsitektur standalone dan clustered, men-scaling transformasi dengan eksekusi paralel, men-tuning resource Spoon, Carte, dan Pentaho Server, serta merencanakan load balancing dan failover.

Sejauh ini kalian bekerja di satu mesin. Episode 14 membahas saat data membesar dan produksi menuntut keandalan: bagaimana men-deploy Pentaho secara layak dan men-scaling eksekusi ETL. Kalian akan belajar kapan memakai satu server dan kapan membangun cluster, bagaimana mengeksekusi transformasi secara paralel, dan bagaimana men-tuning resource agar tidak boros atau kelaparan.
Ini bukan episode tentang membeli mesin besar, melainkan tentang keputusan arsitektur dan penyetelan yang tepat untuk beban kalian.
Dua kutub arsitektur deployment yang perlu kalian pahami:
| Aspek | Standalone | Clustered |
|---|---|---|
| Komponen | Satu instance server menjalankan semuanya | Beberapa Carte/Pentaho Server bekerja sama |
| Kapan cocok | Beban kecil-menengah, satu tim | Beban besar, ketersediaan tinggi, banyak job |
| Skalabilitas | Terbatas oleh resource satu mesin | Horizontal: tambah node seiring beban |
| Kompleksitas | Sederhana, mudah dikelola | Perlu koordinasi, repo bersama, konfigurasi hati-hati |
| Failover | Single point of failure | Bisa didesain dengan redundancy |
Aturan praktis: mulai dari standalone, naik ke clustered saat benar-benar dibutuhkan. Cluster menambah kompleksitas operasional yang tidak sepadan untuk tim kecil dengan beban sedang.
Info
Jangan terburu-buru membangun cluster. Banyak pipeline yang "melambat" sebenarnya bermasalah di desain ETL — lookup tanpa cache, query tanpa index, atau transformasi raksasa — bukan karena kurang mesin. Optimasi desain selalu lebih murah daripada menambah server.
Cara paling efektif meningkatkan throughput seringkali bukan menambah mesin, melainkan memanfaatkan paralelisme yang sudah tersedia:
Sebelum berpikir cluster, periksa dulu apakah satu transformasi menjalankan step berat secara serial padahal bisa paralel. Sort rows yang ditempatkan setelah filter yang mengurangi 90% data, misalnya, jauh lebih ringan daripada sort di awal.
Ketiga komponen berjalan di JVM yang memori heap-nya bisa diatur. Konfigurasi ini berada di file script atau variabel environment.
Heap default PDI sering terlalu kecil untuk data besar. Di Linux, set PENTAHO_JAVA_OPTIONS sebelum menjalankan:
export PENTAHO_JAVA_OPTIONS="-Xmx4g -Xms512m"
./spoon.shGanti nilai sesuai RAM mesin kalian. Sebelum menentukan ukuran, cek dulu ketersediaan memori dengan free -m — dan ingat bahwa Java juga butuh ruang di luar heap (metaspace dan native).
Server web juga butuh tuning heap, diatur lewat variabel di skrip startup-nya. Untuk cluster Pentaho Server, kalian juga harus memperhatikan database repository bersama — ia adalah titik leher botol potensial dan perlu optimasi terpisah.
Contoh untuk Pentaho Server di Linux, heap diatur lewat variabel environment sebelum menjalankan skrip startup:
export PENTAHO_SERVER_JAVA_OPTIONS="-Xmx8g -XX:MaxMetaspaceSize=512m"
./start-pentaho.shPerhatikan bahwa pengaturan heap server tidak boleh dikerjakan sembarangan: ukur pemakaian baseline dulu (episode 13), lalu naikkan bertahap dan amati apakah memang mengurangi GC pause atau OutOfMemoryError. Heap yang terlalu besar justru memperlambat karena garbage collector harus mengelola area yang luas.
Untuk ketersediaan tinggi, dua konsep penting:
Membawa cluster Carte sebagai contoh nyata: beberapa worker Carte menjalankan transformasi, satu koordinator mengatur pembagian kerja. Start worker dengan Carte sebagai berikut:
carte.sh 10.0.0.10 8081Di sini, carte.sh memulai server Carte yang mendengarkan di IP 10.0.0.10 port 8081. Dari Spoon, transformasi bisa dikonfigurasi memakai cluster yang mengacu pada kumpulan worker Carte ini.
Danger
Cluster hanya berguna jika bottleneck-nya memang CPU atau memori, bukan database atau sumber data eksternal. Menambah worker untuk menunggu query yang lambat hanya membuang resource. Selalu identifikasi bottleneck dulu sebelum men-scaling.
Berikut pola yang sering dipakai tim di produksi:
.ktr/.kjb dari Git ke server staging/production secara otomatis.Yang penting dari semua pola ini: konsistensi konfigurasi antar environment. Variabel substitution dari episode 9 memastikan kode yang sama berjalan di semua environment dengan parameter yang berbeda.
Prinsip terpenting dari semua pola di atas adalah reproducibility: mesin produksi harus bisa dibangun ulang dari source kapan saja. Simpan file .ktr/.kjb di Git (episode 9), dokumentasikan parameter per environment di kettle.properties atau variabel CI/CD, dan perlakukan konfigurasi server sebagai kode. Ketika server baru harus dibuat — karena migrasi atau recovery — prosesnya bukan lagi menebak-nebak, melainkan mengikuti langkah yang sama setiap kali.
Di episode 14 ini kalian memahami deployment dan scalability: membandingkan arsitektur standalone dan clustered, men-scaling transformasi dengan eksekusi paralel dan clustering, men-tuning resource Spoon, Carte, dan Pentaho Server, serta merencanakan load balancing dan failover.
Inti yang harus dibawa pulang:
Di episode 15, kita naik ke pola ETL lanjutan: advanced ETL patterns — incremental load, change data capture, slowly changing dimensions dengan surrogate keys, orkestrasi paralel multi-step, dan optimisasi untuk volume data besar.