The Rise of DevOps
somic.org
somic.org
I've found that for infrastructure projects (especially open source ones, which may not always have dedicated QA resources available to them) it's a great idea to do "adversarial" testing/documentation: someone other than the developer must be able to follow the documentation and use the software in an environment other than the developer's desktop.
There's probably a range of software development: 0. "Script" (not necessarily something written in a scripting language, merely a short program written in an ad-hoc manner). 1. Program (could well be in a scripting language) 2. Project 3. Possibly a system (composed of multiple programs and/or projects) 4. Product 6. Company
Welcome change, change with it.
That's the key take away here! I've held such a role in ~10,000+ node environment. I've since moved on to development, but I've been trying to drive this point to start-ups for years, but apparently most still think that:
1) Operations means installing an OS on a machine, doing backups (and may be occasionally checking how many threads are running in the application server)
2) As we no longer have to admin bare iron, start-ups do not need operations.
The hiring is done accordingly: the idea is to contract-out/outsource/reluctantly hire one or two "IT-type" admins whose goal is merely to (in a reactive fashion) respond to outages as they happen and (manually) provision servers and networking gear.
Nothing could be more wrong. With the move to commodity and virtualized commodity hardware, running operating systems that are geared (originally) towards developers rather than sys admins (e.g., Linux vs. Solaris or FreeBSD -- this isn't a stab at the latter two, it's rather a comment to how much more admin-friendly theses OSes are) the assumption should be that unless there's "lights out"-style automation in place, outages are going to be the norm rather than exception.
The first thought that popped into my head while reading this article was how ZFS snapshots would work for versioning system deployments. Though I'm sure that's snapshots at a lower level than most people would actually use.
I am saying that the "dev OSes" (really, I just meant Linux), if not automated, are difficult to manage. However, in a "worse is better" sense that means there's wealth of operations tools available for them (e.g., puppet, chef, bcfg2). Linux administrators are extremely used to working with these tools and developing their own.
At present web-scale (i.e., no longer a few Ultra-2s for front-end and an E10K for database) if there's no automation, outages are going to happen as result of routine failures (e.g., database master -- or Hadoop namenode -- goes down, there's no automation to fail it over).
ZFS snapshots are awesome (I've had a chance to deploy a project to a Solaris environment with ZFS -- and snapshots meant much less worries about data loss). Unfortunately, the only choices for ZFS are FreeBSD and Solaris (I wouldn't try ZFS-Fuse). However, FreeBSD provides no easy way to do many things automatically that are possible in Linux (e.g., no fully un-attended installation, although that's less of a problem with virtualization). Solaris has issues of its own and unfortunately, presently, the biggest issue isn't even technical.