The architecture of an end-to-end IoT application
Now that we know more about the IoT, we have seen its principles and some examples of different applications, the time is good to dig more into the technical aspects with the analysis of the architecture of an IoT application.
We have already introduced IoT nodes, cloud platforms, and applications. A picture is better than a thousand words to explain how they work together and the following diagram shows the architecture of an IoT solution in its entirety:
Figure 1.3 – High-level architecture of an IoT system
There is an important difference between cloud platforms and cloud applications. Cloud platforms implement communication, user and device management, data storage and security, and other basic services; cloud applications implement the logic of the application, the dashboards, and all the specific aspects of the application.
In this sense, the Arduino IoT Cloud can be considered a cloud application running on the AWS cloud platform.
Thanks to the connectivity offered by the internet, you may set up even a complex IoT solution that features many different functionalities, just by exploiting multiple cloud applications, frameworks, and services already implemented by third parties and interconnected via the internet. This means that you don’t need to develop or configure everything from scratch and you may save time and headaches; it also explains the reason why multiple cloud platforms and cloud applications are visualized in the preceding figure.
Examples of these functionalities can be Single Sign-On (SSO), a user authentication service that allows a user to use one set of login credentials (e.g., name and password) to access multiple applications – such as social media platforms, and tons of others. You just need to decide what you need, search on the internet for the preferred provider, and easily integrate those features in your application without the need to program them. This is also valid for the Arduino Cloud platform, which offers a couple of different ways to interface with third-party applications, as we’ll see in Chapter 12.
The gateway is the last type of module we need to talk about. Gateways support the connection between nodes and cloud platforms. Or, more precisely, they are the bridge connecting nodes to the internet and allowing the exchange of data between nodes and cloud applications. There are many different types of gateways, characterized by the communication technologies they implement.
Your Wi-Fi router is a perfect example of a gateway: it’s connected to the internet and it accepts connections from other devices via Wi-Fi. It converts the Wi-Fi device into the data transportation technology of your internet provider (landline, Ethernet, or fiber-optic cable).
Gateways may also implement additional functionalities, such as data filtering, protocol conversion, and security. Every IoT application includes gateways in the architecture, even when they are not directly managed by you or the programmer of the solution.
Let’s consider an application with nodes using cellular connectivity. It may look like the nodes are directly connected to the internet, but it’s not the case. In fact, the nodes connect to the cellular network as well as dedicated gateways managed by the network provider. It’s important to clearly understand the presence of all the components in the architecture because each part can be a point of weakness in the case of an issue and can make the troubleshooting longer and more complex.