In this project we explore novel programming models for Platform-as-a-Service (PaaS) clouds that are characterized by task parallelism as well as by asynchronous communication. In the resulting programming model, the developer will have the ability to run any parallel application using high-level abstractions, while the PaaS runtime system will automatically parallelize and optimize the execution, control resource consumption, and ensure data consistency.
One of the main characteristics of cloud computing is the pervasiveness of parallelism, which emerges from the underlying virtualized execution environment, from concurrent client requests, and from asynchronous and distributed interactions within the cloud and with external systems and data sources. Existing PaaS clouds lack support for general parallel programming models and impose significant architectural constraints on how the services can leverage the underlying parallelism. As a consequence, developers who want to run parallel applications in cloud platforms taking advantage of their elasticity and pay-as-you-go resource provisioning features must resort to Infrastructure-as-a-Service clouds, which provide them only with lower-level abstractions that make it more difficult to build complex applications.
To overcome these limitations, we will design a new parallel PaaS cloud programing model providing new computation, storage, and communication abstractions. Our investigation will focus on functional and event-based programming, which have become popular for developing Web applications. In this context, we will relax the assumption of share-nothing message-based coordination and explore different consistency models for mutable shared state. Our programming model will support relaxed consistency models to reduce the need for synchronization. It will also offer dedicated communication primitives for streaming computations and their composition into pipelines. At the level of the runtime system, we will investigate mechanisms for fine-grained resource accounting and control, focusing on platform-independent resource consumption metrics. We will also explore fundamental concurrency management mechanisms within the PaaS runtime system to enable scalable service execution in the presence of time-varying request workloads.