As I wrote about in Nanoglyph 030, both our major services at Crunchy have only one stateful dependency – Postgres. No Mongo, Redis, ElasticSearch, or anything else 1.
It wasn’t a stated objective, but we decided to see how long we could make it work. Having fewer dependencies has some major benefits:
It does require us to do a few things in a more unusual way. For example, normally I’d push all rate limiting to Redis. Here, we rate limit in memory and assume roughly uniform distribution between server nodes. If we were to need search, we’d use Postgres’ full text search instead of ElasticSearch.
It hasn’t required any major abuse in trying to fit square pegs into round holes. If it did, we’d likely drop the single dependency principle – we knew that it was only going to take us so far. We’ll see how far that is.