This morning I received an email from Amazon Web Services announcing the release of Amazon ElastiCache. In Amazon’s own words “ElastiCache is a web service that makes it easy to deploy, operate, and scale an in-memory cache in the cloud.” At first glance, that sounds very handy to have. After all, Amazon already has DB backends, instances for application front ends, load balancers and remote file storage, really the only part left for a large application is cache. The best part about Amazon ElastiCache, and a very smart thing to do overall, is that it is running Memcache (or at least is Memcached compatible). So I start out very enthused by this prospect, but by the time I get to the pricing section… I’m very underwhelmed.
Let’s take a quick look at the standard EC2 instances. The small instance is 1.7 GB of RAM and costs $0.085 per hour (US-East). The large instance is 7.5 GB of RAM and costs $0.34 per hour. Now we’ll compare that to the costs of ElastiCache. My assumption for these (before I actually read it) would that they would be cheaper, less CPU, and more RAM. The ElastiCache small instance is 1.3 GB of RAM at a cost of $0.095 per hour which is 1 cent more per hour (or $7.20 more per month). The ElastiCache large instance is 7.1 GB of RAM and costs $0.38 per hour or 4 cents more per hour ($28.80 a month).
Now, I could be wrong, but this looks like the standard instances running some stripped down linux distro (which accounts for the roughly 400 MB less of RAM) and memcached. For this “pre-made solution” you pay a premium. Amazon advertises this as a “feature rich bundle” (my words) because the instances are preconfigured, the system give you automatic failure recovery and you get automatic software patching. This is… massively underwhelming, to say the least.
If you’re building a cloud based application already, you probably have most/all of this functionality already implemented elsewhere. It is very likely that you’ve already setup puppet, chef, or RightScripts to automatically deploy & configure your applications – so caching is just one little extra bit. You probably are already using someone’s monitoring & scaling systems (like RightScale, Scalr, Amazon CloudWatch, etc) so expansion and failure recovery are handled. Lastly, if you’re using something like Ubuntu or Debian, you always get the most up to date version of software on install, and new versions are as simple as a regular apt-get update/upgrade.
In short, if you’ve got a cloud deployment of any size, you probably have little need for ElastiCache since you can do it yourself, especially since ElastiCache is only available in US-East and nowhere else currently (like most new products). I can only hope that by the time ElastiCache rolls out of Beta, they will be offering more RAM and less CPU. Everything being what it is, I’m glad Amazon is making these features available. I may be underwhelmed, but it is good that they make them available to people who may not have previously worked with caching servers. These pre-made solutions certainly lower the barrier to entry and will encourage more memcache adoption. Better code is always the preferred solution to throwing more hardware at a problem.