My friend Iggy Fernandez of Database Specialists and I coined a term “Manageable by Design (MBD)” in the cloud computing context. We define MBD as following:
“An IT System is Manageable By Design (MBD) if it uses Standards, Instrumentation, Interfaces, Automation, Autonomics, and Documentation to facilitate the activities and purposes of IT Service Management (ITSM).”
As stated above, we have identified six objective criteria by which an IT System becomes manageable:
- Standards
- Instrumentation
- Interfaces
- Automation
- Autonomics
- Documentation
Depending upon the complexity of the IT System, some or all of the above may be required to make it manageable. An IT System can also be augmented to make it MBD by the vendor or by a third party. In a cloud computing environment, IT Systems are deployed in an ecosystem which is in a state of continuous flux. This dynamic nature coupled with security concerns makes it imperative that the cloud-deployed IT Systems are manageable.
Standards
Whether they are deployed traditionally or in a cloud, IT Systems need to interact with many other IT Systems for operational purposes. These are operating systems, backup systems, monitoring systems, security sentinels, discovery tools, performance analysis and tuning systems and so on. If standards are created for each of these interactions, the total cost of ownership of IT infrastructure can be brought down substantially. Manageable IT Systems need to implement Instrumentation to provide access to internal parameters, metrics and diagnostics. They need to implement well defined and commonly accepted Interfaces so that they can be operated upon in a uniform manner. Vendors or third parties need to provide standardized Automation tools that surround these IT Systems so that labor costs in operation are reduced. Finally Autonomics should be incorporated which will reduce downtime and the need for expert human intervention. Standards will lay the foundation for the implementation of these disciplines.
As an example of such a standard, consider the Linux RPM Package Manager utility [1]. This utility defines a standard for packaging software components for installations and upgrades. Applications packaged using RPM format can be installed upgraded and uninstalled using the same RPM utility. This allows a system administrator to automate installations, upgrades and otherwise maintain the IT Systems more efficiently.
Instrumentation
Instrumentation refers to an inherent or extended ability of an IT System to monitor and report its internal parameters, metrics and diagnostics. IT Systems are described using several parameters and its architecture, which are stored in the configuration profiles or in the memory of the processes. IT Systems also contain transient state information regarding the transactions they are processing. In addition, IT Systems generate diagnostic information in the form of error logs and trace files. Instrumentation captures or measures this information and uses Interfaces to deliver it to the consumers. As an example of great Instrumentation, consider Oracle Corporation. Oracle has implemented comprehensive Instrumentation within its flagship RDBMS product that can be used for operational activities.
Interfaces
An Interface is “…the place at which independent and often unrelated systems meet and act on or communicate with each other” [2].
In the IT domain there are many examples of standard interfaces. For example, USB, Firewire, and CompactFlash are well known standard hardware interfaces. These interfaces provide a channel for two devices to communicate with each other. However, in the software arena, the interfaces are not standardized and they are usually limited to implementing exchange of data. Standardized Interfaces should provide configuration information, internal states, error logs and trace files, and control functions for startup, shutdown, clone, backup, install, uninstall, upgrade, and patch activities. Interfaces will make automation possible and reduce the need for a team of highly trained professionals for routine operational tasks.
Automation
Automation in the IT System context refers to the technique of making a system operate without human intervention. According to some estimates, labor costs now exceed the cost of IT Systems by an order of magnitude or more. IT personnel spend a lot of time installing, patching, cloning, and troubleshooting. Given proper Interfaces and Instrumentation, many of these tasks can be automated.
Automation is usually not a part of the IT System itself, but a collection of scripts, processes and jobs. Automation leverages existing Interfaces and Instrumentation provided by an IT System. It has the potential to substantially reduce the labor cost in an enterprise application deployment. Some of the common automation tasks are: installation, upgrades, patching, startup and shutdown routines, backups, cloning, etc.
Autonomics
IBM defines autonomic computing in this manner:
“An approach to self-managed computing systems with a minimum of human interference. The term derives from the body’s autonomic nervous system, which controls key functions without conscious awareness or involvement” [3]
Cloud computing requires that the deployed IT Systems be demand elastic. There is a frequent change in the configurations in such an environment. It is impossible for support personnel to keep track of all the configuration changes, provisioning, and deprovisioning that happens in a cloud. Incident and Problem Management will be even more difficult. Therefore such systems will have to be self aware and be able to perform their tasks without frequent human intervention. IT Systems which have incorporated autonomic computing are introspective, self reconfiguring, continually optimizing, self healing, self protecting, adapting, standards compliant, and demand elastic in nature. Autonomics could be implemented within the IT System itself or implemented externally using the Interfaces and Instrumentation provided by it.
Documentation
Documentation is the most obvious of the six and all IT vendors do provide some documentation along with their products. However, there is no standard for documentation and the quality is not always top notch. The documentation should be context sensitive, indexed and cross referenced. Documentation should also be accessible from the internet. IT system should also provide context sensitive help when appropriate from the same documentation.
References:
1. The Story of RPM by Matt Frye in Redhat Magazine, January 3rd, 2009 (http://magazine.redhat.com/2007/02/08/the-story-of-rpm/)
2. Merriam Webster Online (http://www.merriam-webster.com/dictionary/Interface)
3. Definition of autonomic computing at IBM Research website (http://www.research.ibm.com/autonomic/overview/faqs.html#1)