AutoMate Architecture




Project AutoMate investigates autonomic solutions that are inspired by biological systems and deals with similar challenges of complexity, dynamism, heterogeneity and uncertainty. The goal is to realize systems and applications that are capable of managing (i.e., configuring, adapting, optimizing, protecting, healing) themselves. Project AutoMate aims at developing conceptual models and implementation architectures that can enable the development and execution of such self-managing Grid applications. Specifically, it investigates programming models, frameworks and middleware services that support the definition of autonomic elements, the development of autonomic applications as the dynamic and opportunistic composition of these autonomic elements, and the policy, content and context driven definition, execution and management of these applications. Project AutoMate builds on three fundamental concepts:
  • Separation of policy from mechanism distilling out the aspects of components and enabling them to orchestrate a repertoire of mechanisms for responding to the heterogeneity and dynamics, both of the applications and the Grid infrastructure. The policies that drive these mechanisms are specified separately. Examples of mechanisms are alternative numerical algorithms, domain decompositions, and communication protocols; an example of a policy is to select a latency-tolerant algorithm when network load is above certain thresholds.
  • Context, constraint and aspect based composition techniques applied to applications and middleware as an alternative to the current ad-hoc processes for translating the application's dynamic requirements for functionality, performance, quality of service, into sets of components and Grid resource requirements.
  • Dynamic, proactive, and reactive component management to optimize resource utilization and application performance in situations where computational characteristics and/or resource characteristics may change. For example, if adaptive mesh refinement increases computational costs, we may negotiate to obtain additional resources or to reduce resolution, depending on resource availability and user preferences.
A schematic of the overall architecture is presented on the Figure shown below.




AutoMate is composed of the following components:
  • Accord Programming Layer: The Accord programming layer extends existing distributed programming models and frameworks to addresses the definition, execution and runtime management of autonomic elements, as well as the formulation of autonomic applications as the dynamic and opportunistic composition of these elements.
  • Rudder Coordination Layer: The Rudder coordination layer provides a coordination framework and agent-based deductive engine to support autonomic behaviors. The coordination framework defines protocols and mechanisics builds on a scalable implementation of a decentralized tuple space. The deductive engine is composed of element, system and compostion agents and supports the collective decision making.
  • Meteor/Pawn Middleware Layer: The Meteor middleware substrate provides a content-based middleware with support for content-based routing, discovery and associative messaging. It includes the Squid routing and discovery engine and the ARMS messaging substrate. The Pawn peer-to-peer messaging layer provides higher level messaging abstractions in a decentralized environment.
  • Sesame Access Management Layer: The Sesame access control engine is composed of access control agents and provides dynamic context-aware control.

Project AutoMate also includes the DAIS cooperative-protection services and the Discover collaboratory services for collaborative monitoring, interaction and control, which are not described in this paper. Additionally, AutoMate portals provide users with secure, pervasive (and collaborative) access to the different entities. Using these portals users can access resource, monitor, interact with, and steer components, compose and deploy applications, congure and deploy rules. The key components are described in the following sections.