  With the growing demand for openness, scalability, and granularity, mobile
network function virtualization (NFV) has emerged as a key enabler for most
mobile network operators. NFV decouples network functions from hardware
devices. This decoupling allows network services, referred to as Virtualized
Network Functions (VNFs), to be hosted on commodity hardware which simplifies
and enhances service deployment and management for providers, improves
flexibility, and leads to efficient and scalable resource usage, and lower
costs. The proper placement of VNFs in the hosting infrastructures is one of
the main technical challenges. This placement significantly influences the
network's performance, reliability, and operating costs. The VNF placement is
NP-Hard. Hence, there is a need for placement methods that can scale with the
issue's complexity and find appropriate solutions in a reasonable duration. The
primary purpose of this study is to provide a taxonomy of optimization
techniques used to tackle the VNF placement problems. We classify the studied
papers based on performance metrics, methods, algorithms, and environment.
Virtualization is not limited to simply replacing physical machines with
virtual machines or VNFs, but may also include micro-services, containers, and
cloud-native systems. In this context, the second part of our article focuses
on the placement of containers in edge/fog computing. Many issues have been
considered as traffic congestion, resource utilization, energy consumption,
performance degradation, security, etc. For each matter, various solutions are
proposed through different surveys and research papers in which each one
addresses the placement problem in a specific manner by suggesting single
objective or multi-objective methods based on different types of algorithms
such as heuristic, meta-heuristic, and machine learning algorithms.
