Dec 12 2020 02:52 AM
Dec 12 2020 02:52 AM
I'm getting prepared for my first Azure IIOT project. Idea is to connect several sensors from the production floor and store the data in Azure. I'm trying to understand Event Hub and Partitioning better. In my approach, I want to get the data from say 10 sensors every 10 seconds and send to the cloud. I'd like to get advice should I bundle all the data into a single message or should I send individual packets for each sensor? If I should send individual packets should I consider using more than one partition to handle this? I'm trying to set up the infrastructure for future expansion also. So perhaps You could advise me if I should create separate Hub for each production line? Perhaps YOu have an example of well design manufacturing IOT infrastructure You could share?
Dec 14 2020 05:24 AM
@konradpsiuk, MS Azure provides a robust infrastructure for the purpose. I would suggest using Azure's well-Architected framework with the sample reference Architecture that can be found here. Answering your question, IoT Hub is your entrance point to the cloud (i.e., Cloud Gateway) and acts as a message broker ingesting the messages from the IoT devices (sensors). The number of partitions can be set from the very beginning (when you provision the Hub) and can't be changed later. They're used to eliminate the contentions when reading the messages and writing them to the event streams. Most of the Hubs would only need 4 partitions. However, to be certain, I'd recommend you to skim through the following topic: How many partitions do I need?
With regard to scalability, consider the IoT Hub quotas, throttling, and limitations here. The free tier only allows 8000 messages a day (and simple math shows that it's not even enough for 1 sensor and your intent to send a message every 10 seconds). It's good for the testing purposes though (but you have to be aware of the message size limit there, which is 0.5Kb). From the scalability perspective, the IoT Hub can easily be scaled just by moving to the next consumption tier (B or S).
The best practice suggests you would need a distinct infrastructure for the DEV, TEST (STAGING) nad Production, although, you don't need to provision everything at once from the very beginning. Standup your DEV environment first and make sure you're comfortable with it.
Let me know if you have any further questions.
ps. If I answered your question, please don't forget to mark it as answer/like it.