maand vs Kubernetes vs Nomad

A side-by-side comparison of orchestration models and where maand fits.


TL;DR

Feature maand Kubernetes Nomad
Model Worker pool + job batching Pod/container cluster Task/job scheduler
Scale Single cluster, tens of workers Multi-cluster, thousands+ of nodes Multi-cloud/DC, 1000s of nodes
Deployment order Built-in (rollout_order), per-deploy override StatefulSet ordinals, not restart order External orchestration required
State management Integrated KV store, per-job bootstrap commands External etcd; no native bootstrap Consul KV; external orchestration
Configuration Go templates + KV, per-worker SSH ConfigMaps, volumes, declarative HCL + Consul templates
Bootstrap complexity Simple: hook_node_up per node Operators / init containers External (e.g., Consul leader election)
Typical workload size 10–100 workers; 1–10 services per worker 100s–1000s of nodes; 100s of services 1000s of workers; 100s–1000s of tasks
Operations model CLI-driven deploy; visibility-first Declarative desired state Job submission + status
Best for Stateful clusters (Vault, Cassandra, databases) on managed hardware Cloud-native, stateless, multi-tenant workloads Heterogeneous workloads, multi-region batch jobs

Orchestration model

maand

Kubernetes

Nomad


Deployment ordering and rolling restarts

maand — first-class feature

rollout_order: ["10.0.0.1", "10.0.0.3", "10.0.0.2"]
max_concurrent_starts: 1  (or any N)

Kubernetes — no native ordering

Nomad — no native per-allocation ordering


Bootstrap and initialization

maand — integrated

Kubernetes — external

Nomad — external


Configuration and templating

maand

Kubernetes

Nomad


Cluster visibility and operations

maand

Kubernetes

Nomad


Portability and multi-cluster

maand

Kubernetes

Nomad


Scaling

maand

Kubernetes

Nomad


Summary: when to choose what

Choose maand if:

Choose Kubernetes if:

Choose Nomad if:


Feature matrix

Dimension maand Kubernetes Nomad
Bootstrap orchestration ✅ Integrated ⚠️ Requires operators ⚠️ External tooling
Deployment ordering ✅ Built-in ❌ No ❌ External
CLI visibility ✅ Single source ⚠️ Multiple tools ⚠️ Multiple tools
Stateful workloads ✅ Native ⚠️ Operators + complexity ⚠️ Not primary model
Multi-cluster ❌ No ✅ Yes ✅ Yes
Autoscaling ❌ Manual ✅ Yes ✅ Yes
Multi-DC failover ❌ No ⚠️ Complex ✅ Yes
Learning curve ✅ Shallow ❌ Steep ⚠️ Medium
Heterogeneous workloads ⚠️ Limited ⚠️ Container-focused ✅ Excellent