I love buzzwords and catch phrases. Judicious use of the right buzzword can make you appear wise beyond your abilities. Autonomic computing is just such a phrase. It has a nice ring to it. It also has some substance and portends a trend in computing we all will welcome.
Karl Marx and Frederick Engels published the Manifesto of the Communist Party in 1848. Some 69 years later, in October 1917, the Bolsheviks seized power in Russia. In 2001, IBM published the Autonomic Computing Manifesto. Manifesto is a word with a highly charged connotation. I will presume IBM (I pick on IBM, but all the major players in this game are pursuing similar strategies) is looking to the revolutionary sense of the wordas in the next revolutionary thing in computing. I also will presume IBM is not expecting us to wait 70 years for autonomic computing to become a reality.
So What Is It?
Essentially autonomic computer (AC) systems are those that have the ability to manage themselves without human intervention or interference. The name is derived from the autonomic nervous system, that part of the nervous system that controls involuntary but necessary body functions such as digestion and temperature control. Most of the functions performed by my body are performed without my direction. I consciously begin to run, and my body responds in a number of subconscious ways. My heart beat and respiration rates increase. My muscles begin to convert glycogen to energy, my liver begins to convert fat to glycogen, and sweat glands begin secretion to carry away excess heat. The bodys autonomic nervous system controls and commands thousands upon thousands of discrete tasks in order for my body to function properly. An autonomic computing system would work in a similar manner. For example, as more users come online with increased demand for information, an autonomic computing system would bring more resources online, adding processing power, memory, and I/O channels as necessary.
The analogy doesnt end here. Our bodies are self-healing. We are attacked by a virus, and internal defense mechanisms spring into action. The ability to self-heal is a desirable characteristic of AC.
Enough!
I would hesitate to go too far with the nervous system/autonomic computing comparison. Depending on your beliefs, the human body either has had a few billion years of evolutionary process or the intervention of a divine being to create the autonomic nervous system. Present- day computer scientists will have significantly fewer resources available.
In fact, the autonomic nervous system (ANS) has three distinct functional units: the parasympathetic system, which works to save energy and resources; the sympathetic nervous system, which is responsible for reacting to crisis; and the enteric nervous system, which is a collection of ganglia, or nerve cells, that function as a type of second brain and control the gastrointestinal tract, pancreas, and gall bladder. Suffice it to say the ANS is a very complex system that automatically controls a very complex organism. The theory of autonomic computing systems entails just such complexity.
If you dont like the terminology, take heart. Autonomic computing systems alternatively have been called holistic computing, ROC (recovery-oriented computing), self-healing technology, and introspective computing. It all comes down to the same thingself-managed computing systems.
Why?
It appears what we are asking for are more complex systems than we now have. We all operate in heterogeneous technology worlds in which we struggle to work with seemingly incompatible, inconsistent, disparate systems. Is adding another layer of complexity going to make our life easier?
Yes, if you believe the AC theorists. It is, in fact, the complexity of present-day systems that drives the need for AC. IBMs manifesto declares that dealing with complexity is the single most important challenge facing IT. Complex systems are pushing the envelope of the human capability to manage them. Systems now are so interconnected and diverse it has become virtually impossible to predict actual results of interaction between components and systems. We do not have the luxury of knowing everything will work as designed until we go live. And live is not the environment in which we want to sort out unplanned results.
In theory, self-managing AC systems can solve these complexity problems. At least that is the party line. It often is expressed like this: The people responsible for the smooth running of these interconnected systems are starting to get in the way. Look outI think theyre talking about you.
Do Computing Systems Need People?
The second reason or rationale for AC directly addresses the people issue apart from the complexitywith some mixed messages. IT infrastructures require increasingly greater amounts of skilled manpower. That manpower comes at a significant expense. Salaries routinely are a larger part of IT budgets than infrastructure or software. AC systems will eliminate large parts of that staff need. That makes sense. Here comes the mixed messageaccording to IBM: Unfilled IT jobs in the United States alone number in the hundreds of thousands. Even in uncertain economic times, demand for skilled IT workers is expected to increase by over 100 percent in the next six years.
OK. So the real reason is we cant find enough skilled IT workers? Tell that to my friend who is a very qualified IT professional and has been looking for work for six months. Or, for that matter, how about the three billion people in the world who currently live on less than $2 a day. Couldnt they be trained for IT jobs? The real reason is money, and I dont mean that pejoratively. The bottom line is a very good reason to make appropriate business/IT decisions. Autonomic computing systems will become a reality when the TCO (Total Cost of Ownership) is less than conventional methodologies.
What Constitutes AC?
The IBM manifesto lists eight characteristic elements of autonomic computing. I will examine four basic concepts of self-managed systems as described by J.O. Kephart and D.M. Chess (from IBMs Thomas J. Watson Research Center) in an article in the IEEE Journal.
1. Self-Configuration. Take a look at your corporate Web site. Now take a look at the drawings and flow charts that describe it. Do they match? Do you really know what role each box plays? Large Web sites have become so complex with banks of Web servers and data servers and middleware that it is very difficult to map the system much less keep it properly configured. We blend together different technologies that require different expertise to configure and keep afloat. Once it is all up and running, we often are hesitant to make any changes. We often put off upgrading systems simply because we dont know how the resultant system will perform. Introducing even a single new component into a complex system can bring the system to its knees.
An autonomic system will know itself. When a new component is introduced into that system, it will recognize and register that new component. It will take a snapshot of itself before introducing the new component. The system then can perform regression testing or use heuristic techniques to determine the effect of the new component. If necessary, the system can roll back to the previous state.
Some of these techniques already exist. Windows XP has the ability to roll itself back to a prior state if a particular bit of software corrupts the system. The key to AC is to build entire systems that can configure and reconfigure themselves.
2. Self-Optimization. Such optimization provides for a system to strive continually to improve system performance. This will take many forms: A Web farm will bring more servers online during periods of peak demand. Software components automatically will check to see whether a more recent version of themselves is available. Operating systems continually will check for updates. Once again, some of this is a current reality. I arrive at work and find my OS has downloaded the latest update and is seeking permission to install it. Subsystems relentlessly will cache data and attempt different methodologies in order to become more efficient. A self-optimizing system always looks for ways to optimize.
3. Self-Healing. AC systems will detect, diagnose, and repair problems. Self-monitoring systems immediately will become aware of hardware failures, software problems, and network bottlenecks and act to repair or bypass them. The car I drive is able to detect a burned-out taillight bulb and immediately switch to a backup bulb. Computer systems will do the same thing, detecting read errors on a hard drive and immediately switch over to a properly operating backup drive. Periodically, the last remaining IT guy can come by and replace all the bad drives. Software problems can be fixed in a variety of waysby reinstalling a corrupt file or rolling the system back to the last workable state.
4. Self-Protection. Firewalls and AV software work, but we still rely on human intervention to analyze intrusions and configure these systems. AC systems will be not only self-aware but aware of their environment and act accordingly. They must be prepared to react to large-scale attacks and take appropriate action. They also must possess the ability to analyze incremental changes in the environment that may constitute subtler or less-direct threats. I see a problem here. We all know the biggest threat to any system is humanusually inadequate password schemes or protection. How will an autonomic system react to a human threat? How will it detect it? Who will win the final man vs. machine battle? Do you remember this little bit of movie dialogue?
Dave: Hal, I wont argue with you anymore. Open the doors.
Hal: Dave, this conversation can serve no purpose anymore. Goodbye.
(And let us not forget IBM released its manifesto in 2001, the very year of the above conversation in 2001: A Space Odyssey, and the fact that HAL is IBM with a one-letter shift.)
All Together Now
I salute the concept of autonomic computing. Vendors already have taken the first (and second) steps down this road. It is relatively easy to find individual pieces of hardware or software solutions that possess the basic functionality of AC. The tough part is getting all this stuff to work togetherremember that our world is heterogeneous. For large-scale AC to become reality, standards have to be developed and cross-vendor, cross-platform alliances and agreements must be made. Until that time, we will have only a partial solution. But a partial solution is better than none.
A Scary Thought
There is yet another reason to implement AC systemsto hide the complexity from the user. And that may not be such a good idea. Hiding complexity only may ensure we are unable to deal with it. Technology is becoming more complex. Electronic devices are diagnosed and repaired by swapping out modules. Software developers increasingly are using higher-level languages. Much development now is accomplished on virtual machines. Autonomic computing will provide another layer of abstraction on already abstract systems. I believe it is possible we could reach such a state of advanced technology that we will lose sight of how to build the systems that build the systems. Self-healing is good; self-protection is good; self-optimizing is good. What is not good is accepting the postulate computer systems must become more complex. Perhaps we should be examining ways to design simpler systems instead of trying to make certain more complex systems are always necessary.
© Arc, All Rights Reserved. Request academic re-use from www.copyright.com. All other uses, submit a request to TMSalesOperations@arc-network.com. For more information visit Asset & Logo Licensing.