Hello, we're going to talk next about using cloud systems for IoT development. We'll look specifically at some of the key functions provided for IoT applications and connected devices from cloud services, and we'll look at some of the differentiators for considering cloud IoT implementations. What kind of things would we be looking for, from a cloud vendor, if we were trying to put together an IoT system prototype or some other application? There's a number of things that are provided, usually tools for inventory management, SDKs for different devices. Security is a big element of the tool sets for IoT, to make sure that devices are authorized to talk to these systems. Some application protocol for messaging like MQTT or WebSockets, storage, dashboards to show application usage. We might include some machine learning or AI tools, big data analysis, ways to scale the system, ways to integrate other systems in. Importantly, for embedded devices, over the air updates are a big part of these systems. Digital twinning is an interesting part of IoT systems. There's two definitions for digital twins. One really is more of simulating physical system. Here, where we talk about digital twins, we're talking about being able to talk to a digital version of a device that may not actually be connected to the system, so we can maintain conductivity even if the communication with that device drops out. Whether it's tools for test and development or communications of different types, all of these things are potentially elements that we can get from a cloud service vendor, to help us pull our systems together. When we start looking at the choices that we have, there's certainly the cloud service vendors like AWS, Azure, Google Cloud's Services, IBM, et cetera. There's also a lot of third-party vendors that are providing their own cloud implementations. We could look at open source alternatives to different cloud approaches, and of course, you can always do custom development of all or part of your system. Again, one of the most important parts of the system is over-the-air updates, being able to push firmware and software patches out to devices to make security updates or change configuration files, run diagnostics, reset devices. It's a key element of any serious IoT network application and it's going to be talking for the cloud. AWS provides an element called device jobs that do OTA updates, but there are also third party tools. Mender, for instance, has a really nice OTA tool that's out there for doing updates of embedded Linux IoT devices, which is one of the most common ways to set up our devices. Again, you might take a look at what your different alternatives are for the OTA update portion of your application. Dashboards, very common to try to pull something together that shows a picture of the health of a IoT network. If you're a vendor and you're providing thousands or potentially millions of devices, and you're responsible for their uptime or their communication, you might need some kind of a dashboard to be able to look quickly at the state of your system and respond to any issues that you run into. So essentially, you're using these things for health monitoring. Again, I mentioned digital twinning and it's oftentimes used to create a simulation of a device before you actually go to build it. For instance, maybe making a digital twin of a spacecraft before it's actually created and launched. Here, again, we're really talking about digital twining in terms of buffering communications and state for devices that might lose connection from time to time. In AWS, this is referred to as a device shadow. We can, for instance, communicate to the shadow when it's time to make updates, and then the shadow can talk to the device, when the device is actually connected. This is a really great service to help disconnect dependency on continuous network connection for devices. Another common element these days in cloud systems, when we're putting together IoT networks, is a serverless process. This is essentially the ability to execute small pieces of code in different parts of the flow of data through a system, without provisioning a virtual machine. In AWS, the tool is called Lambda. It corresponds to Google Cloud functions or as your functions, but basically, I can write some Python or some Node.js, and if a message comes in from my IoT device to my lambda serverless connection, I can look at that incoming message and I can immediately do some quick processing, and send it to another part of my AWS infrastructure. It becomes a really nice way to quickly put some custom programming in place, to handle dealing with message transactions without having to go through the business of developing, scaling, and provisioning virtual machines. Other IoT cloud features, again, we've talked about some of these very common to look at different protocols for connections to handle, keeping track of inventories of devices, finding out whether they're online, whether they're available. The security side of it can't be discounted. One of the biggest elements of any of the major cloud vendors is the ability to authenticate, authorize, and account for devices that are connected to the networks, and then also to secure it, encrypt communications from those devices. We're used to thinking maybe about the cloud systems as providing for big data type analysis and machine learning tools. We may not be quite as used to thinking about using those things for edged devices that are part of an IoT network, but in fact, that's very common to use those devices as part of an overall system, where we're doing this advanced analysis of data that they're providing. These are all things that come up with working with the cloud system and trying to provide for these elements. When you're looking at your own application or your own prototype of a systems, you'll have to think about what you're looking for from all these different features, and consider whether or not the vendor or the tool sets that you're using provide for all these elements. This is also a good way to consider starting to put together an architectural design for your system. By looking at this list, you can think about the different things that you have to consider when you're putting an IoT-based system together. Let's move on.