We have a store and an eBay operation which both share the same database. We use an existing shopping cart software, and I've implemented eBay administration into the software.
Due to inflexibility of the shopping cart software, I would like to rewrite both the admin interface to the shopping cart software as well
as the admin interface to the eBay application.
Also, I would like separate and modularize the back-end code.
We want to use 3-tiered approach - webserver for user interfacing, application server/proxy for request and data processing,
and the database tier.
We use FreeBSD, Apache + mod_perl/mod_php/mod_ssl, and PostgreSQL exclusively.
The webserver tier will have 2 separate functions - one set of machines handle web requests, and the other set will be an image server. Both will sit behind a proxy/load balancer to distribute requests, and each webserver will have be offer SSL for transaction processing
The mid tier boxes will receive requests from the webservers, and process them - issue requests for data from databases, and return back to webserver.
Also, these systems will
- handle notifications to/from eBay and PayPal API events, and process them accordingly (posting new/relisted/sco/private auctions, updating auctions, handling closed auctions (updating the database, emailing winning bidders, etc)
- handle payment processing (checkout redirect to our site, communicating with Paypal and [url removed, login to view]), and place orders with our distributors upon payment receipt.
- have functionality that queries our distributors for inventory status, and update our inventory tables accordingly (begins/ends auctions if necessary, as well as enabling/disabling a product on our store site) (multi-vendor and wget/XML processing capability)
- we want our admin site of the store and eBay to be integrated, and functioning at the app server level via a web interface.
Please let us know the your experience, how many people will be working on this project, your estimate of how long it will take, and tell us what projects you have done would serve you well in this one.
We must stress that we are seeking a well-thought-out, flexible, modular solution, not a bunch of fragile hacks. We have a pretty good idea of the work-flow, and we want someone to analyze and implement it, while offering suggestions for improvement.