In this chapter, we will compare Upstash with alternative cloud based solutions.
ElastiCache is a managed service for Redis and Memcache from AWS. The main problem with ElastiCache is that you need to pay for the instances even when you do not use them. So its pricing does not fit to the serverless model. On the other hand, Upstash has a serverless pricing model where you only pay per the request. Another advantage of the Upstash is that you can have your databases in different cloud providers and move your database between them easily whereas AWS discourages you to try other cloud providers. You can not access Elasticache database from outside AWS in a simple way (you need to setup VPN)
DynamoDB is a key-value and document database from AWS. It has a serverless database model. So far so good. But it can not compete with Redis on latency. In Upstash the latency of the read queries is submillisecond while the latency is up to 10 msec in DynamoDB. Besides latency, you will miss the simplicity and elegance of Redis API much if you are working with DynamoDB. Last but not least, the vendor lock-in. You can find the Redis everywhere, almost on all cloud providers. But your investment into the DynamoDB worthies only if you are on AWS.
Redis Labs provides Redis As A Service on cloud providers and on-premise. Just like ElastiCache, their pricing is not based on your actual usage. Their pricing is not serverless. If you subscribe for 5Gb plan, you need to pay 338$ every month even if you do not put any single entry. On the other hand, in the Upstash you only pay when you start using your database.
What makes Upstash different?
You have a new project and you do not know how many requests will it receive? You love the performance and simplicity of Redis. But all Redis Cloud services charge you per instance or per GB of memory. But maybe your application will not receive big traffic at first, then why will you pay the full amount? Unfortunately none of the current Redis cloud products provides a real
pay-per-use pricing model.
Let's do a simple calculation. Say I have a 1GB Redis database and I receive 1 million requests per month. For ElastiCache (cache.t3.small, $0.034 hourly) this costs at least $24 not including data transfer and storage cost. For RedisLabs, the 1GB plan costs $22 per month. For Upstash the price is $0.2 per 100k requests. For 1 million, it is $2 plus the storage cost that is $0.25. So for 1GB, 1M request per months, ElastiCache is $24, RedisLabs is $22, Upstash is $2.25.
What if your product becomes popular and starts to gain high and steady traffic? Most of the serverless products start to lose their spell if the service receives steady and high traffic as it starts to cost higher than server/instance based pricing models. To overcome this situation we give you option to purchase reserved databases. A reserved database has fixed price per month with a restriction on max throughput and data size. For high and steady throughput use cases, reserved databases cost less than serverless one. The good thing is you can start your database with serverless pricing and move it reserved pricing when you want. See reserved plans for more information.
Even if you do not move to a reserved plan, Upstash does not make you bad surprises on billing. Upstash databases have Monthly Max (Ceiling) Price, that means your database can not cost more than ceiling price. This is $120 monthly for Standard databases, so your standard database can cost $120 at maximum even your application is becomes top page in HackerNews.