Part 6 · 1 chapters · ~8 min
Deploying Without Kubernetes
When Kubernetes is too much, Kamal on plain servers, Fly.io microVMs, Render and Railway, ECS and Fargate with CodeDeploy, Cloud Run revisions and traffic splitting, and Nomad, with the deploy strategy each supports.
7
Platforms and their strategies
code
# Kamal: config/deploy.yml
service: ledger
image: bank/ledger
servers: { web: [10.0.0.11, 10.0.0.12], job: { hosts: [10.0.0.13], cmd: bin/jobs } }
proxy: { ssl: true, host: api.bank.example, healthcheck: { path: /up } }
registry: { username: deploy, password: [KAMAL_REGISTRY_PASSWORD] }
env: { secret: [DATABASE_URL, SECRET_KEY_BASE] }
# kamal deploy → build, push, boot new containers, health check, switch proxy, stop oldThe honest rule: a team without platform engineers should not run Kubernetes for a handful of services. These platforms provide rolling or blue-green deploys, health checks and rollbacks with a fraction of the operational load.
DEPLOYING WITHOUT KUBERNETES
platforms that give most of the benefit with less to run
swipe the figure sideways, or tap expand for full screen
1/6
Kamal
Kamal builds an image, pushes it, and on each server starts the new container and switches kamal-proxy to it once healthy: blue-green on plain VMs, from one config file.
blue-green on plain servers over SSHgood for a few servers