The Secret Sauce Problem
The vast majority of web applications have what I call The Secret Sauce Problem. Every commercial web service of any kind needs to be differentiated in order to be interesting and attractive to customers. There isn’t any kind of differentiation in a typical 3-tier or N-tier[1] web application stack. This leads to needing secret sauce of some kind. Secret sauce varies widely from application to application, but even between applications of the same kind there is a need to be differentiated. Two photo-sharing sites would typically build their backend photo processing and storage systems in different ways depending on the market they were trying to serve.
The Secret in the Sauce Secret sauce comes in many flavors and sizes. Some sites need software, some need hardware, and others need special architectures. More and more frequently cloud computing systems are used for those types of secret sauce that require some kind of batch processing. Examples of batch processing applications include photo resizing and transcoding. Cloud vendors like RightScale address the problem by providing a primary product that manages N-tier web applications and another one (RightGrid) that manages batch processing. Many also try to roll-their-own using technologies like Hadoop.
This diagram illustrates how these particular solutions work:
Secret Sauces of the World Taking a look at some real-world examples will bring it home. I’ve got a few below that I think will help us understand better.
-
Scribd: Windows clusters for processing and transforming documents
-
FaceBook: Highly scalable memcached clusters, Haystack super scalable image storage system
-
Runa: Real-time consumer purchasing analytics
In each of these cases, the web service needs to differentiate. I’m particularly fond of Scribd’s secret sauce. The Scribd folks are largely a bunch of Linux & Ruby-on-Rails geeks who realized early on that the majority of document processing tools were on the Microsoft Windows platform. So, they built their own Windows document processing clusters for secret sauce. That’s pragmatic and clever.
Conclusion Every web application needs something special to make it compelling to it’s chosen customer base. This defines The Secret Sauce Problem that confronts every web service that grows to any significant size. Although secret sauce can come in many forms, it is very common to be a batch processing application of some kind. The interesting parts of any web application or service are not the web app itself, but the secret sauce.
If you don’t have the sauce, you’ll need it. Get some now.
[1] N-tier is essentially the same as a 3-tier, but represent web apps where there might be more than one app-tier