  Cloud computing is a revolutionary process that has impacted the manner of
using networks. It allows a high level of flexibility as Virtual Machines (VMs)
run elastically workloads on physical machines in data centers. The issue of
placing virtual machines (VMP) in cloud environments is an important challenge
that has been thoroughly addressed, although not yet completely resolved. This
article discusses the different problems that may disrupt the placement of VMs
and Virtual Network Functions (VNFs), and classifies the existing solutions
into five major objective functions based on multiple performance metrics such
as energy consumption, Quality of Service, Service Level Agreement, and
incurred cost. The existing solutions are also classified based on whether they
adopt heuristic, deterministic, meta-heuristic or approximation algorithms. The
VNF placement in 5G network is also discussed to highlight the convergence
toward optimal usage of mobile services by including
NFV/Software-Defined-Network technologies.
