A common question keeps popping up, “How secure is UploadBooth when it comes to my files?”
Well, it is actually quite secure and I will elaborate why. A lot of planning and emphasis was put into data resiliency and protection for our upload service. UploadBooth was built on a solid set of core storage technologies; ZFS and CouchDB. You can happily know that your data rests on one of the most secure filesystems in the world.
The ZFS filesystem is the core backbone of UploadBooth, the filesystem contains block level checksum protection to prevent any silent data corruption. I know that the last sentence might sound a bit “chinese” to the laymen person; what it really means is that your digital data is guaranteed to be perfect on retrieval, exactly the way you uploaded it in the first place. Silent data corruption does happen, and it can be painful. However, with our solid storage foundation we can make a promise, what you upload is exactly what you get back, bit for bit.
So, is UploadBooth a good place to store you digital files? Absolutely YES!
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