When we had questions about the field of autonomic computing, we looked up José Fortes, director of the US National Science Foundation's Center for Autonomic Computing. Read on to find out what he had to say.
iSGTW: Welcome, and thank you for agreeing to speak with us. I've heard the term "autonomic computing" at a number of conferences. I was hoping you could tell us exactly what it means.
Fortes: As a scientific discipline, autonomic computing encompasses the study of systems that are capable of autonomously achieving desired behaviors. The systems are often called self-* systems, where * is a placeholder for the type of behavior. For example, self-tuned systems are capable of tuning their performance as needed by their intended mission; self-protected systems automatically deal with intrusion attacks. Self-managed systems do not require manual configuration and updating, and self-healing systems are capable of repairing themselves. Self-managed systems can also be more broadly construed as being capable of managing all behaviors mentioned above.
iSGTW: So if a system is, for example, self-tuning, does that mean that it never needs to be tuned by a human, or does it mean that humans will have to tune it less frequently than they would normally have to?
Fortes: Both cases could be the result of an autonomic computing approach and considered autonomic by comparison with the system that would have resulted if an autonomic computing approach had not been used. Perhaps the definition should say that a self-tuning system needs only be tuned by a human when and where specified for the end applications of the system. However, strictly speaking, a self-tuning system will never require human tuning in the operating regions for which it was designed to be self-tuning.
iSGTW: How does autonomic computing relate to artificial intelligence?
Fortes: Autonomic computing may use artificial intelligence approaches for modeling and planning purposes. For example, machine learning techniques are often used to identify workload patterns which, once identified, lead to the use of the right configuration of resources for their execution. In general, autonomic systems may be organized as monitor-analyze-plan-execute loops where artificial intelligence techniques can be used in the analysis and planning stages (of course, non-AI techniques, e.g. from control theory, can also be used, depending on the system).
iSGTW: What problems can autonomic computing solve today?
Fortes: Autonomic computing solutions come in two general forms. One resembles feedback-based control systems found in disciplines other than IT (e.g. mechanical and electrical engineering). The other resembles self-organized systems found in the biological world (e.g. computing swarms, cellular automata and neural networks). In the context of the first type of solutions, autonomic computing provides systematic methods to design closed-loop systems capable of tracking their performance and adjusting control parameters so the performance is optimized or tracks a desired level. These methods rely on an extensive body of control theory and design tools. In the context of the second type of solutions, many emerging peer-to-peer techniques are being used today to enable self-configurable, self-healing and self-managed networks of large numbers of nodes.
iSGTW: Which areas of scientific and distributed computing are likely to benefit the most from autonomic computing?
Fortes: Any scientific computing problem that requires large-scale infrastructure and/or complex combinations of components (software and/or hardware) will benefit greatly from autonomic computing. In the case of distributed computing, autonomic computing is a must as it is almost always the case that the distributed nature of distributed computing must be hidden and automatically taken care of - something that requires autonomic computing and networking to happen under the hood (i.e. interface) of the system.
iSGTW: Can you give some examples of types of software that are autonomic? For example, are schedulers and workflow managers examples of autonomic systems?
Fortes: Most software used for peer-to-peer systems is inherently autonomic in the sense that it can handle failures of nodes, network configuration and certain kind of performance optimization automatically. Emerging Web-services and datacenter management software also includes self-tuning capabilities that enable those systems to automatically adjust for changing workloads. Schedulers and workflow managers can include some autonomic capabilities but do not necessarily have them. Autonomic designs of these systems require some sort of awareness of system state and feedback of performance that are often absent from existing schedulers and workflow managers.
Self-managed computing environments are now commonly used, e.g. Hadoop's mapreduce provides self-healing and self-organizing features that enable the use of large numbers of resources without users having to explicitly worry about where their computations take place and whether failures occur. Similarly, P2P systems used for social networking, telephony (e.g. Skype) and Facebook rely on self-configuration, self-tuning and self-organization to deliver acceptable Quality-of-Service and enable nodes to arbitrarily join and leave the system.
iSGTW: What are some of the more interesting projects in progress or recently completed at the Center for Autonomic Computing?
Fortes: At the Center for Autonomic Computing we have upwards of thirty projects related to, among others, the following topics: autonomic datacenter provisioning and management of performance, energy consumption and thermal dissipation; autonomic detection and mitigation of anomalies in networks and datacenters; self-organizing virtual private networks; autonomic cloud bursting; self-cared IT systems; and data transfer management.
iSGTW: What do you anticipate this area of research will bring to computational science in the next few decades? Will we see computer systems that can effectively manage, maintain, and upgrade themselves?
Fortes: I think that autonomic computing will become pervasive as the IT world increasingly becomes one where systems have large scale, are built out of existing components and services, are dynamic in space and time, have increasing complexity and connectivity, and are subject to competitive pressures that do not leave room for exponential management costs. However, these systems will remain human-centered, meaning that judiciously integrated interfaces will allow humans to steer system behaviors where entirely autonomic behaviors are undesirable or unacceptable. Computer science research will have to address management design principles and cost as first-order considerations in computer systems design.