UploadBooth was a knee-jerk response to the file delivery problem that most users face when their file’s size exceeds the SMTP attachment limit. In essence, UploadBooth is a service that lets people share their files with others using only their browser, side stepping a host of problems that accompanies other modes of transportation such as FTP, SFTP, WebDAV and Email.
UploadBooth had three primary development requirements; Fast user response time, ability to store uploaded media in a distributed manner to avoid any one single point of failure, and keep stack complexity down to a minimum.
There were a plethora of available options to get the job done but required weaving together many different pieces open source software to get the desired result. This broke the third cardinal development rule, to keep stack complexity down. The solution was to use CouchDB; it mitigated the stack complexity problem by encompassing both the file and meta-data store all in a single distributed solution.
Not only did CouchDB help keep the stack complexity down but it also gave great flexibility in regards of how data was laid out with its schema-less design. This was very important for quick turn-around development time.
The final solution composed of JRuby, Sinatra and CouchDB. JRuby with its native threading allowed blocking operations to be scaled beyond what was possible with forked MRI processes. CouchDB scaled well in this setup accommodating many concurrent connections that were opened by the thread intensive Sinatra web application.
Using CouchDB let me avoid stack complexity and to focus on the problem at hand. This was extremely important for getting the product out the door as quick as possible. The three primary development requirements were solved in spades by utilizing CouchDB as the backbone of UploadBooth. It made this one developer productive and above all else happy 😉
Posted by admin on July 14th, 2010 :: Filed under Main
Tags :: case-studies, software, uploadbooth
You can skip to the end and leave a response. Pinging is currently not allowed.