  The problem of Cloud resource provisioning for component-based applications
consists in the allocation of virtual machines (VMs) offers from various Cloud
Providers to a set of applications such that the constraints induced by the
interactions between components and by the components hardware/software
requirements are satisfied and the performance objectives are optimized (e.g.
costs are minimized). It can be formulated as a constraint optimization
problem, hence, in principle the optimization can be carried out automatically.
In the case the set of VM offers is large (several hundreds), the computational
requirement is huge, making the automatic optimization practically impossible
with the current general optimization modulo theory (OMT) and mathematical
programming (MP) tools. We overcame the difficulty by methodologically
analyzing the particularities of the problem with the aim of identifying search
space reduction methods. These are methods exploiting:(1) the symmetries of the
general Cloud deployment problem, (2) the graph representation associated to
the structural constraints specific to each particular application, and (3)
their combination. An extensive experimental analysis has been conducted on
four classes of real-world problems, using six symmetry breaking strategies and
two types of optimization solvers. As a result, the combination of a variable
reduction strategy with a column-wise symmetry breaker leads to a scalable
deployment solution, when OMT is used to solve the resulting optimization
problem.
