Part 9 · 1 chapters · ~8 min

In Production: What Rails Is Paired With

Puma configuration, the classic stack (Nginx, Sidekiq, Redis, Postgres, PgBouncer) and the Rails 8 solid stack (Solid Queue, Solid Cache, Solid Cable, Thruster), deploying with Kamal or on PaaS and Kubernetes, connection sizing, assets with Propshaft, and observability.

10

Two stacks

code
# config/deploy.yml (Kamal 2)
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 }
env: { secret: [RAILS_MASTER_KEY, DATABASE_URL] }

# config/queue.yml (Solid Queue) or Sidekiq: config/sidekiq.yml with concurrency 10 and queues [critical, default, low]
# config/database.yml: separate databases for queue and cache in Rails 8 (queue: ..., cache: ...)
WHAT RAILS IS PAIRED WITH IN PRODUCTION
the classic stack and the Rails 8 "solid" stack
kamal-proxy / Nginx / ThrusterTLS, X-Sendfile, compressionPumaworkers × threadsRails appSidekiq (Redis) or Solid Queue (DB)PgBouncer → PostgresRedis or Solid Cache
swipe the figure sideways, or tap expand for full screen
1/5
the classic stack
Nginx in front, Puma processes and threads, Sidekiq with Redis for jobs, Redis for caching and Action Cable, Postgres with PgBouncer, deployed on Heroku, Render or Kubernetes.
Puma + Sidekiq + Redis + Postgresthe long-standing default