Here’s an introduction to our HotDep’12 paper
While the word ‘cloud-computing’ has become a cliché, the real strength of cloud is not yet undermined.
Elasticity, the ability to scale up or scale down the application on demand, is not understood clearly to date. There are a few exception though, such as MapReduce or bag-of-tasks type of applications. However, These programming paradigms are simple, usually stateless, and therefore easy to perform dynamic provisioning and so on. For more general type of applications, there has been very little research on how to enable elasticity to them.
We propose a programming model which enables elasticity. Moreover, it makes the programmer easy to reason about the execution of the application in elastic environment. In the model, an application runs in a “logical node.” A logical node is composed of multiple “physical nodes.” Regardless of the number of physical nodes involves in a logical node, an event executed in a logical node is logically equivalent.
However, elasticity induces a new fault-tolerance issue. A naive elasticity scheme would increase failure rate by allowing a physical node failure to induce the entire logical node failure.
Interesting, we found the mechanisms of the programming model naturally provides a solution to the fault-tolerance problem. Specifically, our programming model can recover failures at per-physical-node basis, and thereby transparently masks the physical node failures. More details of the programming model and the failure tolerance mechanisms can be found in the paper.