Internet of Things (IoT) is no longer just a hot topic, It is everywhere around us, and there are so many platforms and companies that provide cloud IoT services such as Amazon, Microsoft, IBM and many more.
They provide management, and automation of connected devices within the Internet of Things universe through the cloud.
In this post we will try to discover the difference and similarities of most two use platforms.
Amazon AWS IoT and Microsoft Azure IoT
AWS IoT is a fully managed platform for building complete IoT solutions and it provide an easy way to manage “Internet of Things” devices.
The Devices communicate with applications running in the cloud over HTTP, MQTT and Web-sockets which is secured using TLS.
It also supports cloud-to-device and device-to-cloud reliable messaging scenarios, even when the device is not connected, messages are processed in 512 byte blocks with each block representing a single message up to a maximum of 128 KB.
AWS IoT comes with a declarative rules engine that is used to transform and route IoT traffic to a specific location or endpoint such as an S3 bucket or Lambda function.
It is also possible to direct data to Kinesis Streams which can run real time analytics via applications written using the Kenisis Client Library. AWS has also recently announced Kinesis Analytics which can be used to perform stream analytics using an SQL-like language.
Each device that connects with AWS is represented as a Device Shadow. A device shadow maintains an identity and last known state of a specific device and provides a channel to send and receive messages.
From Microsoft Azure Doc
The Azure Internet of Things (IoT) is a collection of Microsoft-managed cloud services that connect, monitor, and control billions of IoT assets. In simpler terms, an IoT solution is made up of one or more IoT devices and one or more back-end services running in the cloud that communicate with each other.
Azure provides several IoT related services, but we can identify two primary solutions for building IoT platforms:
1- Azure IoT Central
2- Azure IoT Hub (we will focus on this)
This service allows you to connect from your devices to an IoT hub, and monitor and control billions of IoT devices. This is especially useful if you need bi-directional communication between your IoT devices and your back end. This is the underlying service for IoT Central and IoT solution accelerators.
IoT Hub service allows you to manage and connect from your devices to an IoT hub, and monitor and control billions of IoT devices. This is especially useful if you need bi-directional communication between your IoT devices and your back end.
It supports AMQP, MQTT, and HTTP. If the device does not support one of these protocols then it’s possible to adapt both incoming and outgoing traffic using Azure IoT Protocol Gateway.
Data received can be sent to Blob Storage for archive or offline processing, or sent to an Event Hub endpoint for immediate processing. There is also good support for IoT monitoring and diagnostics.
Azure also provides Event Hubs which is an option for device-to-cloud scenarios and may be a better solution for basic large scale device telemetry ingestion. Event Hubs can ingest large volumes of messages over AMQP and HTTP.
Event Hubs is often used with Azure Stream Analytics for real-time analysis of device data. It uses a SQL-like language to perform queries over an incoming data stream and can enrich data by integrating other Azure services such as Azure Machine Learning and Azure functions.
Stream Analytics can output to most Azure data storage solutions or directly to Power BI for visualizations, Event Hubs, or even to another Stream Analytics stream.
It is also possible to stream data to Apache Storm a popular open source streaming analytics platform. Azure is the only provider of the three to offer Apache Storm as a fully managed service.
Microsoft is clearly being careful to ensure that Azure IoT can be used with any type of device. With the announcement of Windows 10 IoT core, a slimmed down version of Windows 10 designed specifically to run on IoT devices Microsoft are also positioning themselves as a whole solution IoT provider.
Microsoft Azure IoT pricing is based on the total number of messages per day. A message is defined as 4KB in size.
There are two tiers of pricing based on functionality: Basic and Standard. Within each tier more types and prices can be found, they are based on the number of message per day.
AWS IoT pricing is based on four components: connectivity, messaging, device shadow usages, and rules engine.
The metered message size for AWS is 5KB so it is more generous than MS for messaging.
Connect devices with each other and with web services.
Device shadow can be implemented on both platforms.
Support of billions of devices and messages.
Both platforms support bidirectional communication between devices and Hub.
Allow to apply routing to the messages.
Provide secure communication through TLS which allows mutual authentication as well.
Both support authentication based on X.509 certificates. It’s possible to use customer’s own certificates.
Support of protocols: MQTT and HTTPS.
Integration with other services.
The way of monitoring a device’s state is the same. Both store the state in back-end and it’s possible to query the recent info at any time.
- The Relational database is SQL database.
- The No SQL database is DocumentDB.
- SQL Data Warehouse for the Data warehouse.
- TableStorage For table storage.
- Redis Cache for caching.
- Data migration Azure uses SQL Database Migration Wizard.
- The Relational database is RDS.
- The No SQL database is DynamoDB.
- AWS uses Redshift for the Data warehouse.
- SimpleDB For table storage.
- ElasticCache for caching.
- Data migration AWS uses Database Migration Service.
For Big data processing, Azure uses HDInsight, on the other hand Amazon uses Elastic MapReduce EMR.
For Data Orchestration, Azure provide us with DataFactory, and AWS has its own Data Pipeline
For the case of object storage, Azure has Blob Storage while Amazon has its famous S3 services.
For content delivery, AWS has a service called CloudFront, Azure has Content Delivery Network
Each provider offers starter kits together with different hardware manufacture. These kits are ideal to create prototypes and validate ideas.
AWS has in its partnerships Intel’s Edosen, BeagleBone, Microchip and Qualcomm Dragon.
Azure has more partners like Intel, Texas Instrument, ARM, MinnowBoard, RaspberryPi, Resin.io and Arrow’s Qualcomm Board
- Azure IoT provides you with the ability to create a custom protocol using Azure IoT protocol Gateway which serves as a middle-ware between device and hub.
- AWS uses mutual authentication, while Azure IoT hub uses server authentication only.
- Azure IoT hub uses Token base (SAS) per device (Microsoft special way to delegate access to resources in an user’s account), X.509 device certificate. On the other hand, AWS uses X.509 client authentication, Identity and Access Management (IAM )service, Cognito Service.
- Most of them supports the same platforms and languages in theirs SDKs. Although Azure IoT supports.NET SDK framework that is proprietary for Microsoft and well-known for its speed and software development kits.