Predictive Auto-Scaling of Multi-Tier Applications Using Performance Varying Cloud Resources