Choosing the right cloud platform provider can be a daunting task. Take the big three, AWS, Azure, and Google Cloud Platform; each offer a huge number of products and services, but understanding how they enable your specific needs is not easy. Since most organisations plan to migrate existing applications it is important to understand how these systems will operate in the cloud. Through our work helping customers move to the cloud we have compared all three provider's offerings in relation to three typical migration scenarios:
- Lift and shift - the cloud service can support running legacy systems with minimal change
- Consume PaaS services - the cloud offering is a managed service that can be consumed by existing solutions with minimal architectural change
- Re-architect for cloud - the cloud technology is typically used in solution architectures that have been optimised for cloud
Choosing the right strategy will depend on the nature of the applications being migrated, the business landscape and internal constraints.
In this series, we're comparing cloud services from AWS, Azure and Google Cloud Platform. A full breakdown and comparison of cloud providers and their services are available in this handy poster.
We have grouped all services into 9 categories:
- Storage and Content Delivery
- Analytics & Big Data
- Internet of Things
- Mobile Services
- Security & Identity
- Management & Monitoring
In this post we are looking at...
Internet of Things
The IoT requires a platform that can provide bi-directional devices communication, securely handle huge volumes data, and provide meaningful insights in realtime.
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 realtime 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 as a 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. When a message is posted to a device AWS will ensure the message is delivered, if the device is offline it will be delivered once the device reconnects.
Event Hubs is another 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 performance is measured in throughput units (TU) where each TU allows 1 MB/S ingress up to 20 TUs, although this can be raised via a support ticket. Pricing is based on the number of ingress events (per million) plus a fee for each throughput unit per hour.
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 visualisations, 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.
Google Cloud Platform
As messages arrive, Dataflow can be used to process the incoming stream such as moving data to storage and performing realtime stream analysis. Data may also be streamed to Big Query, Google's data warehousing solution via the Big Query Streaming API. It is also easy to execute custom logic over individual messages as they arrive via Google Cloud Functions.
Firebase was acquired by Google in 2014 and is offered as a standalone product but it also integrates nicely with Google cloud services and combined billing is available. The service is available in a free tier, a predictable monthly priced option, or a pay-as-you-go option (price varies according to the storage and services used).
Like Microsoft, Google have their own Android based IoT operating system known as Brillo. Brillo comes with built-in support for Weave, a new communication platform designed specifically to allow IoT devices and controllers to interact. Since most IoT devices are controlled by a phone, tablet or similar device, Weave provides a standard approach that enables discovery and interoperability across phone, IoT devices and cloud. Google are hoping that Weave becomes the standard for all IoT communications that ultimately results in smarter IoT solutions.
It's interesting to see how each provider is tackling the IoT problem space. All three can ingest and process device telemetry at scale and consume cloud services where additional processing is required. They also provide device management, monitoring and reliable two way messaging. AWS and Azure have a more coherent message with their products clearly integrated into their respective platforms, whereas Google Firebase feels like a distinctly separate product. Working out the best platform for price is never straight forward and you should be wary of comparing headline figures alone since the definition of a message for billing purposes varies between platforms. Also be sure to factor in the restrictions and limitations that come with each platform.
Next up we will be looking at Mobile Services.