Developers have it easy. Git & Github are perfect for distributing, versioning and storing just about any codebase. Git is a lightweight tool that’s fast, reliable and easy to use (relatively, of course). Code is text though, and text is cheap to store, once you start having gigabytes and even terabytes of design assets things start to get tricky.
Up until recently, we employed an imperfect process at GoCardless to share designs files between teams. It involved myself and Tom saving design files to our local machines, sharing them on Dropbox when we needed to and using a plethora of other tools (email, CloudApp etc) to share smaller bits & pieces. It wasn’t scalable and we were repeatedly having to reupload and resend assets as they got lost in inboxes.
A couple of weeks ago we devised a new system to avoid as much of this pain as possible. Hopefully others trying to do something similar will find this post useful.
These were the key problems we were looking to solve:
- Syncing large files between designers – we have over a terabyte of design assets stored between various computers and hundreds of megabytes more are created every week.
- Sharing designs with developers – when it’s time for implementation, what’s the best way to share files with the frontend and backend teams?
- Resolving points of failure – when people are ill or laptops fall from hotel balconies, how do we make sure our data is safe?
Syncing large files with BitTorrent
I’ve used Dropbox for years and it is a great app but it is prohibitively expensive for small teams that want to share a lot of files, not to mention it means everyone who wants access needs to commit to losing 1TB of space on their hard drive.
I’d messed around with BTSync a few weeks ago and was really excited by the possibilities of it. For the uninitiated, BTSync uses BitTorrent to sync files between computers without the need for a central server. Best of all, it’s free and has that extra nerd factor that makes my brain smile.
I set up BTSync on our design teams’ laptops and set them to sync changes to files & folders. One of the really nice things about BitTorrent is that it’s crazy fast. We mirrored gigabytes of data in under 10 minutes.
When you share a folder with BTSync, you can generate three different types of secret keys that, when given to others, dictate the level of control they have over the files you’re syncing. This meant our design team could have full read/write access while others could only have read access.
If developers want a local copy of the design assets for a project for whatever reason (perhaps they’re offline at a coffee shop or hang-gliding with their Google Glass), we can share with them a read only key for a specific folder and sync the contents over the internet quickly.
Accessing designs on an internal server
While BitTorrent is great for syncing large files, not everyone will want a large chunk of their hard drive space taken up with hefty Sketch & Photoshop files.
For this reason, I bought a 2TB Seagate USB 3 external hard drive and connected it to my laptop. I symlinked the design folder to the disk and the disk is shared on our internal network using OS X’s built in file sharing functionality.
With this set up, everyone has read access without having to download the whole design repo, lovely though it is.
This system isn’t totally perfect at the moment; if my laptop is off, so is the network drive, but we’re planning on getting a Mac Mini to use as a dedicated file server in the near future.
Backing up with Arq
Thanks to twitter, I discovered Arq – a nice little app for backing files to Amazon’s S3 service. S3, if you didn’t already know, is incredibly cheap to store tons of stuff. To backup our entire design repo costs less than $5/month at the moment.
In the case of nuclear armageddon, it’s reassuring to know that somewhere on Earth my design files will probably be safe even if I have more troubling things to consider at that time.
So that’s pretty much it; how I achieved design distribution Zen in just a few hours while keeping my budget under £60. Now, back to work.