Here at NU Creative we strive to keep our data safe, and that means we need multiple secure locations to store it.  Using git repos means that every change we make during development is stored in the cloud on bitbucket.org. This is common practice in the development community, but we considered relying on a third party for our backups a weakness. This is why we created our own cloud hosted bitbucket server to back up to from bitbucket.org. to mitigate this risk.

What is Bitbucket?

Bitbucket is a free to use platform for storing Git repositories. These repositories contain all the code for our projects and depending on file size of our assets for those projects as well. This allows the whole team to simultaneously work on a project from their own machine and there be no data loss when merging back their work to the project. For a more detailed description on how this works see my colleague Pauls blog post about Git.

Bitbucket is free to use for up to 5 team members, after that you need to pay for extra users to have access to your repositories. This makes Bitbucket an extremely cost effective tool for our team to use.

new-commits-screen

Why host our own server?

Bitbucket have their own backup procedures and protocols to make sure all the data in the cloud is secure and backed up. These backups are only used in the event of a disaster, not for if we accidentally delete a repository or want to revert back to an old version. However sometimes the best laid plans go wrong and we did not want to rely on a third party for backups who we did not have a service level agreement in place with. This is where our Bitbucket Server comes in.

 

We will continue to use the cloud platform for our everyday developing but also have our own Bitbucket Server running on a server that mirrors all of our repositories. This means we have our own off-site backup of all our code, this means our code is securely stored in at least 3 different locations at one time. At least one machine in the office will have a copy of a project for development, a copy will be on the Bitbucket Cloud servers plus any other places they backup that code, and finally a copy will be on our own server.

BitbucketServer42_SmartMirror_ComponentDiagram

How we host the server

We use Digital Ocean as our preferred cloud server solution currently. We’re really enjoying their feature rich systems. One of the features that is especially useful for this sort of project is their snapshot feature, this allows us to take a snapshot of a server at the current point in time and then be able to either restore a droplet to that snapshot or we can create a brand new droplet based on that snapshot, allowing us very quick recovery time if for some reason our sever crashes or breaks.

 

As a secondary method of creating a fresh version of our own Bitbucket Server we have invested some time in to making our own Ansible script that we can run that will provision a server of our choosing with everything we need for a fully working Bitbucket Server, complete with all our settings, users and plugins. We would normally only use this if we didn’t have access to Digital Ocean and needed to host a server temporarily elsewhere where we didn’t have our snapshots available.

digital_ocean_animation

After reading this article you should now have a better understanding why it’s important to have multiple backups and how we at NU Creative have addressed this issue. If this blog post has peaked your interest and you want to setup your own Bitbucket server and want either some advice or help don’t hesitate to get in contact with us.