Friday Aug 28, 2009

Finding The Right Product For You

If you know what you want then finding it should be easy. However searching only helps if you know the name of product; but what you really want is a way to specify what you want in a product and see only those that meet those requirement. If instead of going through product pages you could just give the specification of the product you want (like a server that runs Solaris and supports two processors) then that makes the process much easier and efficient.

But how do you design a good product finder? A few exist that let you pick arbitrary product families but when you have 54 servers or over 130 storage products, the solution needs to be flexible yet simple. Luckily for us engineers, Sun has a team dedicated to user experience and design that came up with a clean interface for finding products. This interface needed to backed by a system that could process our product data and stay up to date.

Data is always a priority in our team. Its hard to overstate the importance of having good data; data in a form that can be easily processed (XML), data that can be queried (metadata) and data that can be displayed (content). A product finder would need to show the product image, name, features, price and links to get more information (and to buy the product, of course!). All of this information, for all products, needs to be exposed and categorised via the finder - seems like a lot of work, doesn't it? But it wasn't because we had already solved this problem a few years ago with Swordfish. Practically all of our product data was already tagged and ready for consumption; all we needed was to define product attributes that could be understood by the finder.

Is 1 TB bigger than 300 GB ? This is a tricky problem to solve programmatically, particularly once you start looking across entire product range. Another aspect of this is to keep it simple for users; in some places it makes sense to talk in terms of megabytes instead of terabytes, and these decisions need to be made outside of engineering. We designed a system to allow marketing folks to author exactly what attributes should be displayed based on the product category and their granularities, i.e. GB vs MB.  Again, we used swoRDFish to identify which products belong to which categories and only showed attributes that needed to be defined for a product - no point displaying CPU speed for tape storage!

Once we have all the right ingredients - good data and a simple interface - we put it all together using JSPs that employ caching to keep information ready for display. Keeping data cached for a short time allows us to balance performance but dynamically update links or price if it changes without any user interaction. Once a customer has found the right product, they can click a link to customise their desired configuration and get a quote, or buy the product and configuration online, depending on geographical location.


So do you want a server that runs Solaris and supports two processors -
Ta Da!
How about Disk Storage products with a capacity of 500 TB?
Right Here!

Are there other product groups for which you would like a finder at Sun? Let us know and we'll see what we can do.