Our latest revamp of the SkillPages site includes many important backend changes. Among others we reviewed caching. In our system
we employ multiple caching layers including an object cache that is implemented on top of Memcached. In our latest release
we introduced an improvement to our caching layers: cache areas, i.e. logical domains that can be mapped onto actual servers: multiple clusters of ElastiCache nodes.
We decided to use Amazon's product primarily because of the integrated CloudWatch metrics that it offers out-of-the box.
Our main goal is to improve user experience and reduce operational cost. Understanding cache access pattern allows to tailor the number and size
of the servers to meet the exact requirements.
An interesting idea is to adjust the size of the cache dynamically based on daily traffic patterns.
Data in cache is not accessed uniformly (i.e. the distribution typically obeys power law) and this presents an opportunity to trim the cache size
in periods of low utilization while maintaining the overall performance requirements. Research by Intel and Carnegie Mellon University (see attached)
demonstrates this is a feasible technique in cloud computing enviroments like EC2.