Close or Esc Key

Arduino Projects   |   Raspberry Pi   |   Electronic Circuits   |   AVR   |   PIC   |   8051   |   Electronic Projects

IOT Cloud and Services : IOT Part 12

Written By: 

In the previous tutorial, the application layer protocols were discussed. With that discussion, the necessary foundation to understand the communication network in IOT was covered. This tutorial will discuss the other end of the IOT system that lies opposite to the device nodes. That is the 'cloud'. 
IOT is lot about integrating embedded electronics and IT services. This isn't possible without the cloud. The cloud is the soul of any IOT system. Cloud forms the virtual world in an IOT ecosystem while the embedded devices all together constitute the physical world of the IOT system. These two lie at the extreme ends of IOT interconnected by the internet. The cloud has the great responsibility as a service provider in any IOT application. Basically, cloud is a remote server that host applications, services and platforms to render services and solutions within an IOT environment. 
Unlike a typical server, a cloud need to be more robust and responsive. Within an IOT ecosystem, there could be billions of devices which could be generating gigabytes  or terabytes of data at any time. The data from these billions of devices could have great deal of diversity and volatility. A cloud must be efficient enough to handle such scalability and diversity of data and be able to produce useful insights from that data in real time. The IOT devices producing this data may be located at geographically dispersed locations. In fact, they can be anywhere around the globe. So, a cloud must be able to connect, communicate and direct data and information on an " Any Time, Any Place & Any Thing " basis. 
IOT Cloud Challenges
IOT Cloud Challenges
Essentially, any cloud (server) must have the following capabilities - 
1) It must be capable to access, store, analyze, process and monitor big data. For example, even Gmail is a cloud service that is utilized by computers, laptops and mobile devices. A Gmail user can register an account, access her account, send or receive emails from anywhere and any device. There are billions of Gmail accounts and each account could have hundreds and thousands of sent and received mails. Similarly, IOT services may be accessed by billions of devices which could have lot of data to share and exchange over the network and across the cloud. There can be many other real-life examples of cloud based services and applications. 
2) Data must remain secure and protected on a cloud. The data stored on a cloud could be private or even confidential. It must be securely stored over the cloud so that only an authentic user or device could access it. Also, while communicating over the network, it must remain secured so that it could not be hacked by an attacker. 
3) The cloud must be capable of providing inter-service and inter-device communication. It is the cloud that is responsible to manage devices and manage data sharing and exchange among the devices. It is also responsible to synchronize data communication between the devices so that an IOT application could be successfully executed. It may also need to connect and communicate with other clouds, cloud services and applications to execute an application. 
4) The cloud despite all the complexities must be cost effective. The big data and big data analytics requires abundant IT resources and efficient softwares. A cloud must be able to optimize the requirements of IT infrastructure, so that the purpose of an IOT system is fulfilled in the most cost effective manner. 
The storage, processing and analysis of data on a cloud to derive useful insights is collectively known as 'Cloud Computing'. Cloud Computing has a major role in IOT. It involves delivering data, applications, photos, videos and much more things over the Internet to the cloud. Cloud computing and Internet of things are tightly coupled to each other. Cloud computing acts as a paradigm for big data storage and analytics. While IoT is exciting on its own, the real evolution comes from combining it with cloud computing. For example, sensory data can be uploaded and stored with cloud computing, later to be used intelligently for smart monitoring and actuation with other smart devices. 
Cloud computing in IoT features rapid elasticity which means that users can readily scale the services to their needs. They can easily and quickly edit the software setup, add or remove users, increase storage space, etc. These characteristics further empower IOT by providing elastic computing power, storage, and networking.
Architecture of IOT cloud - 
So, when the challenges for an IOT cloud are now known, it's time to discuss the underlying architecture of a cloud. The architecture underlines all the background processes that usually remain hidden and abstracted. A typical cloud architecture caan be represented by the following block diagram - 
IOT Cloud Architecture and Processes
IOT Cloud Architecture and Processes
Any cloud is designed to perform the following basic processes - 
1) Data Ingestion
2) Pipelining 
3) Data Storage
4) Data Analytics 
5) Application and Presentation
Data Ingestion - The first thing that a cloud need to do is collect data from the network. The process of importing data from IOT devices to the cloud is called data ingestion process. It aggregates the data from IOT devices and distributes the data for further processing. It also works in reverse direction by distributing data over to the IoT devices. Clouds use certain protocols when receiving the data from the network as well as when transmitting the data to the devices. This process eventually transmits all the collected data to a central server to further process and deliver useful insights for some actions. 
Pipelining - After the data has been collected, it is the responsibility of IOT cloud to manage the data in a proper way. The process of pipelining includes several tasks as follow - 
Device Registry - To manage the data onto the cloud, there is a section for registration of devices with their unique IDs so that both users and cloud can uniquely identify the devices and access those devices.
Transforming Data -  After the data has been arrived to cloud, it may need to be converted to other formats. For example, the signal voltages acquired from a temperature and humidity sensor may need to be converted to a calibrated unit of temperature and humidity.
Aggregating Data and Computing - After converting and combining data, some kind of analytics can be applied on it like distributing the data across multiple devices to avoid acting on a single device.
Enriching Data - The data generated by a device can be combined with the metadata about the device or with other datasets. For example, the temperature data can be used for further analysis to derive useful insights.
Moving Data - The processed data can be passed on to be stored in one or more storage locations or caches. 
Data storage - The Data from the physical world comes in various forms. Cloud Platforms provide enough storage to store the data in an structured manner. The Cloud platforms provide reliable, high-performance and secured storage space. The bulk amount of data can be stored on a cloud and can be accessed remotely at anytime from anywhere in the world.
Real Time Data Analytics - After the data storage, cloud platforms can perform some kind of analytics on that data and convert it into feasible actions for human use. Cloud Platforms analyze information and process the information with some kind of mathematics or logic i.e. converting the data into information in order to perform automated tasks.
Application and Presentation - The cloud after processing the data, can send the data to other IOT devices to perform some tasks based on that or can provide the data to other computing engines.
These are the basic processes that are carried out at and by an IOT cloud. IOT cloud performs all these processes in the background such that the actual implementation details remain hidden from the end users and devices. Ultimately, the purpose of an IOT cloud is to transform data into small chunks and understand the each and every part of the data, deeply process the data and drive productive, cost-effective actions from this whole process. The cloud acts as a brain for the Internet-based services. 
IOT Clouds as Service Providers 
The clouds are the service providers in an IOT environment. There are many as-a-Service roles of cloud computing. All these as-a-Service roles are cloud services rendered by the cloud platforms.  
IOT Cloud Services
IOT Cloud Services
Infrastructure-as-a-Service (IaaS) - IaaS comes at the bottom of the cloud computing services stack in which IaaS provider provides fundamental building blocks of computing resources to the clients over the Internet. Fundamental building blocks involve networking resources, hardware, software, storage and many other IT infrastructure components. IaaS provider grants access to all these resources to the clients and is responsible for housing, operating and maintaining all these equipments. IaaS users pay on a per-use basis, typically by the hour, week or month. Some ISP providers also charge users according to the storage space used by the users. The main advantage of IaaS service (specifically for a user) is that IaaS vendor/provider is responsible for configuring  and maintaining the infrastructure. So, users or enterprises do not need to worry about infrastructure upgrades and they can focus on the task or application instead. Some of the well-known IaaS providers are Amazon Web services, Windows Azure and Google Compute Engine.
Platform as a service (PaaS) - PaaS comes in between the IaaS and SaaS cloud computing services in which PaaS provider provides a platform to the users to develop, run and manage applications without the complexity of building and dealing with the infrastructure of the platform. In short, PaaS is typically associated with developing and launching an app in a constrained environment. PaaS user manages applications and data, while the provider handles the runtime, middleware, operating system, virtualization, servers, storage and Networking. 
Development tools provided by the IaaS provider are customized according to the need of the user. The main advantage of using PaaS service is that it allows for higher-level programming with extremely reduced complexity at the user end as it has built-in infrastructure stack which makes the software end more manageble and easily accessible. Some examples of PaaS solutions are the “Google App Engine” system, “Heroku” which operates on top of the Amazon Web Services and “” built as part of the Software as a Service offering.
Software as a Service (SaaS) - The top layer of the cloud computing is SaaS in which the end user operates the software applications only like email, word processing etc. Instead of installing and maintaining software, the users simply access these software via Internet. They do not need to worry about complex software development and hardware management. These applications run on the SaaS provider’s servers. The users only request to access them. The provider manages the access of the application and its security, reliability and performance. Some of the most well-known SaaS providers are “Google Apps”, Microsoft’s business productivity online suite etc.
Popular IOT Cloud Services - 
Some of the popular public cloud services are as follow - 
1) Google Cloud IOT (PaaS)
2) Amazon AWS (PaaS)
3) ThingSpeak (SaaS)
]]>Google Cloud IOT ]]>- Google IOT cloud is a set of fully managed and integrated services that allow to easily and securely connect, manage and ingest IOT data from globally dispersed devices, process and analyze the data in real-time, implement the operational changes and take actions as needed. The Google Cloud IOT has the following features - 
a) End-to-End Security - It enables end-to-end security with certificate based authentication and TLS 1.2 transportation security. 
b) Integrated Services - It seamlessly move IoT data across Google Cloud services.
c) Advanced Data Analytics - It performs ad hoc analysis using Google BigQuery, visualize data using Cloud Data Studio, and derive intelligence using Cloud Machine Learning.
]]>Amazon AWS IOT]]> - Amazon AWS is a managed cloud platform that provides access to the IoT devices to securely connect and interact with the cloud applications and as well as other devices. AWS IOT can handle up to billions of devices and trillions of messages securely with low latency and low over head. The AWS IoT supports communication protocol and standards like HTTP, MQTT and websockets. Communication is secured using TLS/SSL security.
Note That - Some of the other PaaS Cloud platforms like Microsoft azure IoT suite, IBM Watson IoT, Salesforce IoT cloud, Carriots are also worth mentioning. 
]]>Thingspeak]]> - Thingspeak is a software as a service open source platform for IoT solutions. It provides API to store and retrieve data from IoT devices over HTTP protocol. ThingSpeak has integrated support of numeric computing software MATLAB from MathWorks. It allows users to upload and visualize the real time data from IoT devices. For example, a developer can publish the surrounding temperature and humidity data as well as time logging on thingspeak.
IOT Operating Systems 
There are many operating systems which have been specifically designed for IOT. Some of them are as follow - 
]]>Tiny OS]]> - Tiny OS is the most popular and the oldest embedded operating system specifically designed for low-power devices such as wireless sensor network, home automation and smart meters etc. TinyOS is written in a programming language called “nesC" (pronounced as nes-see)”. The motivation to design this OS includes:
a) Limited Resources - Tiny OS operating system is intended to use with devices that have less RAM, low cost and reduced size.
b) Low Power - It has been designed considering wireless sensor networks that essentially need to operate on low power.
c) Flexibility - The OS provides flexible modularity between hardware and software.
]]>Contiki OS]]> - Contiki is also an operating system specifically designed for Internet of Things applications. Contiki OS has full supports of IPv6 and IPv4 along with low power wireless protocols like 6LowPAN, RPL and CoAP. Contiki OS is written in C language. Contiki is designed to run on the hardware devices which have low power, less memory and less communication bandwidth. It supports per-process optional preemptive multithreading.
The difference between Tiny OS and contiki operating system is that TinyOS is better suited when resources are really limited and every little bit of saved memory or computing power can help. Contiki might be the better choice when flexibility is most important. For example, when the node software has to be updated often for a large amount of nodes. 
]]>RIOT]]> - RIOT is also an operating system for Internet of things devices.  It is based on a micro kernel and designed for energy efficiency, hardware independent development and a high degree of modularity. It has support for 6LoWPAN, IPv6, RPL, TCP and UDP. It is built for maximum energy-efficiency and low resource requirements like for operating at minimum RAM about 1.5 Kb and maximum ROM about 5Kb. It has ability to operate on several platforms (Embedded devices and common PCs). It allows standard programming in C or C++ and can run both 16 and 32-bit platforms. It has real-time capability due to ultra-low interrupt latency (~50 clock cycles) and priority-based scheduling.
In order to integrate cloud in the IOT, security, privacy and reliability of data is an important consideration. The data must be secured from any type of attack on the internet. In the next tutorial, IOT security will be discussed.