Overview
Recently I did a survey of cloud storage options and their costs. My focus was to find the cheapest, scalable storage solution that I can use with minimal cost to begin with.
If you are starting a new mobile app project, without any seed funding, the best choices are still Google Cloud Datastore and Amazon DynamoDB. Both offer low per-operation and per-data costs and data replication without any fixed monthly costs.
A Note on Dynamo DB vs Cloud Datastore
If your application performs a lot of operations (reads/writes) over a relatively fixed-sized dataset, DynamoDB (with higher per-GB-per-month costs but significantly lower per-read/write costs) could be significantly cheaper. A company I worked at leveraged this difference to realize significant cloud storage cost savings by migrating from Datastore to DynaomDB.
Note: the following page is an excellent resource for those familiar with either Google Cloud services or AWS services to find out the corresponding service offerings of the other provider:
https://cloud.google.com/free/docs/map-aws-google-cloud-platform
Cloud Storage Costs
Datastore (https://cloud.google.com/datastore/pricing)
No per node cost (bills per 100K reads/writes)
- 6c per 100k reads
- 18c per 100k writes
18c per gb per mo
AWS DynamoDB (https://aws.amazon.com/dynamodb/pricing/)
0.4c per hour minimum (for 5wps and 10 rps)
- 0.4c per 100k reads (prorated RCUs)
- 2c per 100k writes (prorated WCUs)
25c per gb per mo
Bigtable (https://cloud.google.com/bigtable/pricing)
65c per hour per node (195c per hour for 3 node min)
- 10K qps read and write per node (https://cloud.google.com/bigtable/docs/performance#performance_for_typical_workloads)
17c per gb per mo (ssd)
Spanner (https://cloud.google.com/spanner/pricing)
90c per hour per node
- 10K qps read per node
30c per gb per mo
Cloud SQL for MySQL (https://cloud.google.com/sql/docs/mysql/pricing)
19.3c per hour (13.51c per hour sustained use price) (38.6c per hour with failover replication) [2 CPUs, 7.5 GB RAM]
17c per gb per mo (ssd)
AWS RDS MySQL (https://aws.amazon.com/rds/mysql/pricing/) (https://aws.amazon.com/rds/instance-types/)
db.m4.large
17.5c per hour (12c per hour for 1-year term) (35c per hour with failover replication) [2 CPUs, 8 GB RAM]
11.5c per gb per mo
Heroku Postgres (https://www.heroku.com/pricing#databases)
27c per hour (pro-rated) [400 connections, 8GB RAM, 256 GB storage]