  For distributed applications to take full advantage of cloud computing
systems, we need middleware systems
  that allow developers to build elasticity management components right into
the applications.
  This paper describes the design and implementation of ElasticRMI, a
middleware system that (1) enables application developers to dynamically change
the number of (server) objects available to handle remote method invocations
with respect to the application's workload, without requiring major changes to
clients (invokers) of remote methods, (2) enables flexible elastic scaling by
allowing developers to use a combination of resource utilization metrics and
fine-grained application-specific information like the properties of internal
data structures to drive scaling decisions, (3) provides a high-level
programming framework that handles elasticity at the level of classes and
objects, masking low-level platform specific tasks (like provisioning VM
images) from the developer, and (4) increases the portability of ElasticRMI
applications across different private data centers/IaaS clouds through Apache
Mesos.
