Operations management for developers
Spare a thought for the operators
Editors' Blog Almost 30 years ago when I first did my IT training, part of it was spent in ops, mounting tapes and trying to keep important systems operating efficiently.
At the same time, I met a programmer who took pleasure in "keeping the operators awake" by making them mount tapes pointlessly. Then I went into DBA, which (in those days) was a sort of "halfway house" between ops, development and good practice training.
Ever since then, I've been convinced that application design should include operational design. Any good application will be used for a lot longer than it took to develop, and throughout that time it will need performance tuning, recovery, upgrading, and so on – all of which represent special "user requirements".
So, I was interested to talk to David Aiken (a Microsoft "developer and architect evangelist") recently, about design for operations, which (it seems) will be a key feature of Microsoft's System Center Operations Manager 2007 approach (there's an overview whitepaper here).
Oh, and there's even a DfO show here, where Aiken "shows you how, once you have designed your health model, you can easily generate the implementation code using the new Visual Studio Management Model Designer (VSMMD)".
According to Aiken, developers and ISVs need to build manageability into their applications, but you can't just tell developers to make visible anything and everything you might need for management. Because they will – and thus overwhelm the operators with impenetrable and unusable detail.
"Ops people must be treated the same as end users," Aiken says - with requirements, a need for a pleasant user experience, and so on - and this changes the developer mindset. You need to consider operational "use cases" - what can go wrong, how will we fix it, what information will we need?
Aiken claims that Ops Manager 2007 provides all of the functionality needed to support this approach. Indeed, there's a wizard-driven Distributed Application Designer to help IT administrators quickly create "health models" and "management packs" for IT services, and the Management Pack Authoring Console for building management packs for custom applications and other technology components. And the Operations Manager 2007 Software Development Kit (SDK) provides programming interfaces so developers can automate operational management processes.
Nevertheless, it seems to me that support for how to go about this with "good practice" is (currently) fairly basic. However, as is not unusual in the Microsoft world, it's promised that the next release will be a lot better, with built-in management patterns and scenarios to build on; and the use of Microsoft's DSI (Dynamic Systems Initiative) and model driven management to produce "living operational designs".
Well, vapourware is always perfect and we'll have to see what is actually released, but if Aiken is typical of the people working on this in Microsoft, it certainly has the expertise and vision needed to do a good job of it.
In the meantime, I took away three main points from our discussion:
- Treat ops staff as first-class users of your systems, with requirements, use cases, etc. Applications spend longer in operational use than they do in development – and cost far more to operate than to develop. So, if they are hard to configure/reconfigure, tune and troubleshoot, this is expensive – and will be career-limiting for their developers.
- Exploit the power of Ops Manager 2007 to abstract away from the raw instrumentation data – to add meaning to impenetrable error messages. Obviously, we should design the application for manageability in the first place – but if we haven't, we have a second chance to add operational guidance in Ops Manager – without rewriting or breaking any code.
- Consider the "operational experience" – if it is poor, operators/administrators will make mistakes. There is a choice between a GUI and a commandline approach – each might be appropriate in different circumstances. And, with Microsoft Management Console on top of Windows PowerShell (Aiken's key enthusiasm), you can have both.
OK, so these are couched in terms of the Microsoft management environment, but I think they have a general applicability. There are proven operational management environments – on mainframes, for example - that have been around for a lot longer and (with the possible exception of the GUI) have all the tools you'll need to help you "design for operations" already. It's good that the Microsoft management environment appears to be joining them. ®