Parallel Programming Models; Platform as a Service (PaaS); Service-Oriented Computing; Cloud Computing; Runtime Systems
Zheng Y., Rosà A., Salucci L., Li Y., Sun H., Javed O., Bulej L., Chen L. Y., Qi Z., Binder W. (2016), AutoBench: Finding Workloads That You Need Using Pluggable Hybrid Analyses, in
2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).
Gallidabino Andrea, Pautasso Cesare (2016), Deploying Stateful Web Components on Multiple Devices with Liquid.js for Polymer, in
Proceedings of the 19th International ACM Sigsoft Symposium on Component-Based Software Engineering, Venice, Italy.
Salucci Luca, Bonetta Daniele, Binder Walter (2016), Efficient Embedding of Dynamic Languages in Big-data Analytics, in
ICDCS Workshops 2016.
Bonetta Daniele, Salucci Luca, Marr Stefan, Binder Walter (2016), GEMs: Shared-memory Parallel Programming for Node.js, in
Proceedings of OOPSLA '16.
Salucci Luca, Bonetta Daniele, Marr Stefan, Binder Walter (2016), Generic Messages: Capability-based Shared Memory Parallelism for Event-loop Systems, in
Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming.
Salucci Luca, Bonetta Daniele, Binder Walter (2016), Lightweight Multi-language Bindings for Apache Spark, in
22nd International Conference on Parallel and Distributed Computing, Grenoble, France, August 24-26,.
Gallidabino Andrea (2016), Migrating and Pairing Recursive Stateful Components Between Multiple Devices with Liquid.js for Polymer, in
Proceedings of the 16th International Conference on Web Engineering (ICWE2016), Lugano, Switzerland.
Gallidabino Andrea, Pautasso Cesare, Ilvonen Ville, Mikkonen Tommi, Systä Kari, Voutilainen Jari-Pekka, Taivalsaari Antero (2016), On the Architecture of Liquid Software: Technology Alternatives and Design Space, in
Proceedings of the 13th Working IEEE/IFIP Conference on Software Architecture (WICSA 2016), Venice, Italy.
Gallidabino Andrea, Pautasso Cesare (2016), The Liquid.js Framework for Migrating and Cloning Stateful Web Components across Multiple Devices, in
Proceedings of the 25th International World Wide Web conference, Montreal, Montreal, Canada.
Gallidabino Andrea, Pautasso Cesare, Ilvonen Ville, Mikkonen Tommi, Systä Kari, Voutilainen Jari-Pekka, Taivalsaari Antero, Architecting Liquid Software, in
Journal of Web Engineering.
One of the main characteristics of cloud computing is the pervasiveness of parallelism, which naturally emerges 1) from the underlying virtualized execution environment, 2) from the concurrent client requests to services deployed in the cloud, and 3) from asynchronous and distributed interactions within the cloud and with external systems and data sources. Existing Platform-as-a-Service (PaaS) clouds provide developers with high-level abstractions, which can be used to build scalable and elastic Web services and Web applications, but lack support for general parallel programming models. For example, even though existing PaaS cloud programming models support the deployment of traditional, multi-tier Web applications, they 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 to take advantage of their elasticity and pay-as-you-go resource provisioning features must resort to Infrastructure-as-a-Service (IaaS) clouds, which provide them with lower-level abstractions (such as operating system threads and locks, or processes and message queues). Such low-level abstractions make it more difficult to build complex applications, which, for example, require support for large-scale data processing and may involve pipelined computations over infinite streams of data.To overcome the limitations of existing cloud programming models, in this project we address the following fundamental research questions: "How can we increase the abstraction level of the programming model for PaaS cloud development?", "Which programming models allow for running any parallel application in the cloud?", and "What are the guarantees the developer can be given in terms of performance, scalability, elasticity, reliability, and data consistency?". We consider these questions fundamental challenges for simplifying (and reducing the cost of) PaaS cloud development. Our goal is to explore novel programming models 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 (in contrast to OS-level abstractions), while the PaaS runtime system - which is also subject of our investigation - will automatically parallelize and optimize the execution, control resource consumption, and ensure data consistency.Concretely, in this project we will design a parallel programing model for PaaS cloud development providing new computation, storage, and communication abstractions. Our investigation will focus on functional and event-based programming, which have become popular for developing Web services and 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. Ensuring transactional properties (i.e., atomicity, consistency, and isolation) for all operations on shared state is expensive and would hinder scalability. Hence, our programming model will support relaxed consistency models to reduce the need for synchronization. Our programming model 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. Finally, we will develop a novel runtime system capable of automatically reconfiguring the application deployment for performance optimization. To this end, we will investigate auto-tuning mechanisms to achieve elastic scalability with respect to the number of concurrent clients, taking given service-level objectives (i.e., quality-of-service guarantees) into account. Our approach will be thoroughly evaluated both in terms of expressiveness of the new programming model and in terms of performance and scalability of the runtime system. For the latter evaluation, the platform developed in this project will be deployed on a heterogeneous cluster of modern multicore machines.