· devops-2

Treat servers as cattle: Spin them up, tear them down

A few agos I wrote a post about treating servers as cattle, not as pets in which I described an approach to managing virtual machines at uSwitch whereby we frequently spin up new ones and delete the existing ones.

I've worked on teams previously where we've also talked about this mentality but ended up not doing it because it was difficult, usually for one of two reasons:

Martin Fowler wrote a post a couple of years ago where he said the following:

One of my favorite soundbites is: if it hurts, do it more often. It has the happy property of seeming nonsensical on the surface, but yielding some valuable meaning when you dig deeper

I think it applies in this context too and I have noticed that the more frequently we tear down and spin up new nodes the easier it becomes to do so.

Part of this is because there's been less time for changes to have happened in package repositories but we are also more inclined to optimise things that we have to do frequently so the whole process is faster as well.

For example in one of our sets of machines we need to give one machine a specific tag so that when the application is deployed it sets up a bunch of cron jobs to run each evening.

Initially this was done manually and we were quite reluctant to ever tear down that machine but we've now got it all automated and it's not a big deal anymore - it can be cattle just like the rest of them!

One neat rule of thumb Phil taught me is that if we make major changes to our infrastructure we should spin up some new machines to check that it still actually works.

If we don't do this then when we actually need to spin up a new node because of a traffic spike or machine corruption problem it's not going to work and we're going to have to fix things in a much more stressful context.

For example we recently moved some repositories around in github and although it's a fairly simple change spinning up new nodes helped us see all the places where we'd failed to make the appropriate change.

While I appreciate taking this approach is more time consuming in the short term I'd argue that if we automate as much of the pain as possible in the long run it will probably be beneficial.

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket