The Cloud Is Confusing
Last year I learned a little about Node.js. I find it very interesting, as it starts moving us towards a platform as a service model in a way that few languages have been able to in the past. I am looking at this some more now. I wanted to see what the Heroku platform as a service provider had as a product. There are a lot of gracefully explained options.
However, in a way this artful integration path allows third party repackagers to make a confusing mess of things. I was reading about the ability to scale Redis on Heroku. This is a great feature. You type the number of nodes you want running Redis, and your cache layer is scaled. Amazing compared to the (still pretty easy) configuration we have to do to shard a MongoDB cluster at work. What was the difference?
Well, basically ignorance. I know exactly what is going on with the machines and application at work. In a tutorial there is no architecture and no context. All of which is simply a preamble to allow me to point you to an informative Redis Labs article on this topic. The key points for me were:
Know the engineering team providing you with a repackaged solution. The alternative is saving money until you architect yourself into a hole with no support.
You still have to be thoughtful and fault tolerant with your application architecture in these magical PAAS implementations. It seems like you may be able to skimp on thinking it through with such clean tooling. But alas, you also have configuration options no sane DBA would allow for in your own data center. Want to host multiple databases against Redis's recommendation on a single core Heroku instance with a connection pool of five connections? Heroku will let you do that. Your users will not be super stoked with your inability to maintain your SLAs .
Here are a few references:
https://redislabs.com/blog/six-things-to-consider-when-using-redis-on-heroku#.VtcXgpMrKL8
https://devcenter.heroku.com/