Why you need an ops team and how you can get it for free

If you’re the type of customer we love the most, you’re a Drupal or WordPress shop that builds amazing websites. This requires great developers and these developers tend to know a thing or two about web infrastructure. So, why not have them also run the hosting of the websites they know best?

Let me tell you why not. Why I think that that’s a really bad idea that can quickly lead you to lose track of your main business goal, which is — remember — building amazing websites.

The world of web operations

Running a website that serves a lot of users is far from trivial. There are a lot of IT topics that need to be covered in order to build and operate an application that…

  • …reliably and quickly delivers the information the user needs (= performance),
  • …can cope with a steadily (or even exponentially!) growing user base (= scalability),
  • …and is robust enough that smaller incidents (e.g. disk failure, network partitions) will not cause it to be inaccessible (= availability).

I found a detailed overview of all the important issues that an operations engineer needs to address in Mathias Meyer’s blog post [Web Operations 101 For Developers](http://www.paperplanes.de/2011/7/25/web_operations_101_for_developers.html). It’s a long post and I highly recommend reading it in full (after you’ve finished this article).

Managing infrastructure

Every business relies on some kind of infrastructure. If you were a transport business, you’d rely on infrastructure like highways, gas stations and warehouses. Your business is based on web applications, so you rely on IT infrastructure like networks and server racks, operating systems and software applications.

Getting some kind of hosting infrastructure is easy. It’s just a few clicks over at Amazon Web Services or DigitalOcean. But in his article, Mathias points out the catch:

Every little piece of it can break at any time, can stall at any time. The more pieces you have in your application puzzle, the more breaking points you have. And everything that can break, will break.

Someone needs to manages this IT infrastructure. This could be you or someone from your team, it could also be someone you specifically hire for that task. And keeping stuff running requires know-how and experience:

You don’t need to know everything about every piece of hardware out there, but you should be able to investigate strengths and weaknesses, when an SSD is an appropriate tool to use, and when SAS drives will kick butt. Learn to distinguish the different levels of RAID, why having an additional file system buffer on top of a RAID that doesn’t have a backup battery for its own internal write buffer is a bad idea. That’s a pretty good start, and will make decisions much easier.

I’d say that’s quite a laundry list of insight that doesn’t come by just reading some manuals. And that’s only the hardware aspect – Mathias also details a separate list for the operating system level.

Is this how you want to spend valuable engineering time?

Managing incidents

There will come the time when stuff hits the fan.

You should be willing to dig into whatever data you have posthumous to find whatever went wrong, whatever caused a strange latency spike in database queries, or caused an unusually high amount of errors in your application.

Troubleshooting and incident response are a special area of expertise that requires both deep knowledge and experience to find and eliminate the problem’s root causes.

Is this how you want to spend valuable engineering time?

Managing automation

Deploying your application to a single server is easy and it’s actually not that much more demanding to use version control software like Git or even a Continuous Integration tool like Capistrano. But how about deploying a new app version to 5 or 15 servers? What if that new version alters the database schema making it incompatible with older versions, so all servers need to updated at the same time instead of sequentially?

As Mathias points out in his post, you need automation:

”There’s an abundance of tools available to automate infrastructure, hand-written script are only the simplest part of it. Once you go beyond managing just one or two servers, tools like Chef, Puppet and MCollective come in very handy to automate everything from setting up bare servers to pushing out configuration changes from a single point, to deploying code.”

But before you will be able to benefit from the high efficiency these tools offer, you need to learn how they work and how you describe to them the infrastructure you want them to build.

Is this how you want to spend valuable engineering time?

Managing growth

Over its lifetime, your web application will probably become more complex and with it the IT infrastructure required to support it. You’ll add a caching service here, a key-value database there – want a PHP extension with that? All these add-ons need to be installed, configured and fine-tuned.

Whenever you add a new component, a new feature to an application, you add a new point of failure.

Complex systems tend to break in very interesting ways, so troubleshooting will also become more difficult as your application grows.

Is this how you want to spend valuable engineering time?

Managing health

Only by monitoring the current status of your hosting components and recording metrics about their performance over time, you can make decisions when things start to behave strangely, or — better yet — before they do so.

I can’t say it enough how important having a proper monitoring and metrics gathering system in place is. It should be by your side from day one of any testing deployment.

So you’ll soon decide to get some monitoring software and a metrics collection service in place. But that’s just the start:

You’ll never get alerting and thresholds right the first time, you’ll adapt over time, identifying false negatives and false positives, but if you don’t have a system in place at all, you’ll never know what hit your application or your servers.

Is this how you want to spend valuable engineering time?

Managing logs

Probably every service in your hosting infrastructure writes some kind of log where it saves details about the things it does and events that happen. That’s very useful:

In case of an emergency, a good set of log files will mean the world to you. This doesn’t just include the standard set of log files available on a Unix system. It includes your application and all services involved too.

But each service will log its own kind of details in its individual format, sometimes as a text file, sometimes in a database. It takes a lot of time to learn how to find and understand the relevant stories buried in thousands of lines of text scattered over different sources.

Is this how you want to spend valuable engineering time?

Managing failure

Failure will happen. All the time.

The bottom line of everything is, stuff breaks, everything breaks at different scale. Embrace breakage and failure, it will help you learn and improve your knowledge and skill set over time.

In our experience, failures will almost every time lead to better insight, improved skills and a more robust hosting infrastructure. But:

Is this how you want to spend valuable engineering time?

Stay on course

The answer is No. No, you most certainly don’t want to spend valuable engineering time on doing all these daily IT operations tasks. They tend to get more and more expensive over time, and, more importantly, they distract you from your core business.

Behind freistilbox, there’s a team of IT experts that know how to manage a growing business-critical infrastructure. We take care of all daily (and nightly) operations tasks, handle incidents and make sure that your website runs with optimal performance.

By fully managing your hosting platform, we enable you to keep a laser-like focus on your mission: building amazing websites.

That’s how you should spend every second of valuable engineering time.

How you can do DevOps without an ops team

Better yet, we’re available to you like an in-house ops team, via phone, email and chat; with our Premium Support, you can even reach us 24/7.

  • Got a question about HTTP caching headers? We’ll explain them to you over the phone.
  • You need help in optimising a database query? Send us a support request and we’ll work out a solution.
  • You’d like us to keep an eye on our servers while you launch your new website? We’ll set up a chat room where you get instant answers and live updates how your hosting platform is keeping up.

This is much more than just technical support, it’s decades of IT know-how at your fingertips during the whole life cycle of your web application. And it’s included for free in all our hosting packages.

freistilbox is not only high-performance web hosting, it’s DevOps done right.