← Semua picks

Stack Comparison Conditional

Kubernetes vs Nomad vs Docker Swarm

Tiga orchestrator saya operate paralel 30 bulan di BUMN energy + fintech Jakarta. Kubernetes (GKE) untuk core production. Nomad untuk batch + edge cluster regional. Docker Swarm hanya untuk legacy lab. Verdict per skala + ops capacity.

7 Juli 2026 · 12 menit ·Use case: Container orchestration untuk enterprise Indonesia
KubernetesHashiCorp NomadDocker Swarm

TL;DR

  • Kubernetes (GKE managed atau Rancher self-host): default enterprise. Ekosistem unmatched.
  • Nomad: alternative simpler untuk batch + multi-region edge. Tidak menggantikan K8s untuk core production di 2026.
  • Docker Swarm: legacy only. Skip untuk greenfield.
  • Platform abstraksi (Fly.io, Railway, Cloud Run): cocok untuk SMB < 10 service yang mau skip K8s overhead.
  • Verdict: Conditional — Kubernetes default, Nomad niche, Swarm phase-out.

Konteks

Saya operate orchestrator paralel 30 bulan (Desember 2023 - Mei 2026) di:

  • Fintech series-B Jakarta: GKE managed asia-southeast2 (Jakarta) untuk core production + GKE Singapore untuk DR (active-passive)
  • BUMN energy Jakarta: Rancher self-host on-prem 2 cluster (primary di Pusat Data Cibitung, DR di Pusat Data Tangerang)
  • Eval Nomad: 6 bulan untuk multi-region batch workload di fintech, hasilnya stable, pakai untuk batch saja (bukan replace K8s core)
  • Docker Swarm: legacy stack di BUMN (1 cluster) — migrate ke Rancher dalam 2025

Pengalaman Kubernetes total: 7 tahun (sejak 1.10 era). Nomad: 1,5 tahun. Docker Swarm: 4 tahun (legacy maintenance).

Pricing (Juni 2026)

GKE Autopilot (Jakarta)

  • Control plane: USD 0,10/hour per cluster = USD 73/bulan/cluster
  • Pod compute: per-second billing CPU + memory
  • Saya pakai 1 cluster production + 1 cluster staging
  • Workload aktual fintech: 18 service × 3 pod average × resource request
  • Total: ~Rp 18-25 juta/bulan compute + control plane

GKE Standard (Singapore DR)

  • Control plane: USD 0,10/hour
  • Node group: managed instance group, charged per VM hour
  • 30% capacity standby
  • Total: ~Rp 8 juta/bulan

Rancher self-host (BUMN on-prem)

  • Software gratis (Rancher OSS)
  • Hardware on-prem (sudah ada budget BUMN, tidak terhitung di OPEX bulanan)
  • Ops engineer 2 FTE dedicated × Rp 25 juta = Rp 50 juta/bulan
  • Plus license Rancher Enterprise (optional, ada di BUMN saya): USD 17.000/tahun = Rp 22 juta/bulan equivalent

Nomad self-host

  • Software gratis (HashiCorp)
  • Eval cluster 3-node e2-medium GKE: Rp 2,1 juta/bulan
  • Untuk batch workload yang scale di-bawah K8s primary

Total orchestration

ItemCost/bulan fintechCost/bulan BUMN
GKE Autopilot Jakarta + Singapore DRRp 28-33 juta
Rancher self-host (license + ops)Rp 72 juta
Nomad eval (fintech)Rp 2,1 juta
TotalRp 30-35 jutaRp 72 juta

GKE managed jauh lebih murah dari Rancher self-host kalau hitung ops time. BUMN context: Rancher self-host karena mandat on-prem regulasi, bukan pilihan optimal economic.

SLO + performance (30 bulan)

Kubernetes GKE managed

MetrikTargetRealisasi
API server availability99,95%99,98% (Google SLA)
Pod scheduling latency p99< 8 detik4-6 detik
Pod start time (image cached)< 15 detik8-12 detik
Cluster upgrade downtime0 (rolling)0
etcd read latency p99< 50msmanaged (vendor)
Node ready transition p99< 90 detik70-85 detik
HPA scale-up latency< 30 detik20-28 detik

Rancher self-host on-prem

MetrikTargetRealisasi
API server availability99,9%99,82%
Pod scheduling latency p99< 12 detik7-12 detik
Cluster upgrade window4 jam6-9 jam (manual coordination)
etcd read latency p99< 80ms45-70ms
Node ready transition p99< 180 detik120-180 detik

Nomad batch cluster

MetrikTargetRealisasi
Job dispatch latency p99< 5 detik2-3 detik
Allocation start time p99< 30 detik18-25 detik
Cluster availability99,9%99,94%

Nomad scheduling lebih cepat dari K8s untuk batch (simpler scheduler logic). K8s scheduler complexity worth-nya untuk feature breadth (affinity, taint, topology, custom scheduler), bukan untuk speed.

Capability comparison

CapabilityKubernetesNomadDocker Swarm
Container orchestrationyayaya
VM/exec/Java orchestrationtidakyatidak
Service discoveryya (CoreDNS)ya (Consul)ya (built-in)
Ingress/Load balancerya (Ingress, Gateway API)via Consul + Traefikya (routing mesh)
Network policyya (Calico, Cilium)terbatastidak
Storage orchestrationya (CSI, PV/PVC)ya (CSI)ya (volume driver)
ConfigMap / Secretyaya (via Vault)secret ya
Auto-scaling horizontalya (HPA, KEDA)yaya (terbatas)
Auto-scaling clusterya (cluster autoscaler)ya (Auto Scaler)tidak
Multi-regionya (federation/multicluster)ya (built-in superior)tidak
RBACyaya (via ACL)sederhana
GitOps toolingmature (ArgoCD, Flux)terbatas (Levant)sederhana
Service meshya (Istio, Linkerd)via Consultidak
Operator patternyatidak (job templates)tidak
Ekosistem toolingterbesarsedangmenurun
Operational complexitytinggisedangrendah
Hiring ease Indonesiamedium-baikrendahrendah

Multi-region

Nomad menang untuk multi-region deployment natural. K8s federation (KubeFed) complex, sering ditinggalkan untuk multi-cluster + GitOps pattern. Untuk geographic distributed workload, Nomad lebih natural.

K8s saya jalankan multi-cluster (Jakarta + Singapore) dengan ArgoCD ApplicationSets untuk sync, bukan federation.

Trade-off arsitektural

Pilih Kubernetes kalau:

  • Production enterprise dengan 8+ microservice
  • Butuh ekosistem matang (service mesh, observability, GitOps, operator)
  • Tim platform engineering 2+ FTE atau pakai managed (GKE/EKS/AKS)
  • Hiring engineer K8s di Indonesia (pool moderate, gampang)
  • Skala growth target (siap scale ke 100+ service)

Pilih Nomad kalau:

  • Batch workload dominant (data pipeline, ML training, scheduled job)
  • Multi-region geographic distribution wajib
  • Tidak butuh ekosistem K8s deep
  • Ops complexity preference: medium
  • Mixed workload (container + VM + Java direct exec)

Pilih Docker Swarm kalau:

  • Maintain legacy stack dengan plan migrate
  • Lab atau staging single-VM
  • Tidak untuk greenfield 2026

Pilih platform abstraksi (Fly.io, Cloud Run, Railway) kalau:

  • SMB < 10 service
  • Tim engineering < 5 dev
  • Ops capacity minimal (no platform engineer)
  • Speed-to-market matter

High availability + DR

GKE Multi-region pattern

Jakarta cluster (primary)
   ├── 3 zone (asia-southeast2-a, b, c)
   ├── etcd managed regional
   └── workload distributed across zone

Singapore cluster (DR active-passive)
   ├── 3 zone
   ├── 30% capacity standby
   └── ArgoCD sync from Git source
        └─ failover via DNS + ArgoCD apply
  • RPO: 5 menit (Postgres + R2 storage replication)
  • RTO: 15-25 menit untuk regional failover
  • Failover test quarterly via chaos engineering drill

Rancher on-prem HA

  • Primary: Pusat Data Cibitung (3 master + 12 worker)
  • DR: Pusat Data Tangerang (3 master + 8 worker, 60% capacity)
  • Latency Cibitung ↔ Tangerang: ~3-5ms (fiber dedicated)
  • RPO: 15 menit (etcd backup ke S3 lokal)
  • RTO: 30-45 menit manual coordination

Nomad multi-region

Native multi-region first-class. 1 Nomad federation across 3 region: 30 detik scheduling propagation, RPO 0.

Migration risk

Docker Swarm → Kubernetes

Saya jalankan di BUMN 2025: 8 service Swarm → Rancher.

  • Translate docker-compose.yml ke K8s manifest (Kompose tool partially work)
  • Refactor secret management (Swarm secret → K8s secret + Sealed Secret atau External Secret)
  • Refactor networking (Swarm routing mesh → Ingress + NetworkPolicy)
  • Total elapsed: 14 minggu, 2 engineer

Pain point: stateful workload (Postgres di Swarm) butuh redesign dengan StatefulSet + PVC. 4 minggu effort untuk 1 cluster Postgres.

K8s on-prem → GKE managed

Lebih simpel. ArgoCD sync ke target cluster, validate per workload, cutover via DNS. 6-8 minggu untuk 18 service.

Nomad → Kubernetes (atau sebaliknya)

Tidak common. Job spec berbeda total. Lebih masuk akal untuk re-architect daripada migrate langsung.

GitOps pattern

Saya pakai pattern same di K8s + Nomad:

