Should you put your build server and your release management tool on the same server?

I didn’t think 140 characters was enough – so I thought I’d post a brief answer here.

The first question that springs to mind is why would you want to put them on the same server in the first place? I’m assuming that the response is the cost of provisioning another server? You could use separate virtual machines and add capacity as required?

But let’s assume that it is preferable for you to have your build server and release management tool running on the same server… What are the downsides?

First, both systems will probably want to run on port 80. So be ready to delve into IIS and stick one or the other or both on separate ports. But that is a relatively simple task. (Just an important one to be aware of!)

Lets think about DR. What if your server blows up? Well both TeamCity and Octopus allow you to schedule backups so as long as you stay on top of those you should be fine.

Let’s think about software updates. If you upgrade either TeamCity or Octopus and you need a reboot, you just took both of them down when you only needed to take one offline. How important is it to you that your build server and release management tool avoid downtime? Granted, this by itself is hardly enough of a reason to provision a whole new server. (In most cases). You could probably do your reboot in the middle of the night before/after you trigger any nightly builds?

So here is the real thing we care about, performance. Actually, the most important thing here is not where you put your servers, it is where you put your agents. Both Octopus and TeamCity servers delegate the actual built/test/deployment work to the agents that carry out the tasks. These could be on the same server or VM. They could also be on different servers. These agents are the real parts of the infrastructure that (when in use) will max out your system.

In general, if you have a small team, you will probably be fine. If your team grows you could migrate one or the other to a different server. Or, if using VMs, just provision the VM with more capacity. I’ve never tried to migrate either an Octopus Deploy server or a TeamCity server to a different machine. My guess is that it is a fairly simple case of restoring a backup? Perhaps one of my contacts at JetBrains or Octopus Deploy could give us some guidance on that?

Leave a Reply

Your email address will not be published.