Projects: Photography Service Overview

This project called for the ability to handle multiple megabyte images from current and future digital cameras, provide redundant storage of the images and a secure location for ecommerce. I began this project like others that I have to design by first sketching out what I would need. In this case a minimum of two SQL Servers to handle the indexing and keywording of the images. This would allow me to not worry about the physical location of the servers, since they would be housed in two separate facilities.

The next step was determining the load that the servers would have to handle. As anyone who has ever used a new digital camera can tell, the file sizes can be very large, with averages of 6 megs per file not uncommon for a single exposure and can increase to 10-40 megs for a single RAW file. This meant that the system would have to handle the load of uploaded files on a separate server than the one which served the simple web requests. There would be a minimum of two web application servers that would process the images and handle queries for searches.

Photo Service Server Diagram

The front facing server was eventually chosen to be a single unit, although the system does provide the ability to have multiple units to scale up if the demand increases, and at present the heavy work is done by the WebApp 1 and WebApp 2. These servers primarily handle the queries from users, the image processing, creation of images for sale and the delivery of images. They do not handle web requests since I did not want them to accessible from the outside world. They servers do all there communication via SOAP and can be opened to external servers in the future.

If some of you are thinking that this means the service can be used by other servers to load and process their images you are correct. That's the idea.

The system was written in C# and uses SQL Server 2005 as the backend database.

The performance of the system has been very fast and uptime (not including planned maintenance) has been 99.9%. The database currently holds over 15,000 images of various sizes and also handles ecommerce sales of the images.