Git repository (Helm chart atau Nomad job spec)

   ├── ArgoCD (K8s) watch ─→ apply to target cluster

   └── Levant/Waypoint (Nomad) watch ─→ deploy to Nomad

GitOps di K8s mature (ArgoCD + Flux). GitOps di Nomad lebih primitif tapi workable.

Common pitfall

  1. Resource request/limit kosong. K8s default 0 = pod bisa cannibalize node. Setup resource request realistic + limit guard. Audit dengan kubectl describe + Vertical Pod Autoscaler recommendation.
  2. No PodDisruptionBudget. Cluster upgrade kill pod tanpa PDB = downtime workload. Setup PDB minAvailable 1 minimum per service.
  3. etcd unmanaged backup. Self-host K8s tanpa etcd backup periodik = single point of failure. Cron backup ke S3 lokal + test restore quarterly.
  4. Storage class default tidak HA. Default GCE-PD / EBS tier-1 single-zone. Untuk stateful workload: regional persistent disk atau storage class multi-zone explicit.
  5. Ingress controller single replica. Ingress = entry point traffic. Replica 1 = SPOF. Minimum 3 replica + PDB.

Cost of ownership 36 bulan

Skenario: 18 microservice enterprise, multi-region HA.

ItemGKE managedRancher on-premNomad self-host all
License/SaaS 3 tahunRp 0Rp 792 juta (Rancher Enterprise)Rp 0
Compute/infraRp 1,1 miliarRp 360 juta (hardware amortized)Rp 480 juta
Ops time engineerRp 360 jutaRp 1,8 miliar (2 FTE 3 tahun)Rp 720 juta
Migration/setupRp 80 jutaRp 240 jutaRp 120 juta
Incident attributed to orchestratorRp 24 jutaRp 95 jutaRp 38 juta
Total 3 tahunRp 1,56 miliarRp 3,29 miliarRp 1,36 miliar

GKE managed 50% lebih murah dari Rancher on-prem (utamanya karena ops overhead). Nomad pure paling murah, tapi feature limitation untuk core production K8s.

BUMN context: Rancher on-prem mahal tapi non-negotiable karena regulasi sektoral. Fintech context: GKE managed obvious choice.

Indonesia specific

Data residency

GKE asia-southeast2 (Jakarta) memenuhi UU PDP. Untuk fintech regulated: bind workload + persistent data ke region Jakarta, replication ke Singapore untuk DR (replication intra-Asia-Pacific dianggap acceptable oleh OJK selama primary di Indonesia).

Untuk BUMN dengan mandat strict on-prem (sektor energy, pertahanan): Rancher self-host di pusat data Indonesia.

Hiring + training

Senior K8s engineer di Jakarta pool moderate. Kompensasi Rp 35-55 juta/bulan untuk senior platform engineer. CKA / CKAD certification umum, training di Indonesia: meetup KubeCon Jakarta tahunan + provider local training (Mirantis, Skillsoft).

Nomad engineer di Jakarta scarce. Lebih masuk akal train K8s engineer existing ke Nomad (2-3 minggu ramp-up).

Compliance audit

K8s audit log → Splunk via Fluentbit + OJK retention 7 tahun. Setup audit policy granular: Metadata level untuk noise reduction, RequestResponse level untuk sensitive resource (Secret, ServiceAccount).

Yang surprising

Setelah 30 bulan: GKE Autopilot Jakarta ternyata mature lebih cepat dari ekspektasi. Saya start dengan GKE Standard di 2023, switch ke Autopilot di Q3 2024. Ops time turun ~40% (no node management, automatic right-sizing). Cost compute justified lebih tinggi 15-20% tapi worth ops saving.

Surprise lain: Nomad ternyata sangat happy untuk batch workload. Kami jalankan ML training + data pipeline di Nomad federation 3-region (Jakarta, Singapore, US-east), latency scheduling 2-3 detik consistent. K8s equivalent (KubeFed) saya pernah test, abandoned karena complexity.

Verdict

Conditional dengan rule konkret:

  • Default enterprise Indonesia core production: Kubernetes (GKE Autopilot untuk speed, Rancher self-host kalau on-prem mandate).
  • Batch + multi-region edge: Nomad sebagai complement, bukan replacement.
  • SMB < 10 service: skip K8s, pakai platform abstraksi (Cloud Run, Fly.io). K8s overhead tidak justify.
  • Skip Docker Swarm untuk greenfield. Maintain only kalau ada legacy investment, plan migrate dalam 12-18 bulan.

Threshold konkret untuk adopt K8s: 8+ service + tim platform engineer 1+ FTE (atau pakai managed) + budget Rp 15-30 juta/bulan untuk cluster + monitoring + ekosistem. Di bawah ini, K8s = over-engineering.

Ditulis oleh Asti Larasati

// Pick Stack Comparison lain


← Semua picks RSS feed