What Cloud Platform Should You Pick for IoT? A Head to Head Between AWS and Azure

by: Radu Vunvulea, Software Architect

Nowadays IoT is appealing for everyone. These opportunities made the two biggest cloud providers on the market (Amazon and Microsoft) come up with IoT platforms and solutions. The main purpose of this article is to compare the current solutions from the perspective of features and capabilities.

The interesting thing that happened the last few years is the way IoT solutions evolved. In the beginning the solutions were oriented towards transportation and communication, but now the IoT platforms evolved and are integrated with systems that run on the edge and in the cloud, supporting the business needs.

X-Rays

Let’s take a look at the available solutions that Amazon and Microsoft offer. Both providers offer a central Hub that is used to establish and facilitate communication between devices and backend systems.

At device level, each provider offers a set of package libraries that allow clients to integrate their devices with the communication platform faster. At backend level, the basic functionality is almost the same, with some small differences. Most of the processing systems used for data crunching can be found at both providers.

It’s interesting how both platforms are positioned. Both of them are focused on telemetry and data collection from devices. Even if there is full support for communication (commands) from backend to device, complex scenarios or chatty devices might have some problems.

Don’t be shocked if you find a lot of similarities between these two solutions. The main focus of both providers is to fulfill the clients’ needs. Because of this, it is normal when a new feature is available on one platform, the other one to provide a similar one in a short period of time.

Overall, from the way both solutions are organized and the list of cores features, the offer is similar

Core functionality

Let’s take a look at the main features of each platform. This list represents the main core features that are available today. Starting tomorrow, this list might be incomplete, because a new functionality can be added anytime.

Device Management

From a device management perspective, both providers offer a similar list of features. You have the ability to specify the list of attributes of each device and have a device shadow into the cloud. A useful feature that can be found on both platforms is the ability to enable a device and control device capabilities. This is extremely useful when concepts like devices black list need to be supported.

Azure IoT Hub offers pipeline support for data that needs to be sent to the device, in comparison to AWS where this is not an out-of-the-box feature. An extra development feature is required for it.

Authentication and Authorization

Both providers offer good authentication and authorization mechanisms. For startups and small companies that are not using Active Directory (AD), AWS might be tempting, but Microsoft is very attractive when a corporate is using AD. Native AD support combined with token-based access for devices will simplify integration with legacy application that exists inside the company.

Communication Channels

The list of protocols supported by both providers starts with HTTPS, MQTT and AMQP. Be aware that Azure is very strict regarding HTTPS and HTTP is not supported anymore. If you need HTTP protocols between the device and Azure, they can be supported only with a custom gateway between the device and Azure IoT Hub.

SDK and programing language

AWS and Azure have a clear statement regarding this — to support all top platforms, starting from Node.JS and C (ANSI C99) to Java and C#. The SDK features and API are the same for all programing languages. Don’t expect to find a feature available only in a specific programing language.

Extra capabilities

The current IoT vision that is shared in the market is starting at device level and goes to Machine Learning, AI and Analytics solutions. Azure and AWS offer not only the same capabilities, but are using also similar if not even the same solutions. Hadoop, Spark and R language is something common for both of them.

Monitoring and Identity Registry

Azure stores all device information in the backend. The last device state can be queried in any moment. The state of the device is available in Azure IoT Hub together with the last known activity, with full control of the device (create, updated and delete).

The identity management in AWS is called Thing Registry and is equivalent to the one offered in Azure.

Device Communication

AWS and Azure supports bidirectional communication. The only difference is how this is supported. AWS supports this by using a rule engine. Devices that are connected to AWS IoT platform have a specific topic/subscription that plays the role of a message broker that sends messages to their devices. Each device publishes its state through publishing updates and stores it in a Thing Shadow.

Azure IoT Hub uses two different endpoints that are used to send and receive data from devices. Messages contain a timestamp and can expire after a specific period of time. The concept of Thing Shadow can be found also on Azure IoT Hub as Twin Device. Personally, I think that in this moment the Azure IoT Hub offers a more mature solution at a device communication level.

From a communication perspective, both providers offer the same feature, but implement it in a different way.

Security

Nowadays security is a hot topic. You will be able to find a lot of whitepapers related to this. You should remember that Azure IoT Hub relies on Transport Layer Security (TLS) protocol that offers an encrypted communication channel that guarantees data confidentiality. Customers can bring their own X.509 certificates. Besides this, services and devices are secured using access control and credentials that specify a list of permissions. This way, each device will have control over a specific list of actions.

AWS also relies on TLS for backend authentication with full support of mutual authentication. Clients have the ability to attach certificates to the device and policies.

Certified Hardware Boards

Each provider offers starter kits together with different hardware manufacture. These kits are ideal to create prototypes and validate ideas. Below you can find a list of the most important partners.

Application and Services

Each provider offers a collection of services to help their clients. The most important services offered by Azure (IoT Suite) around IoT are:

-Stream Analytics
-Machine Learning
-Power BI
-Azure Time Series Insights
-Azure Storage
-Azure Cosmos DB
-Azure Web Apps

The services offered by AWS cover the same functionality:

-DynamoDB
-Kinesis
-Lambda
-AWS S3

Pricing

This topic is pretty hot and complex. Calculating the E2E cost of an IoT platform is hard, especially when you need to make different assumptions (data volume, ingest, egress, number of messages, size, queries complexity etc.). The message size for AWS is 1KB in comparison to Azure where the message size is 4 KB. This can affect the cost level.

It seems that if you put all the costs together you might find that an IoT platform is 20–50% [1] cheaper on Azure than on AWS. Free tiers at communication level are offered by both providers.

Final thoughts

The best way to finish such an article is not with the writer’s opinion, because this might be irrelevant. I think that the most relevant information would be a chart that compares these two platforms.

[1]Refs: https://dzone.com/articles/iot-platform-selection-azure-vs-aws-vs-gcp-compari