Amazon ElastiCache - Now With a Dash of Redis
aws.typepad.com
aws.typepad.com
I ended up replacing the following:
- Mongodb on a EC2 instance instead of Dynamodb
- EC2 Mysql instance instead of RDS
- Redis instance instead of Elastic Cache
- Solr on EC2 instead of Cloud Search
- FFmpeg instance instead of Elastic transcoder
But I'm one of those crazy people who considers their time and that worth something.
Excuse the snark, but these arguments just keep repeating themselves. There's a reason they're called "services". It's like saying "it's cheaper to slaughter your own cow than to eat at a restaurant".
We're transitioning off Dynamo as soon as possible as the billing structure makes it either a real headache or very expensive.
For example: if you want to make a backup of a large table or move data around, it'll either take days or cost you an arm and a leg. This is just one of many annoyances. Ever since making the decision to go with Dynamo over Mongo, I've been getting dirty looks from my team.
1. What kind of EC2 instance are we talking about for MongoDB? If you're not using an SSD, comparing Dynamo and Mongo wouldn't be an apples-to-apples comparison.
2. I buy that the strictly technical costs of these systems is lower, but I'm not certain I buy that the overall cost (including engineer time to set these services up and monitor them) is lower.
2. Maybe it is just me, but I really think that some services like mongodb/redis does not require a big amount of system administration work to setup, I have actually wrote many python scripts to automate most of these tasks. but again maybe this depends on the country and the IT culture.
RE: Mongo. If you're using EC2 for MongoDB you're most likely doing it wrong. Not sure if there is much written about the Foursquare problem out there, maybe I'll get around to writing about it, one day. Pretty much the only company that I know off doing bullet-proof, scalable and fast Mongo hosting is http://objectrocket.com/. There's a reason Rackspace acquired them. Unless you're able to get placement of your SSD loaded servers in the same datacenters as Amazon, go with them. It's well worth your time to not muck around with Mongo.
Either way, it's going to be more cost-effective at a lower level to go with something like Redis-to-go, Openredis, etc... if you need something simple.
Long story short, if you're on Heroku and (like me) were thinking/hoping that this might be a nice alternative to the various add-ons available ... I don't think that the juice is worth the squeeze. One, you have to administer and maintain things yourself (which is trivial for something like this, so not a big deal) but the pricing doesn't line up. The Redis providers leading the market today are able to do so because they provision the heavy-hitter EC2 nodes and then chop them up.
It's important to note though you can get a free micro instance for a year on the free usage tier. Micro's are like the section-8 housing of the server world, but free is free and beggars can't be choosers ;)
This is dedicated performance, as opposed to the bad performance of a shared system like openredis, which is $25 a month for a small (200mb). (These systems put artificial limits on things like # of ports, etc. They also share with neighbors as you say, which makes them less reliable in performance - noisy neighbor problem.)
So unless you only need 25mb of cache and have very little load, EC2 is significantly cheaper.
Also worth pointing out: if you're running on AWS, you'd get integration with your existing tooling like CloudWatch, VPCs, etc.
And last but not least, Amazon is a mature company that you can be confident will be around another 5 years. I don't have that same level of confidence with the majority of Redis-as-a-service providers.
But if you go with a true clustering solution (like Redis Cloud, www.redis-cloud.com), then you get automatic transparent scaling with zero downtime thanks to dynamic sharding:
http://redis-cloud.com/redis/redis-comparison
To me, such a cluster solution justifies the PaaS price over a manual Redis installation.
I think it's a good move on their part.
"Seamless Integration: If you are running Redis on EC2, you can transfer its contents to a new Amazon ElastiCache for Redis node. You may also attach a Redis node running on EC2 to an Amazon ElastiCache for Redis node."[1]
... at least after your reservations run out.
[1] https://aws.amazon.com/about-aws/whats-new/2013/09/04/amazon...