AWS Fargate, Google Cloud Run and Azure Container Apps offer services to deploy containers serverless in the cloud. The three providers are the biggest in the industry, but how do their prices compare? One thing all 3 providers have in common: Their pricing is pretty complicated and it can be hard to keep the overview.
In a nutshell:
AWS Fargate's compute prices are generally lowest, Google comes second but their request-based model is pretty close to Azure, which was the most expensive option, at more than double the price of AWS.
In general, serverless is expensive. If you don't need the endless scalability, there are much cheaper options like Sliplane e.g. where you can deploy your containers for a fraction of the price.
Price comparison
Compute
Compute prices depend on
- location: operating costs for data centers are different based on location, which reflects in the price,
- the general billing model: Google e.g. offers request-based vs instance-based billing,
- hardware: Azure and Cloud Run offer GPU instances, which are more expensive than CPUs
- CPU architecture: ARM is generally more efficient and therefore cheaper than x86,
- CPU utilization: dedicated cores are more expensive than shared ones,
- saving plans: AWS e.g. offers Spot pricing to run containers on unused capacity
- duration of contracts: Azure e.g. offers a discount on long-running contracts
- operating system: It's pretty wild, but some people really run their containers on Windows, which costs more than Linux
For our comparison let's look at standard pricing for a Linux x86 in US east:
AWS Fargate | Google Cloud Run (instance based) | Google Cloud Run (request based) | Azure Container Apps | |
---|---|---|---|---|
$ per CPU | $29.55 | $51.25 | $63.08 | $63.08 |
$ per GB memory | $3.25 | $5.69 | $6.57 | $7.88 |
$ per million requests | - | - | $0.40 | $0.40 |
Free tier CPU | - | 240,000 s (~2.8 d), $4.32 | 180,000 s (~2.1 d), $4.32 | 180,000 s (~2.1 d), $4.32 |
Free tier memory | - | 450,000 s (~5.2 d), $0.90 | 360,000 s (~4.2 d), $0.90 | 360,000 s (~4.2 d), $1.08 |
Free tier requests | unlimited | unlimited | 2 M., $0.80 | 2 M., $0.80 |
Monthly standard compute prices in US East, x86 Linux: AWS Fargate, Google Cloud Run and Azure Container Apps
Bandwidth
At all providers ingress is free. Egress pricing depends on:
- where traffic is routed (same region, same provider, intercontinental, to the internet)
- the network tier
- total usage (gets cheaper with higher usage)
Let's again choose US east and look at 1 TB traffic cost per month for routing to the internet on standard tier networks:
AWS | GCP | Azure | |
---|---|---|---|
Egress (per TB) | $90 | $85 | $80 |
Free | 100 GB | 100 GB | 100 GB |
Egress fees per TB per month from US east on standard tier networks to the internet: AWS, GCP, Azure
Storage
Storage depends on
- region
- stored amount
- IOPS - read and write operations per second
- throughput - data transfer per second
- snapshots - archived storage is usually cheaper
- redundancy - store data with local or zonal replication
- disk type - HDD / SSD and standard / premium
- bursting - temporary increase of IOPS and throughput
For simplicity, we will only look at storage amount and neglect other fees, even though they potentially have a significant impact on applications with high throughput or many IOPS.
AWS Elastic Block Store | Google Cloud Hyperdisk | Azure Managed Disk | |
---|---|---|---|
128 GB | $10.24 | $10.24 | $9.60 |
storage prices of AWS EBS, GCP Hyperdisk and Azure Managed Disks in US east
Other services
We only looked at compute, network and storage prices above, but your app will most certainly require other services that add to the bill, like log storage, cloud builds, storage for containers in a registry, DNS, CDNs, ...
More considerations
It should be noted that there are other differences between the providers and we have to be careful not to compare apples and oranges:
- Hardware: not all CPUs are equal. Different hardware can have a big impact about what you get for your money
- Overprovisioning: You might buy a 4 CPU instance but since most people are overprovisioning, hosting companies usually sell more computing than what is actually available. If they go too far with this, you will see a noticeably lower performance or even experience your app crashing from time to time
- Support: hard to measure, but you know how much it's worth, when you need it
- SLAs: How much uptime is guaranteed?
- User experience: Did you account for development time and bug fixing?
- Security and Compliance
- Locations: AWS has the biggest network of data centers in the world. For latency-critical apps this is a must
- Integration with other services
- Startup time and Scaling time: how quickly they wake up idle instances and are able to scale up
- ...
You might pay more with vendor A, but for example if your instances are faster, you have a better user experience and get better support, it could be well worth it for your use case.
Summary
AWS's, GCP's and Azure's pricing is very complex and hard to predict.
AWS Fargate's compute prices are generally lowest, Google comes second but their request-based model is pretty close to Azure, which was the most expensive option, at more than double the price of AWS.
However, we have to be careful not to compare apples with oranges. Even though all providers have good reputation, there are lots of nuanced differences that can make a big impact depending on your use case.
In general, serverless is expensive. If you don't need the endless scalability, there are much cheaper options like Sliplane e.g. where you can deploy your containers for a fraction of the price.
Top comments (0)