**2. Background**

The term "Internet of Things," composed in 1999 by Kevin Ashton [12], refers to a network of interconnected physical devices, technologies, objects, and services through the Internet for the exchange, processing, and storage of data [13, 14]. IoT devices use sensors to get information from the surrounding environment and regularly respond to this information through an actuator. The application of IoT has evolved over the years, and it is widely used to implement a variety of groundbreaking smart devices and services. Unfortunately, it cannot often implement such services directly through the IoT device. The large variety of heterogeneous data, otherwise known as big data [15], must be computed and stored by IoT devices. IoT devices are mostly battery-powered and have deficient networking, processing, and storage resources. Therefore, it cannot efficiently carry out these operations (computing, storing, and networking) [12]. The cloud-computing concept was introduced to compensate for IoT devices' deficiencies in computing, processing, and storing big data [2].

The exponentially growing request for computationally intensive applications and services makes cloud computing necessary. Cloud computing gives users access to various on-demand services by judiciously using the hardware and software in cloud data centers [12]. Large-scale data centers are huge and costly; therefore, they are always built-in low-cost remote areas. Although cloud computing solves the computational and storage problem of IoT devices, it poses a challenge of high latency due to its distance from the IoT devices located at the edge of the network and poor quality of service (QoS) due to data traffic in the network between the cloud and

#### *A Survey on IoT Fog Resource Monetization and Deployment Models DOI: http://dx.doi.org/10.5772/intechopen.113174*

edge devices [10]. A new framework called fog computing was proposed to resolve the issues associated with cloud computing.

The concept of fog computing can be traced back to early 2009 when Satyanarayanan et al. [16] proposed using cloudlets to cope with the limits of cloud computing, especially the high and unpredictable latencies. These cloudlets provide the benefit of cloud computing close to the edge devices, and when there are no cloudlets, the edge devices communicate with the cloud directly. Cloudlets are used to support edge devices to carry out computational operations. This process of using cloudlets is called edge computing [17]. "Edge computing" and "fog computing" are often used interchangeably. However, there are similarities between them. It's essential to identify that edge computing does not view the overall service as consisting of a hierarchy of nodes with the cloud also included; instead, the overall service is performed by a close-by cloudlet [17]. Due to this, Open Fog Consortium differentiates fog and edge computing, highlighting that fog works with the cloud and is hierarchical. In contrast, the edge works independently of the cloud and is restricted to several layers. Hence, it is important to note that, though there are similarities between the two concepts, they were designed for different contexts; nevertheless, they are both growing towards an inevitable convergence [18–21].

FC extends the cloud-computing paradigm to the network edge. Formally, fog computing (FC) is defined as the virtualization of network architecture that "uses one or a collaborative multitude of end-user clients or near-user edge devices to carry out a substantial amount of storage (instead of stored primarily in cloud data centers), communication (instead of routed over backbone networks), control, configuration, measurement, and management" [22]. Fog computing is proposed to enable computing directly at the network's edge, which can deliver new applications and services, especially for the future of the Internet of Things. Fog computing uses fog nodes at the edge to interact with IoT devices.
