  The Infrastructure-as-a-Service (IaaS) model of cloud computing is a
promising approach towards building elastically scaling systems. Unfortunately,
building such applications today is a complex, repetitive and error-prone
endeavor, as IaaS does not provide any abstraction on top of naked virtual
machines. Hence, all functionality related to elasticity needs to be
implemented anew for each application. In this paper, we present JCloudScale, a
Java-based middleware that supports building elastic applications on top of a
public or private IaaS cloud. JCloudScale allows to easily bring applications
to the cloud, with minimal changes to the application code. We discuss the
general architecture of the middleware as well as its technical features, and
evaluate our system with regard to both, user acceptance (based on a user
study) and performance overhead. Our results indicate that JCloudScale indeed
allowed many participants to build IaaS applications more efficiently,
comparable to the convenience features provided by industrial
Platform-as-a-Service (PaaS) solutions. However, unlike PaaS, using JCloudScale
does not lead to a loss of control and vendor lock-in for the developer.
