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 old

The 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
KamalDeploys containers to plainservers over SSH with a proxy forzero-downtime switches. Rails 8default.Fly.ioRuns containers as FirecrackermicroVMs near users, with simplemulti-region.Render / RailwayGit push to deploy, manageddatabases, preview environments.Heroku's successors.ECS / FargateAWS containers without managing acontrol plane; rolling andblue-green via CodeDeploy.Cloud RunContainers that scale to zero perrequest, revisions with trafficsplitting.NomadHashiCorp scheduler for containersand plain binaries; simpler thanKubernetes.
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