Modern high-load IoT applications with thousands of devices across multiple locations tend to introduce additional complexity to infrastructure in multiple areas.
Here are a few examples.
An application should work across multiple regions, cloud providers, and on-premises data centers.
This requires an advanced network configuration, as a cheap VPN link between sites could be a bottleneck for the performance of the whole application.
In the classic architecture, application logic is usually located on the server in the central cloud. But IoT applications tend to work with a considerable amount of data: video, photos, sensor logs, etc.
Transferring all this data to a central cloud may be a reason for high costs and low application performance.
To solve this problem, we can process the data on the local (or nearest) edge data center and transfer only relevant data to a central cloud.
Security is critically important with a vast network of IoT devices.
The data passed by IoT devices should be encrypted at rest and isolated so that third-party services, IAM groups, databases, etc. cannot access it.
The physical network security of the IoT low-level subnets is crucial so there can be no unauthorized access to these devices.
IoT Device Software Updates
Classic web applications have one huge benefit: as deploying new functionality to applications is straightforward, you only need to update backend services and deploy new static files.
On other hand, IoT brings additional complexity here in that you must take care of firmware updates. Fortunately, cloud providers give you instruments to simplify the CD process for IoT devices. For example, AWS Greengrass allows for IoT firmware updates with a few clicks of a mouse.
IoT Offline Work & Data Synchronization
IoT offline work is essential.
It's not a great idea to suspend a device when losing an internet connection or stop the whole edge location with connectivity problems of the central cloud.
We must take care of the offline work and data synchronization after restoring the connection.
Unfortunately, we don’t have a silver bullet architecture here.
Instead, an architect should decide how vital data consistency is and how the reconciliation process will work for each application.