Text

Summary: We migrated SortMyBox to a new application container at 1:31 AM PDT on Sunday, July 28th. Our service became non-operational as of 8:23 AM PDT Sunday morning due to a bug on our hosting platform that led to our usage quota being exhausted. We reached out to our hosting provider and with their assistance were able restore service at 12:10 AM PDT Monday, July 29th. Your data was backed up and safe at all times during the incident.

The Migration

We host SortMyBox on Google Appengine which offers two alternate data storage modes — Master/Slave and High-Replication. While both modes have built-in redundancy and fail safe mechanisms, the High-Replication mode offers better protection against data loss and unplanned downtime. We were initially setup to use the Master/Slave datastore and wanted to take advantage of the reliability benefits of High-Replication. So, Saturday night around midnight PDT, we started the migration process. By 1:31 PDT the process was complete and our application was operating smoothly in the new environment. We had some beers and went to sleep.

The Downtime

At 8:23 AM next morning we awoke to the sound of error notifications flooding our inbox. We quickly discovered that the application was unable to perform any datastore operations because we had apparently exhausted our usage quota. This was quite odd because we budget for 20x usage to accommodate for spikes. We quickly noticed that the billing status of the new application container was stuck in “Activating Billing” which made it impossible for us to make any changes to restore operations.

We reached out to Google Appengine for help via multiple channels and on Monday July 29th, 12:09 AM PDT the billing status issue was resolved. We enabled user logins at 12:10 AM and after verifying data integrity enabled all remaining background processes at 12:35 AM. We want to highlight that your data was backed up and safe at all times during the incident.

Thank you for bearing with us while we were working to restore service, and sorry for any inconvenience this might have caused.

Text

This blog post has been a long time coming, and I hope to highlight how and why we built SortMyBox.

SortMyBox started out as a personal project to allow us to better organize our messy Dropbox folders. As we built it, we quickly we realized that it would be useful for lots of others as well. Our goal was to build simple Gmail filter like functionality to sort Dropbox files.

The app is written in Java and are using the Play web application framework. Our front end relies on Twitter’s Bootstrap library for basic building blocks and default styles. Hosting is provided by Google AppEngine, and we serve our static content off Amazon S3. We are going to do another blog post with a more in-depth technical analysis but that’s a high level overview of how the service is setup.

When you login for the first time, we create a “SortMyBox” folder (inside your Dropbox or Box root folder) and a few simple rules to get you started. We do this using the Dropbox and Box API’s which also allow us to move files around for you in a scheduled manner. Once you setup your rules you never need to come back to our website to actually sort your files! Drop them into the SortMyBox folder and you are all set. A few bloggers have written extensive “How To’s” at MakeUseOf, Appstorm, CNET that offer detailed steps on how to use the service.

We just launched our Box integration today, and our Dropbox integration has been live since May. Potential future plans include offering file type specific sorting capabilities and multiple sorting folders with individual rule sets. You can also submit feature requests to our GitHub issue tracker or tweet at us!

If you are interested in collaborating and helping us make SortMyBox even better and easier to use - SortMyBox is open source on GitHub. We love feedback, so let us know what you would like to see!