Review design trade-offs for IoT solutions hosted on AWS.
- [Instructor] So an interesting type of big data pipeline that I've been working with lately on AWS warrants consideration here, too, and that's IoT. So about a year ago, Amazon introduced a set of services for IoT management on their ecosystem, and I was fortunate to work with a company and build a solution out to production. Got a lot of great experience. And it represents, I think, the next level of big data pipelines and also an implementation of serverless services that is quite sophisticated and is pointing to future directions, not only for Amazon services, but for all the cloud vendors.
I want to share the architecture here and talk about considerations around availability, scalability, and cost. So you can see that at the bottom, we start with a phone that has an app on it, and there's some sort of notification. Now, you can see that this is a partial architecture because we're really just getting a notification from an Amazon SNS topic, or simple notification service topic. In point of fact, we would have to combine multiple architectures in order to show what we actually built out for our scenario.
And really interestingly, it combines all of the architectures that I've shown, so a website out in the front for customers to manipulate their IoT devices, a big data processing pipeline to work with the messages and to get business understanding, and communication with the device. It combines all three, so this is a subset. We then move from the SNS topic to a set of Lambda functions. We then communicate with our IoT device using a secure authentication that's based on certificates that Amazon allows you to provision specifically for IoT devices.
So then the device will use the protocol of MQTT, which is becoming a standard in IoT, and will be able to send messages in a secure fashion from the device, usually the device status, device updates, device information, to a specialized broker, which is a type of serverless pub sub, and that's the Amazon IoT service shown in the upper left. Then, the device messages will be further distributed throughout the Amazon ecosystem based on specialty security policies.
It's interesting to see how Amazon built out the whole IoT ecosystem. They replicated some of the ideas that they have in the core services, such as IM users, those become IoT things or devices, IM policies, those become IoT policies, and certificates, those become thing certificates. They're specific to the use case and all the implementations are serverless. So continuing on, after the thing policy evaluates the message at the level of a topic, and that's just an implementation detail for IoT, you can think of it almost like a table in some ways.
Then, there is integration that's associated into the IoT service that allows you to pass information based on criteria on to other services. That's at the level of the IoT Rule. Interestingly, what Amazon has done, is they have put a sequel layer on top of an underlying serverless database. What you can then do, is you can pull the messages based on your sequel-like query and send them along to other places for processing in the Amazon ecosystem.
In this case, we send messages that match to yet another serverless service, that's DynamoDB for logging. Alternatively, we can send device information to CloudWatch because we have integration with IoT rules for CloudWatch as well, and then that can result in Lux telemetry and CloudWatch Alarm notifications. It's a really beautiful set of integrations, nearly all serverless into mostly existing serverless products. I think not only it's interesting in terms of its design for IoT, but as I said in the introduction, for the direction of cloud services.
It's clear to me that serverless services represent the future of cloud services and they have profound implications around availability, scalability, and total cost of ownership. I think it's critical to understand serverless patterns and apply them appropriately so you can make best use of Amazon services for your particular business needs.
This course is also an exam preparation resource, as it covers topics that map to the AWS Certified Solutions Architect – Associate exam.
- AWS design concepts
- Serverless services
- Server-based services
- Code tools for implementation
- Design trade-offs for AWS applications