Self-aware and Self-optimized Auto-scaling for Service-based Applications in the Elastic Cloud