For years, Memcached has been used quietly to provide in-memory caching for many popular Web sites, from LiveJournal (for which it was first developed six years ago) to Twitter, Flickr, and Facebook. In the last couple of months, Facebook has opened up about how it scales, and one the key technologies enabling this is Memcached, which services 120 million queries every second. To achieve this, Facebook admits it has had to do some engineering work to improve Memcached's performance and memory efficiency.
Similarly, Gear6 has added features such as replication, clustering, optimized memory utilization and management to create what it calls a Memcached distribution, much in the same manner as Linux distributions are packaged. Joaquin Ruiz, executive vice president of products at Gear6, provided me with additional insight into why Memcached is popular with Web 2.0 sites and why it matters for cloud computing.
The problem, according to Ruiz, is dynamic data services. In a recent blog post, he pointed to the tight connection between dynamic content and Web 2.0; that is, one defines the other. In this Web 2.0 world, the LAMP (and to some extent Java and Ruby) stack "provided a low-cost, efficient development foundation for Web 2.0 but did not free us from the monolithic, vertically oriented, "scale-up" platforms. Memcached provided the heavy lifting in terms of horizontally scaling ("scale-out") on non-monolithic SMP server architectures from Intel and AMD."
In the Facebook example, the Memcached tier stores members' personalized dynamic content, such as status updates, wall posts, etc., so that they can be quickly accessed when queried. It's a similar set up for Twitter tweets or comments on photos on Flickr. While latency in a social application is mildly annoying, latency in a transactional application could mean lost revenue.
Dynamic data services will likely remain an important part of cloud services, which brings us back to the idea of a Memcached service on a cloud platform. Amazon's Jeff Barr noted, "powerful, high-level services like this allow application developers to spend more time focusing on the novel and value-added aspects of their application and less time on the underlying infrastructure."
Anything that developers and companies can take advantage of to serve data faster and more efficiently means they have time to do other things, including increasing their bottom line.