Editor's note: This is a guest post from Philip James, CEO & Founder of Snooth, and Rich Tomko, General Manager, MyRecipes Network, collaborators in creating What's Cookin': Food & Wine Pairing, now available as an application on My Yahoo!. As part of the launch of new open applications for users of My Yahoo! and Yahoo! Mail, we asked all of the app developers to introduce themselves and talk about building their apps on Yahoo!'s open platforms.
Snooth, a leading wine site on the Web, has launched What's Cookin': Food & Wine Pairings, a new open app for My Yahoo!. Users are now able to peruse thousands of recipes from recipe hub MyRecipes.com and get automatically-generated wine pairings based on each individual dish. MyRecipes.com aggregates recipes from popular and widely read food and lifestyle publications, including Cooking Light, Real Simple, Southern Living, Sunset, Health, and Food & Wine. For example, for a Classic Beef Pot Roast, Snooths digital sommelier might recommend Neudorf Pinot Noir 2004 because this medium bodied red is bright and earthy, allowing it to partner perfectly with this meal. The What's Cookin' app highlights the most popular recipes, pairings, and wines of the day, with links to purchase the corresponding bottles.
The What's Cookin' Food & Wine Pairing app is built on the Tyrant, an interface for the Tokyo Cabinet, which is a format for managing an ultra-fast and scalable database in real memory. The matching recipes/wines on the detail pages are served using Tyrant, so there aren't any on-the-fly calculations required.
The recipe search itself is provided via an index server. On our platform, we use Jetty, a Java-based servlet that provides an interface to Lucene, the index that underlies the rest of the Snooth site. Since there are several fields in each recipe, it's not a purely text-based search; we can search for specific categories or other parameters on the back-end, which is how the big food category buttons always get relevant results.
To make What's Cookin' more engaging, we have added a couple of interactive features: voting and bookmarks. Using the provided yahoo_guid, we store the user-specific information in our database, and call it directly, usually with a second AJAX call on the page, to fill in bookmark state information. The bookmarks page is simple page-based browsing, and we use the Yahoo! Updates API to insert events into the activity feed, whenever a user bookmarks an item or votes for a pairing.
Our app is very fast on it's own, for now, and could easily handle over 25K users per day (we are currently getting 120), but we are making some changes in the next few weeks that will make the app even more scalable. One is that all initial page loads will be served via our edge network, Akamai, which will improve performance and reduce our own server load, benefiting users outside of the U.S. Yahoo! does a great job with serving the image content on their own edge network, so this creates less work for us. The other change is to push more of the data into Tokyo Cabinet, which will drop the database load down considerably, although the app is not very database-intensive at all, as it stands.
If there is any bottleneck in an application like this, it will be with the Lucene search, which is why we will be using a combination of reverse proxy caching and akamai integration to drop the load for searches, which will follow a Pareto distribution, so most searches will fall into a small set of common searches, i.e. Main Course + Chicken. This makes it easier to serve the app to a greater number of Yahoo! users, which we are happy to do!
Together, MyRecipes and Snooth are taking the mystery out of food and wine pairing and making it easy for the My Yahoo! user to make great matches.
Philip James, CEO & Founder, Snooth
Rich Tomko, General Manager, MyRecipes Network