Its 3rd article in Web Scalability. Today I am looking at various projects going on in Indian Start ups and I am thrilled by variety of technologies being used.
While this sounds good at the same time I feel we are unable to utilize core strengths of technologies used.
Their usage in architecture will always be dependent on person to person and their experience and comfort level. But some simple things if adopted early stage can give immense benefits.
One such technology is our simple cache which is being used everywhere but alas not in the right way.
It’s called redis. Yes the kind of benefit this humble software can bring to create a highly scalable websites is awesome.
I have seen many startups are using Elastic Search as a “Cache”. Yes, I can not imagine someone doing this until you are total nuts. ES is an indexing technology and not a “Cache”. It will never update in real time which is what is expected from cache. It will never be in sync with underlying storage and hence almost always have stale data.
Using it as primary data source for anything is simply insane and shows the immaturity of the architect who chose it in the first place. It will not work except for most trivial projects.
Anyways ES has its niche but it’s not a cache but Redis is. It provides many advanced data structures and can do hell lot of thing in caching layer itself.
One needs to take a hard look at various data structures provided and how they can be used to create a “real” caching layer on top of it and get same output which one was hoping to get from ES out of the box.
It has sets/hashes/sorted sets/lists etc.
Keep putting data at the rate your site might never experience and retrieve it at blazingly fast speed.
Most importantly its single thread model brings the consistency one might need for creating distributed counters.
Think about it and if you are confused how it can be used for your use case just like always drop an email..who knows I may like your use case interesting enough and help you.