IBM
BeginsAutonomic-Computing Project
IBM is beginning a large-scale autonomic-computing initiative
designed to develop computer systems that run with little or no human
involvement. Paul M. Horn, senior vice president and director of IBM
Research, explained, "The body's autonomic nervous system controls key
functions without conscious awareness or involvement, things like blood
pressure,internal temperature, heartbeat. You don't have to think about
them or how they need to be optimized to accomplish what you want.
Computers ought to be this easy."Autonomic computing (http://www.research.ibm.com/autonomic/)
could address a variety of complex IT problems.For example, Horn
said, the approach could simplify the management and integration of
different enterprise systems by providing heterogeneous workload- and
systems-management techniques. According to Horn, IBM customers tell
him frequently "their IT systems are out of control and nearly
impossible to manage." He said companies must cope with increasingly
complex technology while finding it difficult to hire and keep skilled
IT workers. Keeping systems running troublefree is time-consuming work
from which IT professionals should be freed to work on more interesting
challenges, he explained. "Imagine if were able to free our best and
brightest people from baby-sitting data centers or spending hours
determining root causes of failure," he said. Imagine the huge amount
of innovation and creativity we'd be able to turn loose on the
industry." Research in this area, stated Horn, who coined the term
autonomic computing, should be evolutionary in use of existing
platforms and legacy systems but revolutionary in its use the
algorithms and software agents that will enable self-management. For
example, agents could contain information about systems and policies
that would help the systems govern themselves. IBM is already working
on several autonomic-computing projects, some involving artificial
intelligence; adaptive algorithms; and self-healing technology,
which lets systems keep running even if certain components fail. Horn
said one purpose of the projects projects is to make systems more
aware of and responsive to changes in their environments.
IBM also plans to fund more than 50 autonomic-computing research
projects by entrepreneurs and universities to encourage
interdisciplinary collaboration and academic leadership. Horn said IBM
has not yet
decided how much funding it will provide. The company is also
encouraging professional and academic organizations, including the US
National Science Foundation, to target autonomic computing as they fund
crucial IT research. IBM's work is related to a couple of academic
research projects. For example, John Kubiatowicz, assistant professor
at the University of California, Berkeley, is working on introspective
computing, in which systems use excess computing, memory, storage, and
other resources to improve overall system behavior. According to
Kubiatowicz, autonomic computing connotes a system reacting to events,
whereas introspective computing involves reactive and proactive
behavior."However, I am encouraged by the fact that an organization as
large as IBM has put forth autonomic computing as a public goal," he
said. "Far too much computer-systems work has involved making things
faster, larger, et cetera, without considering reliability,
maintainability, availability, et cetera."Analyst Rob Enderle with Giga
Information Group, a market research firm, said autonomic computing
would eventually reduce system support costs and would be most useful
in remote areas where human oversight isn't practical, such as in
space. Enderle predicted autonomic systems will begin deployment by the
middle of this decade. Horn agreed and said, "Truly autonomic systems
are years away, although in the nearer term, autonomic functionality
will appear in servers and software."-Linda Dailey Paulson One of the
project's purposes is to make systems more aware of and responsive to
changes in their environment.
I would suppose that the topic of autonomic computing would encompass a
great many disciplines and that it would include topics such as:
Stand alone system integrity. The so-called self-healing aspect of an
individual PC, both at the hardware and software level.
Distributed application integrity
Hardware monitoring. To
varying degrees machines already do this. For example mainframes that
call the service center when they detect internal errors (yes, I know
this is probably an over simplification). However it does relay in the
fact that a core subset of the machine still functions or the nature of
the failure is below a certain level of severity. In a similar way, if
I cut myself, my body can heal itself but beyond a certain severity of
injury it cannot.
This leads to the idea that although the individual may perish (human
or computer) the race (human or network) lives on.
Software self-monitoring and healing. This
assumes that the underlying hardware still functions correctly. For
example, if a hardware fault goes undetected that affects software
operation, how would the software know it had a problem. In the same
vein, would someone who is insane expect to know they are insane (If
you know your crazy, are you really crazy?). Therefore self-monitoring
is not a total solution. Basically people are considered normal, not by
their own values, but by the values of the other people within the
society in which they live. In the same way, the 'health' of an
individual machine may be more accurately judged by the nearby machines
(on a network) than by each individual machine itself (doesn't the
space shuttle use similar concept?).
The other aspect of self-healing is a purely human one. People
(businesses) generally like to be in control of their systems. The
concept of systems 'updating' themselves would probably cause most
change control people to throw their hands up in horror. If you have a
problem, what level is your system at? Well, I think it's sort of at
xyz level and a bit, maybe!! How do I know, the systems down so I
cannot find out what's on it.
Application integrity. Today's
applications are distributed. No computer is an island (except for the
MP 3000 in our lab that I cannot get on the network yet!) so by its
very nature autonomic computing is going to be about simplifying the
management and configuration of such applications. In order to
accomplish this applications would need to become more aware of
processing within a distributed environment. However if the aim of
autonomic computing is to simplify the complexity of these very
environments then the languages and run time environments in which
these applications run must become much easier to use and implement. As
a mainframe dinosaur I will admit that I am having a heck of a time
trying to understand how Java and Web 'stuff' fit together and how
Websphere makes it easier for me (it hasn't
so far, but maybe I'm just thick J). All this DCOM/NIDL stuff is just
plain confusing. As for xml/soap/uddi, well I know what they are, sort
of, but as soon as you get a handle on one, something else comes along.
Then there's parallel processing enabling facilities such as MPI and
PVM which don't even get a look in the popular business list of buzz
words. I would suggest that even though modern applications have the
appearance of asynchronous processing (e.g. windows apps) with
their event driven philosophy, programmers are still in effect writing
chunks of sequential code.
If you want to take the concept of autonomic computing to the
application level than I would say that an application should not need
to know where a piece of data is or on what processor a process runs.
In the same way that I do not delegate which neurons of my brain hold
which piece of information, nor should an autonomic application be
concerned with such details. It may be to an applications advantage to
indicate that certain processes or pieces of data remain local when
possible but indicating such a desire should not cause it to be
enforced, only suggested to the run time environment. Now if we
distribute our data and processes, it becomes important (in an
autonomic environment) that if the machine or network segment
holding that data/process becomes unavailable, we do not loose the
information or result it holds. In the same way that a brain cell may
die, the information it held is passed on to surrounding cells (I
hope!). This implies that in an autonomic application, processes and
data elements are replicated in more than one element (machine) in such
a way that failure of a single element does not cause the failure of
the entire application.
Programming this type of redundancy with existing technology would
required extensive specialized programming and testing and would
therefore probably prevent its widespread acceptance and use. This
leads on to the need for an autonomic aware language and run time
environment that enables the average programmer to concentrate on the
application/business logic instead of how to implement the logic to
implement the logic (if you see what I mean).