Wednesday, October 19, 2005

Why Amazon should hire me.

(NOTE: A semi-technical discussion of how I would have programmed something lies ahead)

Recently, I needed a feature on Amazon that they did not have. I have recently read a book that is the first in a three part series. I liked the book and I want to read the other two. I wanted to set up a bot on Amazon that will search for the book every few days or so and send me an email when a book by that author comes out. I was unable to find the feature on the Amazon website. I checked back a few days later and I found it in beta for music only. I checked back today and I could sign up for "Amazon Alerts" on books.

Amazon has the functionality I need, but I think it is implemented poorly. Given the technology that we have today to produce a web service that consumes queries and replies, I don't see the advantage of having the alerts centrally managed.

Ideally, Amazon should have made a personal Amazon tool that you can download and install on your local machine. This personal Amazon would query Amazon based on a schedule you set up. The timing options would limit polling of Amazon's web servers. The personal bot would only work if your computer was on, the Internet connected, and the Internet connection live. Those three conditions, alone would ease the hardware requirements (on Amazon's end) needed for this tool.


Pros of centrally managed alerts system
1) It will be easy for Amazon to know exactly what things are being searched for.
2) It will be easy for Amazon to know the number of alerts sent out daily.
3) It will be easy for Amazon can track the alerts and correlate them with sales of an item (i.e. the accuracy of alerts.)

Note: Some may list the fact that you will be driven to the Amazon website by the email as a pro. The decentralized alert system would do the same thing, so that cannot be counted as a pro.

Cons of a centrally managed alert system
1) Amazon must scale the hardware to produce those alerts.

The hardware cost of handling thousands of alerts is going to be more expensive versus a decentralized alert system.

Explanation: From what I can tell there are three ways of producing an alert in a centralized system.
One, whenever an item that supports alerts is added, a process must be ran which compares the item against all the alerts in that category.

Two, batch jobs are set up to run an alert at regular time intervals.

Each of these methods has their own drawbacks. The first one is CPU intensive. The second one is less CPU intensive, but if the batch job is not ran on a regular basis, the alerts are not going to be timely. I think both methods require more hardware than necessary to do the job.

Three, have a process that alerts the user to the item that they were looking for when they lodging to Amazon. I think this method is not an alert, but an automated search that can be performed when the user logs in. It would be much less resource intensive than the first two, but it does not drive traffic to the Amazon website, so it is fairly useless as far as Amazon is concerned and I would concur with them on that idea.

2) Out of date alerts.
People go to Amazon to buy books, not manage the details of getting the information to buy a book. All that data on alerts does not mean anything if the alerts themselves are old, pointing to wrong email addresses, or being filtered as junk mail.

Pros of a decentralized alert system
1) Lower hardware cost, which translates in to fewer employees, and less software costs.
2) Empower the user. This could create customer loyalty and lock them into only using amazon.

Cons of a decentralized managed alert system
1) Amazon loses some metrics associated with the alerts and some of the ease of compiling that information, though with a properly designed process Amazon would have all the data they needed.


I wonder if Amazon has always made decisions as bad as the alert system. 


cube

4 comments:

Man of Issachar said...

Oppss I had thought of that but I forgot to add it. Add that to the list of cons about the personal service download.


Though there are some people (I have no idea on the percentage break downs, it really depends on the sophification of the user) that will download anything to their computer.


Of course If I was Amazon, i would probably do both, and see which one wins.

Dave Justus said...

Amazon Alerts for books has been around for a long time. I have had one on Orson Scott Card for ages.

A decentralized search application as you propose would actually require more hardware, not less as the database query requirements are the same but with you method you would also have to support multiple connections to your database.

Man of Issachar said...

"Amazon Alerts for books has been around for a long time. I have had one on Orson Scott Card for ages."

I guess I have the name wrong, I saw a service that was in beta that you could follow specific artists, i could not find that functionality again, so i don't know if they took it down or not. Though i did find the alerts which performed the function i thought the other service did.

"A decentralized search application as you propose would actually require more hardware, not less as the database query requirements are the same but with you method you would also have to support multiple connections to your database."

I disagree. Uou would be running the queries though an SOAP object (or some other webservice), which would be central location for all connections on Amazon's side. So you would not have any more connections. You could actualy only have one connection for each database you are quering (one for books, one for cd's, etc)

Secondly, the number of quereis drops drastically when you move out of a centralized system. That is the main method which lowers you hardware costs.

Think about it. In a centralized system you would have to perform the alert query eveything a item (book, cd, etc) is added OR set up the alert on a timer to be ran regular - regardless of if the user cares or if they are online, etc.

You can lower the costs of the queries in the second case by running them less, but that could make the alerts less timly and theirfore useless to the user.

By moving to a decentralized system you could lower the number of queries against your server to a manageable number.

Another option, which i have very little experence with is notification serverices, but can you set up a subscription on data that is not there yet (or rather a set of data).

Man of Issachar said...

"A decentralized search application as you propose would actually require more hardware, not less as the database query requirements are the same but with you method you would also have to support multiple connections to your database."

Another way of explaining it would to run your queries though a mid teir service which would handle and manage connections.

In a non-web world it would be a COM object.