Today, relevant data are typically delivered to cloud-based servers for storing and analysis in order to extract key features and enable enhanced applications beyond the basic transmission of raw data and to realize the possibilities associated with the impending Internet of Things (IoT). To allow for quicker, more efficient, and expanded privacy-preserving services, a new trend called Fog Computing has emerged: moving these responsibilities to the network's edge.
Traditional centralized cloud computing paradigms confront new problems posed by IoT application growth, including high latency, limited storage, and outages due to a lack of available resources. Fog Computing puts the cloud and IoT devices closer together to address these issues. Instead of sending IoT data to the cloud, the fog processes and stores it locally at IoT devices. Unlike the cloud, fog-based services have a faster reaction time and better quality overall.
Fog Computing, Cloud Computing, and their connectivity with the IoT are discussed in this book, with an emphasis on the advantages and implementation issues. It also explores the various architectures and appropriate IoT applications. Fog Computing, Cloud Computing, and Internet of Things are being suggested as potential research directions.
Features:
A systematic overview of the state-of-the-art in Cloud Computing, Fog Computing, and Internet of Things
Recent research results and some pointers to future advancements in architectures and methodologies
Detailed examples from clinical studies using several different data sets
Cloud Computing manages, stores, and provides access to many resources such as storage, network, and computing resources over the Internet using a pay-as-use policy. Using this technology, users donât have to manage a computerâs hard drive or physical servers for themselves. These servers and resources can be accessed over the Internet along with the software and databases that run on those servers. All these resources are maintained, upgraded, and run by the cloud servers which are spread across the world through data centers. The Cloud Computing overview is represented in Figure 1.1.
All the computing resources such as storage, processing, and applications are provided to the users on-demand through the Internet services by Cloud Computing. Many organizations nowadays tend to operate their business transactions in a way that reduces the cost by accessing the resources over the Internet. Cloud Computing provides efficient computing by centralizing all the resources and making them available for the users in three ways. First is by providing the computing resources along with storage and network. Second is by providing a platform to develop the products. Third is by providing the application software which is maintained by the cloud. In addition to that, it also provides four ways to deploy the cloud. First, where only the organization can access, i.e., private model; second, all the people can access without any restriction, i.e., public model; third, the combination of private, and public, i.e., hybrid model; and fourth, a model shared by many and different organizations, i.e., community model. It also provides on-demand virtualized services with dynamic computing infrastructure which are represented in Figure 1.2.
The gaining popularity of the cloud had increased requests from users tremendously. To meet the requirements of the client and also to boost the cloudâs performance, all the virtualized resources provided as a service in the cloud need to be optimized. Resource Allocation (RA) is a mechanism to assure the fair and equal distribution of requests to the servers to avoid the situation of over usage (requests accessing the same machine) and under usage (idle machines) of resources, shown in Figure 1.3. This mechanism also ensures the satisfaction of the user by providing the requested configuration details by the service provider. It balances the load effectively by scaling the resources to achieve optimal utilization of the resources, thereby increasing the response time and also reducing the cost.
Cloud Computing is developing rapidly. The gaining popularity of the cloud mainly depends on few important technologies such as virtualization and resource management.
1.2 Resource Management
Resource management includes the overall maintenance of the heterogeneous resources, allocation of the resources to requests, and also maintaining the overall process of request servicing. As there is an increase in cloud users, there will be an increase in the requests also. To maintain the balance between user demands and resource supply, a proper strategy for RA is needed through resource management. Resource management is based on the userâs request the service provider allocates the required resources to the customer.
Before doing that, a series of steps are involved in the process of RA. The customer and the service provider agree about the resource provisioning called SLA (Service Level Agreements). Based on the terms specified in SLA, the mapping of the resources and requests is done. If the number of requests is increasing, dynamically the resources are adjusted to serve the surge of incoming requests, and RA is done. After allocating the resources, the machines are modeled virtually to meet the requirements specified by the user, and the processing of the request is scheduled. The entire process of resource management is depicted in Figure 1.4.
In the schedule of processing the request, the appropriate resources for the process completion are identified and apt resources among them are selected by the scheduler. In addition to that, the scheduler should also try to approximate the future requests and should be ready to process those upcoming requests also.
RA can be done effectively with the approach called virtualization. After allocating the resources, based on the user configurations a separate machine is set up and it is provided to the user for the requested service.
1.3 Virtualization
Virtualization is a process of allocating the required resources for users virtually via VMs. The resources that can be allocated are the operating system, CPU, storage devices, network, etc. Instead of giving the real hardware/physical resources, virtualization takes care of providing the resources logically to the user by creating an abstraction layer over the bare metal hardware. The layer over the hardware called a hypervisor or VM monitor takes care of creating several replicas of machines. Using the concept of virtualization, multiple copies of VMs with different configurations can be created and also can be hosted on a single machine to serve multiple requests. Once the user submits the specific requirements, the VM monitor ensures the suitable allocation of the VMs for the execut...