1. Infrastructures services for dynamic federation and coordination to enable on-demand scale-up, scale-down and scale-out.
2. Programming support to enable a range of programming models and services for autonomic monitoring and management of the infrastructure and applications.
The overarching goal of CometCloud is to realize virtual computational cloud infrastructure that integrates local computational environments and public cloud services on-demand, and provide abstractions and mechanisms to support a range of programming paradigms and real-world applications on such an infrastructure. Specifically, CometCloud provides programming abstractions and underlying mechanisms and services. Furthermore, it enables policy-based autonomic cloud-bridging and cloud-bursting. Autonomic cloud-bridging enables on-the-fly integration of local computational environments (data-centers, grids) and public cloud services (such as Amazon EC2), and autonomic cloud-bursting enables dynamic application scale-out to address dynamic workloads, spikes in demands, and other extreme requirements.
Conceptually, CometCloud is composed of a programming layer, service layer, and infrastructure layer. The infrastructure layer realizes a dynamic self-organizing overlay and an information discovery and content-based routing substrate built on top of the overlay. The routing engine supports flexible content-based routing and complex querying. This layer also provides replication and load balancing services, and handles node dynamics as well as node failures. The service layer provides a range of services to supports autonomics at the programming and application level. This layer supports the tuple space coordination model, and provides a virtual shared-space abstraction as well as associative access primitives. Dynamically constructed transient spaces are also supported to allow applications to explicitly exploit context locality to improve system performance. Asynchronous (publish/subscribe) messaging and event services are also provides by this layer. Finally, online clustering services support autonomic management and enable self-monitoring and control. Events describing the status or behavior of system components are clustered and the clustering is used to detect anomalous behaviors. The programming layer provides the basic framework for application development and management. It supports a range of paradigms including the master/worker/BOT, workflows and MapReduce/Hadoop.
CometCloud is being used to support a range of applications from varied domains including business intelligence, financial analytics, oil reservoir simulations, medical informatics, document management, etc.