This is a guest post written and contributed by Brad Montgomery, Co-Founder at Work For Pie, a Rackspace customer. Work for Pie allows software developers and technical content producers to create a showcase of their skills and their work.
Running a startup is hard. Especially, when there are only two people. When we first started building Work for Pie, we knew we needed solid, existing solutions to some of the basic problems that arise when building a software as a service (SaaS) platform. One particular problem that we faced was how to handle file storage.
Work for Pie is a web service that allows companies to build rich single-page profiles that tell a story: What is it like for a developer to work here. Likewise, developers can build their own profile/portfolio that aggregates content from various other services, such as Github, Stack Overflow and LinkedIn. The overall goal of the site is simple: Let Great Developers Find Great Companies.
There’s really no magic under the hood, and we use a fairly simple and common set of technologies. We’re a Django shop, and our production stack includes nginx, Redis, memcache and PostgreSQL. This stack runs well on Rackspace’s Cloud Servers, but we knew early on that we’d have customer-uploaded images, and that we wanted a scalable, robust solution for storing and serving that media.
That’s where Cloud Files first caught our attention. It’s a scalable solution for file storage, but it’s also backed by an industry-leading Content Delivery Network (Akamai’s CDN), which means our content loads quickly, and our site’s visitors have a much better experience. Cloud Files also supports content delivery over SSL. Since we decided to serve all content over SSL, that’s an important feature for us, and our visitors don’t get confused with those pesky unsecured content warnings!
Cloud Files offers a great solution for file storage and content delivery with features that we need, but the benefits for us don’t stop there. Frankly, one of the real selling points was the API (application programming interface), and python-cloudfiles — an open source python wrapper for that API. This allows us to programmatically interact with the service. For example, we automatically perform nightly database backups, and then our backup script can store those in a private Cloud Files container.
Another open source application, django-cumulus, seamlessly allows us to use Cloud Files as the default file storage option in Django. This means that we don’t have to do anything different while building our application in order to store our customer’s content in Cloud Files. We simply write our application as if we were storing files on the local filesystem. In fact, an early version of our site did just that, and part of our decision to use Cloud Files in the first place was due to the ease with which we could use Cloud Files with a very minimal change to our existing codebase.
In conclusion, Cloud Files has been a great asset to our company. It is a great service, and when paired with some great open source tools, it has allowed us to build our product more quickly and reliably than we could have done otherwise.