I. Introduction
With the Internet-of-Things (IoT) proliferating, IoT devices are expected to generate massive amounts of data for immediate processing in a short time. The increased demand of distributed IoT applications for real-time, low-latency services is proving to be challenging for the traditional cloud computing framework. The fog computing paradigm addresses these challenges by locating devices for computing, storage, networking, and acceleration, called fog nodes, closer to users [1]. By adopting a microservice architecture [2], IoT applications are designed as a collection of loosely coupled modular services, called microservices, that communicate with each other over a network. Microser-vices are installed in lightweight and portable run time environments, so-called application containers. They allow fog nodes to take advantage of the shared pool of physical resources by providing a distributed and highly virtualized computing environment. Each fog node is connected to some other fog nodes by wireless or wired links forming a fog network. Fog nodes cooperate by forwarding data exchanged between any pair of fog nodes.
Placement of fog services.