The Internet of Things: An Introductory Tutorial Series
In this series of post, the author will be presenting a set of Internet of Things technologies and applications in the form of tutorial in chapter form. Basic concepts are covered with an approachable style, not heaped in technical terms.
By John Soldatos, Internet of Things and Smart Cities Expert.
The Internet-of-Things (IoT) is gradually becoming one of the most prominent ICT technologies that underpin our society, through enabling the orchestration and coordination of a large number of physical and virtual Internet-Connected-Objects (ICO) towards human-centric services in a variety of sectors including logistics, trade, industry, smart cities and ambient assisted living. In a series of post, I will be presenting a set of internet-of-things technologies and applications in the form of a series of tutorial in nature post.
The IoT paradigm is enabling the vision of pervasive & ubiquitous computing, which was back in the 90's envisaged to be a direct consequence of the rapid prolifration of computing devices. Indeed, following the era of super-computing (where a few fat computing systems served many users (many-to-one)) and the era of personal-computing (where each user had its own personal device (one-to-one), we are already in the era where each human individual enjoys services based on multiple internet-connected computing devices (such as laptops, mobile devices, multi-purpose sensors, home gateways). Hence, the IoT revolution is indeed propelled by the exponential increase of the number of connected devices, which is (according to CISCO) estimated to reach 50 billion devices in 2020.
In our Internet-of-Things (IoT) introduction we highlighted Wireless Sensor Networks (WSN) and Radio Frequency Identification (RFID) as two of the most prominent IoT technologies. Indeed, these two technologies can be considered as the forerunners of IoT. During the previous decade, IoT was in most people's minds directly associated with WSN and/or RFID, and we can be sure that there is still is. Although there is a host of articles, but also dedicated books introducing and presenting these two technologies, I thought there is merit in briefly discussing these them as part of an IoT tutorial. The rationale is that they are key to understanding more complex IoT concepts and technologies, but also the structure of non-trivial IoT systems, which are very likely to comprise RFID or WSN components.
Emerging and future Internet-of-Things (IoT) systems will increasingly comprise mulitple heterogeneous internet connected objects (e.g., sensors), which will be operating across multiple layers (e.g., consider a camera providing a view of a large urban area and another focusing on a more specific location within the same area). Likewise, IoT applications will have to collect and analyze information from multiple heterogeneous objects, or even to compose services based on the interactions of multiple objects.
The advent of cloud computing has acted as a catalyst for the development and deployment of scalable Internet-of-Things business models and applications. Therefore, IoT and cloud are nowadays two very closely affiliated future internet technologies, which go hand-in-hand in non-trivial IoT deployments. Furthermore, most modern IoT ecosystems up-to-date are cloud-based, as will be illustrated in subsequent chapters of the tutorial. Prior to describing the essence of IoT and cloud computing integration, we briefly introduce the main cloud computing concepts. Αn in-depth presentation of cloud computing can be found in relevant textbooks such as Mastering Cloud Computing by Rajkumar Buyya et. Al.
Indeed, within an IoT cloud infrastructure, multiple IoT applications can be developed and deployed independently. Nevertheless, in most cases there is no easy way to combine data and services from diverse IoT deployments, even in cases where these deployments concern similar or even the same application domain. Consider for example two independent IoT smart energy deployments integrated in the same cloud. Even though it is very likely that their data are similar, there is no easy way to combine them in the scope of a new added-value application e.g., an application calculating the environmental performance or energy saving gains achieved based on both deployments. This difficulty is due to the heterogeneity of the data formats of the two deployments, but mainly due to their diverse semantics as well.
In previous chapters we illustrated how cloud computing enables nowadays IoT applications to benefit from its capacity, scalability, elasticity and pay-as-you-go nature. During recent years a number of IoT/cloud deployments have demonstrated the merits of integrating IoT and cloud. Nevertheless, the proliferation of IoT applications, including BigData applications that comprise IoT streams seems to drive conventional centralized cloud architectures to their limits. For example, in large scale applications, the integration of millions IoT streams in the cloud leads to very high bandwidth consumption, significant network latency and the need to store a large amount of information with limited (or even zero) business value. This is typically the case when sensor data that does not frequently change (e.g., temperature information) is streamed in the cloud. Likewise, IoT applications are increasingly asking for higher flexibility in handling multiple distributed and heterogeneous devices, in a way that provides scalability and effective handling of data security and privacy, especially in cases where users need to limit access to their private data.
Apart from applications (such as the above-listed ones), whose business logic is the IoT data processing itself, there are also other IoT applications which focus on actuation and real-time control rather than on providing data to their end-users. Typical examples of such applications including for example CPS systems controlling robots in manufacturing plants or actuators in connected cars applications. Despite their emphasis on control (rather than data provision) these applications are in most cases also driven by IoT data processing, since decisions are usually based on the collection and analysis of IoT data from different data sources.
In principle IoT data analytics bears several similarities to BigData analytics. The chief differences lie mainly in the different nature of IoT data, when compared to typical BigData problems that deal with large volumes of conventional transactional data. As already outlined IoT data are typically associated with high velocity and feature a streaming nature. Therefore, while a great deal of BigData analytics problems are served by traditional DBMS infrastructures that tore data in finite and persistent data sets, IoT analytics problems are typically better served by streaming databases treating/processing data as multiple, continuous rapid and time-varying data streams. Hence, conventional BigData infrastructures (such as Hadoop/HDFS and MapReduce systems) are not commonly used for IoT analytics, due to their high-latency and inability to deal with high velocity data. On the other, data streaming infrastructures (such as the open source Apache Spark and Apache Flink systems) are more appropriate for IoT analytics as they can deal with transient streams, continuous queries and sequential access to the data, while at the same time providing the means for handling unpredictable data arrivals in the scope of memory-bounded environments.