1. A method for automatically scaling a multi-tier application, the method comprising: receiving operational metrics of the multi-tier application from virtual machines executing the multi-tier application, wherein each tier of the multi-tier application is supported by at least one virtual machine; selecting one of reinforced learning and heuristic operation to recommend a scaling action from a current state of the multi-tier application, the current state of the multi-tier application being dependent on the operational metrics; if the reinforced learning is selected, applying the reinforced learning to select the scaling action from a plurality of possible actions for the multi-tier application in the current state; and if the heuristic operation is selected, applying the heuristic operation to select the scaling action using a plurality of defined heuristics.