  Auto-scalability has become an evident feature for cloud software systems
including but not limited to big data and IoT applications. Cloud application
providers now are in full control over their applications' microservices and
macroservices; virtual machines and containers can be provisioned or
deprovisioned on demand at runtime. Elascale strives to adjust both micro/macro
resources with respect to workload and changes in the internal state of the
whole application stack. Elascale leverages Elasticsearch stack for collection,
analysis and storage of performance metrics. Elascale then uses its default
scaling engine to elastically adapt the managed application. Extendibility is
guaranteed through provider, schema, plug-in and policy elements in the
Elascale by which flexible scalability algorithms, including both reactive and
proactive techniques, can be designed and implemented for various technologies,
infrastructures and software stacks. In this paper, we present the architecture
and initial implementation of Elascale; an instance will be leveraged to add
auto-scalability to a generic IoT application. Due to zero dependency to the
target software system, Elascale can be leveraged to provide auto-scalability
and monitoring as-a-service for any type of cloud software system.
