October 8, 2026
Cloud Pricing Trends, September 2026: Stable Rates, Traffic-Driven Costs
Summary: Cloud World Model's September 2026 pricing snapshot found no provider list-price changes among 33 tracked rates on AWS, GCP, Azure, OCI and DigitalOcean. Two DigitalOcean database records changed because we corrected their source precision. We modeled one load balancer, two app servers and a MySQL database at 100 and 300 requests per second. Estimated monthly cost ranged from about $212 to about $642, depending on provider mapping and traffic.
We check cloud list prices every month across AWS, GCP, Azure, OCI and DigitalOcean. This month we also ran one architecture through the simulator on three providers, so the snapshot shows up as cost per hour, not just a list of rates.
Why we track pricing history
A simulation is only as good as its inputs. We check rates against official provider pricing sources and save each month as a dated snapshot. That way the history is a record, not something we overwrite. It covers five providers, four categories (compute, database, storage, network) and the same 33 resources every month, so months can be compared directly. The full series is on Pricing History and in the public GET /api/pricing-history endpoint.
What changed in September 2026
We found no provider list-price changes among the 33 tracked rates. Two recorded values changed because we corrected their source precision. The rates were rechecked against provider pricing sources on October 7, 2026.
Both corrections are DigitalOcean Managed Database plans. We now use the exact published monthly price for each plan. DigitalOcean publishes these as monthly prices, so the hourly figures below are our conversions, not published hourly rates:
| Resource | Provider | August record, $/hr equivalent (monthly price ÷ 730) | September record, $/hr equivalent (monthly price ÷ 730) | Change | Type |
|---|---|---|---|---|---|
| Managed DB db-s-1vcpu-1gb | DigitalOcean | $0.02055 ($15.00/mo) | $0.02075 ($15.15/mo) | +1.0% | Record correction |
| Managed DB db-s-2vcpu-4gb | DigitalOcean | $0.08219 ($60.00/mo) | $0.08342 ($60.90/mo) | +1.5% | Record correction |
Earlier changes still apply. GCP Cloud SQL db-n1-standard-2 has stayed at $0.1351/hr since its June 2026 drop (from $0.1917/hr in May). The tracked DigitalOcean Droplets (s-1vcpu-1gb, s-2vcpu-4gb and c-4) are unchanged from August. We don't have an October snapshot yet.
What this means for budgets
For the tracked rates, September introduced no provider list-price changes to carry into your budget. If you budget DigitalOcean Managed Databases from our history, the corrected records add about $0.90 a month to a db-s-2vcpu-4gb and about $0.15 a month to a db-s-1vcpu-1gb. For the GCP Cloud SQL bundled SKU, keep using the post-June rate.
Flat list prices don't mean flat bills, though. As the next section shows, how much traffic you serve can move your bill far more than any change in list prices did this month.
What stable rates look like on a real architecture
We modeled the same small, three-tier architecture we use on our accuracy benchmark: a load balancer in front of two app servers and one MySQL database. On AWS it's the exact benchmark setup in us-east-2. On GCP and DigitalOcean we picked the closest classes we could model:
| Role | AWS (benchmark) | GCP | DigitalOcean |
|---|---|---|---|
| Region | us-east-2 | us-central1 | nyc3 |
| Load balancer | Application Load Balancer | Cloud Load Balancing (1 forwarding rule) | Load Balancer |
| App servers (×2) | m5.large (2 vCPU, 8 GiB) | n2-standard-2 (2 vCPU, 8 GB) | g-2vcpu-8gb General Purpose (2 vCPU, 8 GiB) |
| MySQL | RDS db.r5.large (2 vCPU, 16 GiB) | Cloud SQL db-n1-highmem-2 (2 vCPU, 13 GB) | Managed MySQL db-s-2vcpu-4gb (2 vCPU, 4 GB) |
The DigitalOcean database is a smaller class than the other two. It's the largest DigitalOcean MySQL size our simulator currently models, so we're showing it as is rather than stretching the mapping.
We ran steady traffic at 100 and 300 requests per second (RPS), with no injected failures:
| Provider | Traffic | Modeled cost/hr | Modeled cost/month (730 h) | Fixed infrastructure/hr | Modeled egress/hr | Egress share of total |
|---|---|---|---|---|---|---|
| AWS | 100 RPS | about $0.60 | about $435 | about $0.45 | about $0.14 | about 24% |
| AWS | 300 RPS | about $0.88 | about $642 | about $0.45 | about $0.43 | about 48% |
| GCP | 100 RPS | about $0.54 | about $393 | about $0.39 | about $0.14 | about 27% |
| GCP | 300 RPS | about $0.83 | about $603 | about $0.39 | about $0.43 | about 52% |
| DigitalOcean | 100 RPS | about $0.29 | about $212 | about $0.27 | about $0.02 | about 6% |
| DigitalOcean | 300 RPS | about $0.33 | about $239 | about $0.27 | about $0.05 | about 17% |
How egress is modeled
Egress accounts for all of the modeled cost difference between the two traffic levels, so here is what's behind it:
- What the simulator reports: one hourly "egress and data transfer" cost. It combines internet egress and same-region cross-zone transfer.
- What it charges for: modeled served requests. That's 100 and 300 RPS on GCP and DigitalOcean. On AWS the benchmark calibration models about 88% of offered requests as served, so it's about 88 and 263 RPS.
- Effective egress cost per million served requests: about $0.45 on AWS, $0.40 on GCP and $0.05 on DigitalOcean. We divided hourly modeled egress cost by hourly modeled served requests, then multiplied by one million. They're the same at both traffic levels.
- What it doesn't expose: the assumed response size, the gigabytes transferred and the per-GB rate for each provider. We don't publish GB figures because we'd have to guess them.
- No free allowances: egress grows in a straight line from the first request. No provider's free tier is deducted, and DigitalOcean's included Droplet bandwidth isn't credited either. Real DigitalOcean egress at these volumes could be lower.
- Your egress will differ. Real egress depends on your response sizes and where your clients are. Treat this line as a placeholder to replace with your own numbers.
What we'd take from it
These points apply to this architecture at these traffic levels:
- Traffic, not list price, drives the change. Tripling traffic from 100 to 300 RPS raises the modeled cost by about 48% on AWS, 54% on GCP and 12% on DigitalOcean. All of that increase is modeled egress. Fixed infrastructure stays at about $0.45/hr on AWS, $0.39/hr on GCP and $0.27/hr on DigitalOcean.
- The September record correction is barely visible. Measured against the August records, the DigitalOcean setup's estimated cost rises by about $0.0012 an hour, or about $0.90 a month, at both traffic levels. Tripling traffic adds about $26 a month to the same setup. AWS and GCP resources in this setup didn't change between snapshots.
- Your database choice is a bigger lever than this month's price changes. Swapping the GCP database for the db-n1-standard-2 we track brings the estimate to about $0.50/hr at 100 RPS and about $0.79/hr at 300 RPS. At the May 2026 rate, before the Cloud SQL drop, those would have been about $0.56/hr and about $0.85/hr. These four figures come from snapshot rates, not a separate simulation.
This isn't a ranking. The setups differ in database memory, egress assumptions and evidence quality, so the gap between providers comes mostly from the mapping, not from which cloud is better.
Method and limits
- Only AWS is based on our own measurements. The AWS setup matches our company-owned benchmark topology. At both 100 and 300 RPS, the simulator reported that the owned benchmark calibration applied. That calibration covers performance outputs such as app CPU and in-VPC load-balancer latency, not cost. GCP and DigitalOcean performance comes from documentation-based reference estimates, not owned load tests. Because this is a pricing post, we've left latency out. See the live accuracy page for methodology and scope.
- Costs use public list prices and simulator catalog estimates; they are not measured bills. They're on-demand with no discounts. Load-balancer usage charges beyond the hourly rate aren't modeled separately. Egress assumptions are listed above.
- Not every rate is in our tracked 33. The n2-standard-2, db-n1-highmem-2 and g-2vcpu-8gb prices come from the simulator's own catalog. The db-n1-highmem-2 price is a simulator estimate.
- Nothing was deployed. Simulations don't create resources in anyone's cloud account.
- Snapshot rates: the September 2026 snapshot (dated September 1, 2026; rates rechecked October 7, 2026). Where we show a before-and-after cost, we computed it from snapshot rates; we didn't rerun the simulation.
- Run details: simulator engine 1.2.15, seed 20240601, run on October 8, 2026. Results from other engine versions may differ.
Run the same comparison yourself
Agents can run this comparison through the Cloud World Model MCP server or the REST API. Here is the AWS setup exactly as we created it with the MCP simulation.create tool:
{
"name": "pricing-example-aws",
"appWeight": "lean",
"seed": 20240601,
"traffic": 100,
"minInstances": 2,
"maxInstances": 2,
"resources": [
{"id": "alb", "type": "network", "name": "Application Load Balancer (internal)", "provider": "aws",
"location": {"regionKey": "us-east-2"},
"characteristics": {"serviceFamily": "alb", "loadBalancerScheme": "internal"}},
{"id": "app-1", "type": "compute", "name": "app-1", "provider": "aws",
"location": {"regionKey": "us-east-2"},
"characteristics": {"size": "m5.large", "serviceFamily": "ec2", "autoscaling": false, "workload": "crud"}},
{"id": "app-2", "type": "compute", "name": "app-2", "provider": "aws",
"location": {"regionKey": "us-east-2"},
"characteristics": {"size": "m5.large", "serviceFamily": "ec2", "autoscaling": false, "workload": "crud"}},
{"id": "db", "type": "database", "name": "mysql-db", "provider": "aws",
"location": {"regionKey": "us-east-2"},
"characteristics": {"size": "db.r5.large", "serviceFamily": "rds", "workloadDatabaseEngine": "mysql"}}
],
"connections": [
{"sourceId": "alb", "targetId": "app-1"},
{"sourceId": "alb", "targetId": "app-2"},
{"sourceId": "app-1", "targetId": "db"},
{"sourceId": "app-2", "targetId": "db"}
]
}Then call:
simulation.stepsimulation.cost_breakdown, which gives the 100 RPS costsimulation.inject_trafficwith{"targetRps": 300}simulation.stepsimulation.cost_breakdown, which gives the 300 RPS costsimulation.deletewhen you're done
For GCP and DigitalOcean, use the same graph with these changes. Drop workload, workloadDatabaseEngine and loadBalancerScheme from both. Remove serviceFamily from the two app servers and keep "autoscaling": false.
- GCP: set
providertogcpandregionKeytous-central1. Use load balancerserviceFamilycloud-load-balancing, appsn2-standard-2, and databasedb-n1-highmem-2withserviceFamilycloud-sql. - DigitalOcean: set
providertodigitaloceanandregionKeytonyc3. Use load balancerserviceFamilyload-balancer, appsg-2vcpu-8gb, and databasedb-s-2vcpu-4gbwithserviceFamilymanaged-mysql.
Change the regions, instance classes or traffic to match your own setup before deploying or changing infrastructure. Start with the MCP quickstart. Price history is available at GET /api/pricing-history and GET /api/pricing-history/compare?from=2026-08-01&to=2026-09-01.