Since the last article talked about Automating System Management, let’s look at Manualizing System Management. By this we mean enabling a human to perform system management tasks.
Why would we want to do this? There are several reasons. At a philosophical level, it is a person that determines that something is needed. An automated system can’t decide “hmm, we need an ERP system”. People are flexible and goal oriented – they understand Why leading to What culminating in How.
Using the example above:
- A person can notice “hmm, we are having trouble getting all the parts needed to build our products to the right place at the right time”. (Why)
- Again, it is a person that reasons “Aha! We need an ERP system.” (What)
- At this point there are multiple ways to deploy the selected ERP system. (How)
In general, the first time you do a task you need to do it manually. Among other reasons, there are often surprises and issues that must be overcome. For any reasonably complex task it is almost impossible to determine all of the details, dependencies, unexpected inputs, corner cases,and systems that don’t behave exactly as expected without actually performing the task. If you are dealing with a unique configuration, such as a database server with local storage, it may make sense to set it up manually rather than spending the time automating the task. People play the ultimate role in system management. Automated systems are good at doing things over and over, but can’t do something the first time.
Once we assert that automated management tools can’t do everything by themselves, we need to look at what a SysAdmin needs. An effective system for manual system management has several characteristics:
- It presents needed information, especially state and context. A SysAdmin is typically moving rapidly between a number of systems and working on a variety of tasks. It is important for them to be able to immediately discern which system they are on and what the current state of the system is.
- It provides task oriented functions to perform the needed tasks. These functions should support the way the SysAdmin works, not expose the underlying implementation details.
- It should be consistent across functions. For example, all functions should use a structure like “command, options, target” rather that having some that are structured “command, target, options”. Similarly, there should be a standard keyword for “create”, rather than a mixture of “create, make, add, instantiate, etc.” across various functions.
- It helps the user. People are good at big picture goals, but have trouble remembering the exact details of dozens of low level functions. Computers are good at details, but don’t do big picture. It would be nice it people and computers could work together (the goal of User Experience designers everywhere!).
Manual management has a number of things in common with automated management. Both need to be able to talk to systems – a standardized remote API for management functions is a powerful foundation. In fact, once the low level infrastructure is in place you can build both automated and manual systems on top of it.
Ultimately we need a hybrid system for systems management – and integrated system that supports automation, scripting, CLI, and a graphical interface, all working together.