Existing auto-scaling approaches can be classified into reactive, proactive, and predictive algorithms. Reactive algorithms scale in/out system based on current situation of the system. The most significant shortcoming of reactive algorithms in IaaS is neglecting virtual machine (VM) boot-up time, which is reported to be between 5 and 15 minutes [5]. Neglecting VM boot-up time may cause under-provisioning during the lag time, which consequently may lead to SLA penalty. Proactive approaches try to solve this issue by allowing clients to pre-define a schedule where they proactively scale in/out system at certain points of time. Proactive scaling approaches are suitable for the environments with predictable load characteristics. But in the environments with unplanned load spikes employing a predictive auto-scaling system is desirable. Predictive auto-scaling algorithms predict future system behavior and adjust application resources in advance to meet the future needs. Fig. 1 shows an architectural overview of a predictive auto-scaling system.