Memilih pola deployment model yang tepat: online serving (REST/gRPC), batch, dan streaming, lalu strategi blue-green dan canary untuk model, traffic splitting, dan rollback yang aman di produksi.

Setelah di episode 9 model kalian sudah menjadi API, sekarang pertanyaannya: bagaimana cara memperbarui model tanpa menghentikan layanan? Model tidak lahir sempurna — versi baru datang setiap beberapa minggu, dan mengganti model di produksi adalah operasi yang berisiko: bisa menurunkan kualitas, menaikkan latensi, atau memperkenalkan bug yang tidak muncul di staging.
Mengapa deployment pattern penting? Karena model yang salah di-deploy lebih berbahaya daripada tidak di-deploy. Pilihan pola yang tepat menentukan seberapa cepat kalian bisa mendeteksi masalah, seberapa kecil dampaknya terhadap pengguna, dan seberapa mudah rollback. Episode ini membedah tiga bentuk serving dan tiga strategi deployment.
Cara model dipanggil menentukan arsitekturnya. Tiga pola utama:
Model dipanggil real-time per-request — pengguna menunggu respons saat itu juga.
curl -X POST https://api.churn.example/predict \
-H "Content-Type: application/json" \
-d '{"age": 45, "monthly_charges": 89.9}'Prediksi dihitung untuk banyak record sekaligus, sesuai jadwal. Contoh: skor churn untuk semua pelanggan setiap malam, atau rekomendasi harian.
python -m churn.batch_score --input s3://data/customers.csv \
--output s3://output/predictions/2026-08-16.parquetPrediksi dilakukan pada event real-time dalam pipeline streaming (Kafka, Kinesis) — model menjadi satu tahap dalam alur event. Cocok untuk fraud detection atau monitoring sensor.
Event (Kafka) → Consumer → Predict → Keputusan → Publish hasil| Aspek | Online | Batch | Streaming |
|---|---|---|---|
| Latency | Milidetik | Menit-jam | Detik |
| Pengguna | Request langsung | Laporan/berkala | Event stream |
| Contoh | API churn | Skor malam hari | Fraud detection |
| Infra | Load balancer | Scheduler | Kafka + consumer |
Blue-Green adalah strategi yang paling sederhana dan aman secara konsep: dua environment identik (blue = versi lama, green = versi baru), dan perpindahan traffic terjadi sekali switch.
┌────────────┐ ┌────────────────┐
│ Router/ │ │ Blue: model v1 │ ← menerima traffic sekarang
│ LB ├────►│ Green: model v2│ ← di-deploy, diuji, belum dipakai
└────────────┘ └────────────────┘Alurnya:
green (v2) berdampingan dengan blue (v1).green — pastikan model sehat.green (switch router).Kekuatannya: rollback yang instan dan deterministik. Kelemahannya: biaya ganda (dua environment berjalan), dan switch penuh berarti jika v2 bermasalah, semua pengguna terdampak sekaligus.
Canary adalah strategi bertahap: traffic dialihkan sedikit demi sedikit, sambil membandingkan metrik antara versi lama dan baru. Jika metrik memburuk di 5% traffic, canary dihentikan sebelum mempengaruhi 95% sisanya.
Untuk model, "metrik ok" bisa berupa: latensi p95, error rate, dan — khusus untuk ML — kualitas prediksi jika ada umpan balik cepat.
Di Kubernetes, weight-based routing mudah dilakukan dengan Istio atau Linkerd. Contoh VirtualService Istio:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: churn-svc
spec:
hosts:
- churn-svc
http:
- route:
- destination:
host: churn-svc
subset: v1
weight: 95
- destination:
host: churn-svc
subset: v2
weight: 5apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: churn-svc
spec:
host: churn-svc
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2Alur canary model yang baik:
Note
Canary model perlu dua hal yang sering terlupakan: pembanding yang adil (kedua versi harus menerima tipe traffic yang sama) dan metrik kualitas (bukan hanya latensi). Jika model tidak punya umpan balik cepat, setidaknya pantau distribusi prediksi untuk melihat pergeseran perilaku.
Rolling menggantikan pod secara bertahap tanpa dua environment penuh — strategi default di Kubernetes. Cocok untuk model yang kompatibel ke belakang (schema input sama). Kelemahannya untuk ML: kalian tidak mudah membandingkan dua versi secara langsung, dan rollback butuh redeploy.
spec:
replicas: 4
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1| Kondisi | Pilihan |
|---|---|
| Perubahan besar, butuh rollback instan | Blue-green |
| Perubahan kecil, ingin bertahap & aman | Canary |
| Update rutin, kompatibel ke belakang | Rolling |
| Kualitas model diragukan | Canary dengan gate kualitas |
| Tanpa umpan balik kualitas cepat | Blue-green + monitoring prediksi |
Prinsip utamanya: deploy model yang bisa kita ukur dan bisa kita tarik. Apa pun strateginya, tanpa monitoring (episode 12) dan registry yang rapi (episode 11), rollback adalah menebak-nebak.
Pada episode 10 ini, kalian telah menguasai pola deployment model.
Inti yang harus dibawa pulang:
Di episode 11 selanjutnya kita akan membahas model registry & versioning — MLflow Model Registry, siklus hidup model (staging → production → archived), promotion yang terotomasi, dan lineage model → data → kode. Sampai jumpa di episode 11!