// cloud · azure

Azure: the enterprise-friendly ruby home.

If your org lives on Entra ID (formerly Azure AD), Azure removes an entire class of identity problems.

Azure gets an undeserved reputation for being enterprise-only. In truth, Azure Container Apps is one of the nicest Kubernetes-flavored PaaS runtimes out there — and it deploys unmodified Ruby containers happily.
60+
global regions
~1.2 s
cold start on Container Apps
100
revisions kept per app
01 / 04

Container Apps > App Service for Ruby

App Service has a Ruby stack, but it's dated. Container Apps takes any OCI image, gives you KEDA-based autoscaling (including scale-to-zero), and treats revisions as first-class objects for blue/green.
bash
az containerapp create \ --name rails-web \ --resource-group prod \ --environment prod-env \ --image ghcr.io/you/app:sha-9f3ac1b \ --target-port 3000 \ --ingress external \ --min-replicas 1 --max-replicas 10 \ --secrets rails-master-key=keyvaultref:...
02 / 04

Postgres Flexible Server

The 'Flexible' tier is the one you want — the older 'Single Server' is deprecated. Flexible supports pgbouncer natively, offers zone-redundant HA, and integrates cleanly with private VNet endpoints.
03 / 04

Key Vault for secrets

Container Apps has native Key Vault references — you set the secret to `keyvaultref:https://…` and Azure injects the current value on start. No sidecar, no polling.
04 / 04

Front Door for CDN + WAF

Azure Front Door is the CloudFront equivalent — global anycast, WAF, and cache. Point it at your Container App's FQDN and terminate TLS there.

Gotchas we learned the hard way

  • !Container Apps' scale-to-zero can add up to ~1.5s to the first request after idle. Set min-replicas to 1 for user-facing apps.
  • !Postgres Flexible Server private endpoints require a delegated subnet — plan the VNet layout before you provision the DB.
  • !Entra ID managed identity for accessing Key Vault is beautiful when it works. Give it 5–10 minutes to propagate on first setup or you'll debug non-issues.
  • !Azure Monitor ingests everything by default. Filter noisy container stdout at the source and set a sensible retention window before you flood the workspace.

Related guides

Ready?
Rails on Container Apps in one command

Our az CLI script bootstraps everything: registry, environment, Postgres, Key Vault, Front Door.