21 October, 2011

DevOps: the jig is up

I will be the first to admit that systems administration is a protection racket: pay us, or something *bad* will happen to your network.

Of course, the fact that bad things do happen to servers and networks -- worse, if you host a site on the internet you invite all sorts of badness from bored teenagers to Chinese government-funded hacker farms -- keeps us systems administrators out of jail for extorting money (our salaries) from companies for protection.

As if that's not bad enough, us systems administrators are notorious for erecting barriers between developers and their masters, dumb management, and critical production systems that the systems administrators are tasked with maintaining. QA, regression testing, staging and peer review are just some of the tools in the "stymy development" tool box systems administrators use to slow down the development cycle from "pretty fast" to "reckless, stupid abandon".

Developers, who know in their hearts that they can do no wrong, and managers, whose lack of technical knowledge and thirst for capital knows no bounds, have teamed up to do an end-run around those pesky systems administrators. The key to their success in this noble goal lays in two buzzwords you are likely to hear being tossed around: "the cloud" and "devops".

"The cloud" is a magical place where you can, for a price, deploy as many crappy virtual Linux instances as you desire on demand without having to directly pay someone who knows what they are doing.

Are you fresh out of college with only a glancing familiarity of Linux? Can you point and click? Congratulations, you are qualified to become a "cloud" administrator. Let's deploy some LAMP servers!

Do you value high availability, scrutinize resource usage and have a mind towards stability and security? Go away, dinosaur, you must be a sysadmin.

"DevOps" is really just development, sans quality control, regression testing or change management. A sysadmin would not fare well in this environment, wanting to focus on operational concerns instead of pumping out redundant, useless and hastily written perl or PHP code 10 hours a day, 6 days a week. Those lazy sysadmins will try to limit their time in the office to something under 50 hours, and they will try to excuse their lack of ambition and team spirit on things like "being on call" or "having a life". First, "the cloud" means you never have to be on-call, because how could "the cloud" ever fail? How? Stop talking.. Second, it's your "life" or our founder's million dollar payout when Zynga buys us. Pick a side (hint: the one that doesn't involve getting some 28 year old fuck-head "CTO" rich from a Zynga stock trade means you're fired).

The cloud is a good way to quickly develop and deploy a new product, but should not be the be-all and end-all of internet or mobile app development; despite it's ease of use those without knowledge of operations best practices often make "rookie" errors in designing and deploying their applications. And while an agile development cycle can encourage innovation, doing so without the safety harness of testing and change management under the watchful gaze of experienced systems administrators invites disaster -- especially if your development cycle is dev straight to prod.