Cloud Cost Optimization: How to Stop Overpaying for PaaS
Why does a 2-vCPU web app cost $130/month on Render but $55-85/month on GKE Autopilot? Because PaaS platforms bundle compute, networking, and orchestration into a single price — and the margin is baked in. Cloud cost optimization starts with understanding where your money actually goes.
#The PaaS pricing problem
Shared PaaS platforms buy cloud infrastructure wholesale and resell it at retail prices. Railway charges $20/vCPU/month and $10/GB RAM/month. Heroku charges $50/month for a Standard-2X dyno with 1 GB of RAM. Render charges $85/month for 2 vCPU and 4 GB RAM on its Pro instance.
Those same resources on Google Cloud's GKE Autopilot cost roughly $0.0445/vCPU-hour and $0.0049/GiB-hour. Run that math for 2 vCPU and 4 GB RAM over a full month (730 hours): about $79 for compute. The first GKE Autopilot cluster is free — Google gives you $74.40/month in cluster credits — so your actual compute cost after credits drops to roughly $5-10/month for a single workload.
Add a production Cloud SQL PostgreSQL instance at $50-80/month, and your total GCP bill lands between $55-85/month. That is the same workload that costs $130-150 on Render or $100-300 on Heroku.
The gap is the PaaS tax: the difference between what cloud providers charge and what PaaS platforms charge for equivalent resources. For a deeper breakdown of how each platform prices the same stack, see our PaaS pricing comparison.
#Where cloud costs actually go
Most teams overspend on cloud for structural reasons, not because they picked the wrong instance size.
The platform margin. Shared PaaS platforms need to cover their own infrastructure, support, and profit margin on top of the cloud resources you consume. That markup ranges from 40% to over 200% depending on the platform and tier. Heroku's Performance-M dyno costs $250/month for 2.5 GB RAM — the equivalent GKE pod runs for under $30.
Idle resources. Instance-based pricing means you pay for the full allocation whether your app handles 10 requests per second or zero. A $25/month Standard instance on an instance-based PaaS runs at that rate even if your app gets no traffic at 3 AM. Usage-based platforms (Railway, Fly.io) do better here, but you still pay the platform overhead on every unit of compute.
Database markup. Managed PostgreSQL on Railway costs roughly $92/month for a 2 vCPU, 4 GB RAM instance with 50 GB storage. The same spec on Cloud SQL runs $50-80/month billed by Google directly. Some platforms charge even more: Render's Pro PostgreSQL starts at $55/month for much less compute.
Egress fees. Railway charges $0.10/GB for egress above 100 GB. Cloud providers charge less — GCP starts at $0.08/GB for the first 10 TB, with substantial discounts at higher volumes. On platforms like Heroku, egress costs are bundled into the dyno price with no line-item visibility.
#The BYOC cost structure
BYOC (Bring Your Own Cloud) eliminates the middleman markup on infrastructure. You pay your cloud provider directly at their published rates. The BYOC vendor charges a platform fee for the deployment layer — the control plane, CI/CD, monitoring, and developer interface.
This structure has three cost advantages that compound as you scale.
Cloud credits apply. Google offers up to $350,000 in startup credits, and GKE Autopilot's first cluster is permanently free. AWS and Azure have similar startup programs. On a shared PaaS, credits from your cloud provider are useless — you never touch the cloud directly.
Committed-use discounts apply. GCP CUDs (Committed Use Discounts) cut compute costs by 20-57% for 1-3 year commitments. AWS Savings Plans offer similar reductions. These discounts apply to your BYOC workloads because the infrastructure runs in your account. On shared PaaS, the vendor captures those discounts — you pay their retail rate.
No compound scaling tax. When you scale from 2 to 20 services, a shared PaaS charges platform margin on every additional unit. On BYOC, your cloud bill grows at cloud-provider rates — linearly, without the stacked markup. The platform fee stays flat or grows slowly.
For a complete explanation of how this model works, read What is BYOC.
#Cloud cost optimization by platform: what you actually pay
| Platform | Model | 2 vCPU / 4 GB + PostgreSQL | BYOC | Cloud Credits |
|---|---|---|---|---|
| Railway | Per-seat + usage | $70-90/mo | Enterprise only | No |
| Render | Instance-based | $130-150/mo | No | No |
| Heroku | Per-dyno flat | $100-300/mo | No | No |
| Fly.io | Usage-based | $75-100/mo | No | No |
| Porter | BYOC metered | $300+/mo | Yes (AWS/GCP) | Yes |
| Northflank | Usage-based | $80-120/mo | Yes (all plans) | Yes |
| GKE Autopilot (direct) | Cloud-direct | $55-85/mo | N/A | Yes |
| AZIN (GCP BYOC) | BYOC flat fee | GCP cost + platform fee | Yes (GCP) | Yes |
All estimates use the same benchmark: 2 vCPU, 4 GB RAM web service + managed PostgreSQL, running 24/7 with moderate traffic. Data verified March 2026.
The raw GKE Autopilot line shows what the infrastructure actually costs when nobody takes a cut. Every shared PaaS platform charges meaningfully more for identical compute.
#The Kubernetes cost problem — and how Autopilot fixes it
Kubernetes itself can be expensive to run. A self-managed EKS cluster on AWS costs ~$73/month for the control plane alone, plus node costs. Porter deploys to EKS, which means your minimum monthly bill starts around $225 before any workloads run. That is the Kubernetes tax on top of the PaaS fee.
GKE Autopilot inverts this. Google charges nothing for the cluster control plane — it is included in the per-pod pricing. You pay $0.0445/vCPU-hour and $0.0049/GiB-hour for the pods your workloads request. No idle node costs. No cluster management fee. The first Autopilot cluster in each billing account gets $74.40/month in free credits, which covers a lightweight workload entirely.
This is why BYOC on GKE works at small scale where BYOC on EKS does not. Porter requires a minimum EKS investment that makes no sense for a 2-service startup. AZIN on GKE Autopilot starts from near-zero cloud costs because the cluster itself is free.
For teams evaluating Kubernetes costs specifically, the key question is not "how much does K8s cost" but "who pays for the control plane." On EKS, you do. On GKE Autopilot, Google absorbs it.
#Reduce cloud costs without managing infrastructure
The traditional advice for cloud cost optimization involves rightsizing instances, scheduling shutdowns, buying reserved capacity, and auditing idle resources. That advice assumes you manage infrastructure directly. Most startups using PaaS platforms do not.
If you are on a shared PaaS, your optimization options are limited to choosing a smaller instance tier, reducing the number of services, or switching platforms entirely. Reserved instances, pod scheduling, and committed-use discounts are off the table.
BYOC gives you the full cloud provider optimization toolkit without requiring you to learn Kubernetes, write Terraform, or manage nodes.
Autoscaling at cloud rates. AZIN supports horizontal pod autoscaling on GKE Autopilot. Your pods scale based on CPU or memory thresholds, and you pay GKE's per-second rates for the additional capacity. On shared platforms, autoscaling (where available) still charges the platform's markup on every scaled unit.
Preview environment costs drop. AZIN deploys full-stack preview environments per pull request. Because previews run on GKE Autopilot with per-pod billing, a preview that runs for 2 hours costs pennies. On instance-based platforms, a preview environment runs a full instance at the monthly rate, prorated.
No egress surprises. Traffic between your services stays within your GCP VPC — internal networking is free. Cross-service communication on shared platforms traverses the vendor's network, and some charge for it.
Deploy to your own cloud
AZIN deploys to GKE Autopilot in your GCP account. First cluster free. Pay Google directly for the infrastructure.
#Strategies that actually reduce cloud costs
Not all cost optimization advice is useful. Skip the generic recommendations about "monitoring dashboards" and "tagging resources." Here is what moves the needle.
Switch from instance-based to usage-based billing. If your app has variable traffic, instance-based platforms (Render, Heroku, DigitalOcean) charge you for peak capacity around the clock. Usage-based platforms (Railway, Fly.io) or per-pod billing (GKE Autopilot) charge for what you use. For apps with off-peak hours, this alone cuts costs 20-40%.
Move databases to your cloud account. Managed databases on PaaS platforms carry the highest relative markup. PaaS PostgreSQL instances start at $55/month for entry-level tiers. The same spec on Cloud SQL costs less and includes automatic backups, high availability options, and point-in-time recovery — features some platforms charge extra for.
Use your cloud provider's startup credits. Google, AWS, and Azure all offer significant startup credit programs. Google's program provides up to $350,000. These credits cover GKE, Cloud SQL, Memorystore, and all other services. On a shared PaaS, these credits sit unused because you never provision cloud resources directly. See our guide to Google Cloud credits for startups.
Evaluate BYOC early, not after you hit a wall. Most teams start on shared PaaS for speed, then migrate to direct cloud or BYOC when costs spike. The migration itself costs engineering time. If your product will reach $200+/month in hosting within a year, starting on BYOC saves the migration entirely.
Consolidate services onto fewer, larger pods. Running 8 separate 0.25-vCPU services is more expensive than running 2 services at 1 vCPU each, because of per-pod overhead (system containers, memory overhead, scheduling costs). This applies on both shared PaaS and GKE. Review whether your microservices architecture is costing you more than a simpler topology.
#When shared PaaS makes sense (and when it does not)
Shared PaaS is not a scam. It is a trade-off. The markup pays for managed infrastructure that you do not staff engineers to operate.
Railway at $70-90/month for a startup workload is a reasonable deal if your team has zero DevOps capability, needs to ship in a weekend, and cares more about speed than unit economics. Fly.io at $75-100/month offers solid performance at competitive rates with presence across 18 regions.
The math breaks down in a few predictable scenarios.
Growth kills the economics. When your bill crosses $200-300/month on a shared platform, the markup delta against direct cloud pricing becomes large enough to fund a migration. At $500/month, you are likely paying $200-250 in pure platform margin.
Compliance requires infrastructure ownership. Regulated industries need data residency guarantees, SOC 2 boundaries, and VPC isolation. Shared PaaS platforms cannot provide this because your workloads run on shared infrastructure alongside other tenants. BYOC gives you the compliance posture of self-hosted with the ergonomics of PaaS.
Multi-service architectures also suffer. The PaaS tax compounds linearly with service count — a 10-service application on a shared platform costs 10x the per-service rate with no volume discount. On GKE, pod scheduling is more efficient and per-second billing reduces waste.
For context on how AZIN compares to specific platforms, see AZIN vs Railway and AZIN vs Render. For the broader alternatives landscape, see Heroku alternatives and BYOC platforms compared.
Blog
PaaS Pricing Comparison 2026
The same workload priced on 10 platforms — Railway, Render, Heroku, Vercel, Fly.io, and more.
#The migration math
Moving from shared PaaS to BYOC has a cost too. Budget 1-2 days of engineering time for a straightforward migration (git-push deploy, managed database, standard web framework). AZIN's GitHub integration and Railpack auto-detection handle most configurations without changes to your codebase.
The break-even calculation: if your current PaaS bill is $150/month and your equivalent GCP cost would be $70/month + AZIN platform fee, the $80/month savings pays back 2 days of migration time within 3-4 months.
For teams coming from Heroku specifically, the transition is documented in our Heroku migration guide. AWS BYOC is on our roadmap, with Azure support planned after that.
Data verification
Pricing and feature data were last verified on the dates noted. All platform pricing reflects publicly available rates as of March 2026. AZIN B.V. makes reasonable efforts to keep this data accurate. If you notice an error, please contact legal@azin.run.
Auto-deploy into your own cloud
Push code, AZIN handles the rest. Auto-detected builds, your cloud account, no vendor lock-in.
Related
Managed Kubernetes Simplified — Deploy Without the DevOps Overhead
You don't need to learn Kubernetes to deploy to the cloud. Managed Kubernetes platforms like GKE Autopilot abstract away cluster operations entirely, and BYOC platforms take it further by removing even the kubectl.
cloud hostingBest Cloud Hosting Platforms for Developers in 2026
10 cloud hosting platforms compared — from shared PaaS to BYOC to self-hosted. Pricing, regions, features, and which fits your stack.