Any web site–including e-commerce web sites–are like an iceburg: the user interface the customer interacts with it is the 10% that is above water. But 90% of the site is below water, in the form of maintanance utilities and interfaces which allow products to be uploaded, described and managed, to allow orders to be downloaded and processed and to otherwise manage the web site.
Why is it that 90% is done all on the web site as well?
I wonder why we don’t build such web sites by creating a simplified XML-RPC interface for obtaining back-end information, then creating stand-alone applications in something like Java which can process the back-end information? Yes, it adds complexity: now you need programmers proficient in XML-RPC (or whatever home-grown XML processing language you use), as well as programmers proficient in desktop development as well as in web site development.
But the upside comes from testing: once you have broken your web application into a front-end UI that is on a series of web servers and separate (and potentially multiple) back-end applications which interact with the web site database, you can test each of these separate stand-alone management programs and deploy them independent of the main web site. You can also develop them and test them separately from each other, which makes the risk of uploading updates to the production server smaller.
Further, the upside is in reducing the amount of server space you need for your web site. Since the logic of your management programs are running on the desktop and not on your servers, the overall footprint of your server has been lowered.
Of course this all assumes that you provide excellent access control via your XML-RPC interface. But you had to do that anyway, right?
And if your company does its job correctly, the hard part of developing the interface and access control tools are developed by someone smart, and specialists in Java Swing can toss the UI together in Eclipse or NetBeans. And if your XML/RPC interface is written in a simplified fashion, you can even deploy a dev server whose sole purpose is to validate requests to help developers debug things.