Cloud Messaging
Best Practices
Implementing an efficient data communication design is crucial for successful IoT solutions. When managing a large pool of devices, excessive cloud communication can result in high costs, poor performance, and scalability issues.
The Ioto cloud solution offers powerful communication mechanisms such as MQTT messaging and transparent database synchronization. However, if used indiscriminately by sending excessive or redundant data to the cloud, it can compromise your solution and lead to throttling.
To protect your devices, customers, and the service, Ioto enforces data limits. If a device or group of devices sends too much data, Ioto will throttle (slow down) incoming data from those devices. Persistent overuse can result in the offending devices being disconnected from the network.
Follow these best practices to ensure a successful IoT strategy:
- Only send necessary data to the cloud: Limit cloud communication to data that is required at the cloud. Don't send data that is never accessed by the cloud.
- Send only changed data: Avoid redundant data transmission by sending updates only when data changes. If a data item has only one changed field, consider splitting into fixed and changing data items.
- Separate configuration data from runtime statistics: Define database entities to differentiate between the two. Configuration data changes infrequently and can be synchronized to the cloud when updated. Statistics can be buffered and can be sent less frequently.
- Utilize automatic metric creation: Take advantage of automated metrics for efficient monitoring. Ioto can transparently create metrics from database data that can be graphically displayed or used for automated actions.
- Synchronize database tables in one direction only: Ensure that synchronized tables are not bidirectional to prevent conflicts. Split tables to be synchronized up to the cloud, or down to the device, not both.
- Avoid messaging loops: Implement safeguards to prevent loops in your messaging system.
- Monitor throttle messages: Listen for Ioto throttle messages and adjust your device behavior accordingly.
When designing your data strategy, it is helpful to categorize your data into domains. The Ioto database supports easy creation of entities that can wrap the various categories or concerns.
A helpful segmentation is:
- Deivce configuration that must be shared with the cloud (changes infrequently)
- Local state that does not need to be sent to the cloud (changes frequently)
- Error conditions and records
- Performance statistics
By segmenting data that is local to the device and the data that must be sent to the cloud, you can achieve a higher performing solution.
Device Moding
It may also be a useful strategy for devices to be moded as:
- Under focussed management
- Self-managing
When a device is under focus, it can send more data to the cloud to permit live monitoring, issue diagnosis and resolution. When a device is self-managing, it should communicate only essential data with the cloud. This can permit very high-bandwidth device communications when required, but still maintain a low overall message traffic rate.
Device Cloud Limits
Ioto defines data limits to protect you, your devices, customers and the service. If a device or devices send too much data to the cloud, Ioto protects you and your customers by throttling (slowing) incoming data from offending devices.
Depending on your Device Cloud plan these limits and enforcement policies may vary.
Data Traffic
The amount of data you send to the device cloud is measured as the number of KBytes sent on average per device per hour. This traffic is then compared with the limit for your device cloud.
As you connect more devices, your data limit scales automatically with the number of devices connecting to the cloud. What is measured is the average data traffic over your entire pool of connecting devices.
For example, if you have 100 devices and a limit of 60 messages per device per hour, this means that your pool of devices can send up to 6,000 messages to the cloud per hour.
Ioto supports short-term burst traffic above the limit, but if your sustained, aggregate traffic exceeds your limit, the offending devices will have their sending rate throttled.
Data Limits
The data limits vary depending your your device cloud type and plan.
For Hosted device clouds and the Evaluation device cloud, data limits ensure the cloud infrastructure is not monopolized by any one device, set of devices or users.
The evaluation cloud is a shared device cloud that is intended for the short term evaluation of a few devices. It has higher limits, as it is typically used with few devices and consequently lower aggregate device pool limits.
For a Dedicated cloud, you are the sole user of the cloud running in your own AWS account. In this case limits are advisory and can be increased if required. Contact support if you need a limit increase.
Cloud Limits
Device Cloud | Limit |
---|---|
Eval Cloud | 60 messages (1K) per device per hour |
Hosted Cloud | 10 messages (1K) per device per hour |
Dedicated Cloud | 100 messages (1K) per device per hour |